Propósito

✔ Programação GLOBAL® - Quaisquer soluções e/ou desenvolvimento de aplicações pessoais, ou da empresa, que não constem neste Blog devem ser tratados como consultoria freelance. Queiram contatar-nos: brazilsalesforceeffectiveness@gmail.com | ESTE BLOG NÃO SE RESPONSABILIZA POR QUAISQUER DANOS PROVENIENTES DO USO DOS CÓDIGOS AQUI POSTADOS EM APLICAÇÕES PESSOAIS OU DE TERCEIROS.

VBA Excel - Filtrando Tabelas ou Listas - Filtering Tables or Lists


Calendário Compacto para 2014


O código a seguir filtra uma tabela ou lista. Para testá-lo usamos uma tabela semelhante à abaixo.


Basta digitar os dados e, em seguida, usar o procedimento descrito.

Sub FilterListOrTableData()
    Dim ACell As Range
    Dim ActiveCellInTable As Boolean
    Dim FilterCriteria As String

    'Check to see if the worksheet is protected.
    If ActiveSheet.ProtectContents = True Then
        MsgBox "This macro will not work when the worksheet is write-protected.", _
               vbOKOnly, "Filter example"
        Exit Sub
    End If

    'Set a reference to the ActiveCell named ACell. You can always use
    'ACell now to point to this cell, no matter where you are in the workbook.
    Set ACell = ActiveCell

    'Test to see if ACell is in a table or list. Note that by using ACell.ListObject, you
    'don't need to know the name of the table to work with it.
    On Error Resume Next
    ActiveCellInTable = (ACell.ListObject.Name <> "")
    On Error GoTo 0

    'If the cell is in a list or table, run the code.
    If ActiveCellInTable = True Then
        'Show all data in the table or list.
        On Error Resume Next
        ActiveSheet.ShowAllData
        On Error GoTo 0

        'This example filters on the first column in the List/Table
        '(change the field if needed). In this case the Table starts
        'in A so Field:=1 is column A, field 2 = column B, ......
        'Use "<>" & filtercriteria if you want to exclude the criteria from the filter.
        FilterCriteria = InputBox("What text do you want to filter on?", _
                                  "Type in the filter item.")
        ACell.ListObject.Range.AutoFilter _
                Field:=1, _
                Criteria1:="=" & FilterCriteria
    Else
        MsgBox "Select a cell in your list or table before you run the macro.", _
               vbOKOnly, "Filter example"
    End If
End Sub




Tags: Excel, VBA, cell, activecell, table, list, Copying, copy, Table, List, Worksheet, Workbook, filter




Inline image 1

VBA Excel - Copiando uma tabela ou lista para uma nova planilha


Calendário Compacto para 2014


O procedimento a seguir copia somente as células visíveis numa tabela ou lista para uma nova planilha. Este código usa o objeto ListObject para representar a tabela ou lista. Um detalhe adicional deste procedimento é o de que o número de ocorrências são não-contíguas.

O Excel tem um limite de 8.192 áreas não contíguas que pode ser copiada para qualquer tabela. O código pergunta se deseja criar uma tabela com os novos dados sobre na nova planilha. Se cancelar esta caixa de diálogo, será perguntado se deseja copiar apenas os formatos de modo que o intervalo pareça profissional.

Sub CopyListOrTable2NewWorksheet()
    Dim New_Ws As Worksheet
    Dim ACell As Range
    Dim CCount As Long
    Dim ActiveCellInTable As Boolean
    Dim CopyFormats As Variant
    Dim sheetName As String

    'Verifique se a planilha ou pasta de trabalho está protegida.
    If ActiveWorkbook.ProtectStructure = True Or ActiveSheet.ProtectContents = True Then
        MsgBox "Esta macro não funcionará quando a pasta de trabalho ou planilha estiver protegida contra gravação."
        Exit Sub
    End If

    'Definir uma referência ao ActiveCell. Você sempre pode usar a ACell
    'ponto para esta célula, não importa onde você está na pasta de trabalho.
    Set ACell = ActiveCell

'Teste para ver se ACell está em uma tabela ou lista. Note-se que, usando ACell.ListObject, você
     'Não é necessário saber o nome da tabela para trabalhar com ele.
    On Error Resume Next
    Let ActiveCellInTable = (ACell.ListObject.Name <> "")
    On Error GoTo 0

    'Se a célula está em uma lista ou tabela executar o código.
    If ActiveCellInTable = True Then
        With Application
            Let .ScreenUpdating = False
            Let .EnableEvents = False
        End With

        'Testar se existem mais de 8192 áreas separadas. Excel suporta apenas
        'um máximo de 8.192 áreas não contíguas através de macros VBA e manual.
        On Error Resume Next
        With ACell.ListObject.ListColumns(1).Range
            Let CCount = .SpecialCells(xlCellTypeVisible).Areas(1).Cells.Count
        End With
        On Error GoTo 0

        If CCount = 0 Then
            MsgBox "Há mais de 8192 áreas, de modo que não é possível
copiar os dados visíveis para uma nova planilha. Dica: Classifique os seus dados antes de aplicar o filtro e tente esta macro novamente.", _
                   vbOKOnly, "Copy to new worksheet"
        Else
            'Copy the visible cells.
            ACell.ListObject.Range.Copy

            'Add a new Worksheet.
            Set New_Ws = Worksheets.Add(after:=Sheets(ActiveSheet.Index))

            'Prompt the user for the worksheet name.
            Let sheetName = InputBox("Qual é o nome da nova worksheet?", _
                                 "Name the New Sheet")

            On Error Resume Next
            New_Ws.Name = sheetName
            If Err.Number > 0 Then
                MsgBox "Altere o nome da Aba : " & New_Ws.Name & _
                     " manualmente após a macro está pronta. O nome da sheet" & _
                     " digitada já existe ou você usou caracteres" & _
                     " que não são permitidos."
                Err.Clear
            End If
            On Error GoTo 0

            'Paste the data into the new worksheet.
            With New_Ws.Range("A1")
                .PasteSpecial xlPasteColumnWidths
                .PasteSpecial xlPasteValuesAndNumberFormats
                .Select
                Let Application.CutCopyMode = False
            End With

            'Call the Create List or Table dialog.
            Let Application.ScreenUpdating = True
            Application.CommandBars.FindControl(ID:=7193).Execute
            New_Ws.Range("A1").Select

            Let ActiveCellInTable = False
            On Error Resume Next
            Let ActiveCellInTable = (New_Ws.Range("A1").ListObject.Name <> "")
            On Error GoTo 0

            Let Application.ScreenUpdating = False

            'Se você não criar uma tabela, você tem a opção de copiar os formatos.
            If ActiveCellInTable = False Then
                Application.GoTo ACell
                Let CopyFormats = MsgBox("Você também deseja copiar os formatos?", _
                                     vbOKCancel + vbExclamation, "Copy to new worksheet")
                If CopyFormats = vbOK Then
                    ACell.ListObject.Range.Copy
                    With New_Ws.Range("A1")
                        .PasteSpecial xlPasteFormats
                        Let Application.CutCopyMode = False
                    End With
                End If
            End If
        End If

        'Select the new worksheet if it is not active.
        Application.GoTo New_Ws.Range("A1")

        With Application
            Let .ScreenUpdating = True
            Let .EnableEvents = True
        End With

    Else
        MsgBox "Selecione uma célula na sua lista ou tabela antes de executar a macro.", _
               vbOKOnly, "Copy to new worksheet"
    End If
End Sub



Tags: Excel, VBA, cell, activecell, table, list, Copying, copy, Table, List, Worksheet, Workbook, ListObject




Inline image 1

VBA Excel - Verificando se a célula ativa está em uma tabela ou lista


Muitas vezes antes de executar outros comandos e funções, queremos garantir que a célula ativa esteja em uma tabela ou lista. 

Os seguintes testes de código para essa condição exibe uma caixa de mensagem com os resultados.


Sub ActiveCellIsInTable()
    Dim ActiveCellInTable As Boolean
    Dim ACell As Range

    'Set a reference to the ActiveCell named ACell. You can always use

    'ACell now to point to this cell, no matter where you are in the workbook.
    Set ACell = ActiveCell

    'Test whether ACell is in a table.
    On Error Resume Next
    Let ActiveCellInTable = (ACell.ListObject.Name <> "")
    On Error GoTo 0

    If ActiveCellInTable = True Then
        MsgBox "Esta célula (ActiveCell) é parte da tabela."
    Else
        MsgBox "Esta célula (ActiveCell) não é parte da tabela."
    End If
End Sub

Se a célula ativa estiver numa tabela, podemos usar a seguinte declaração para apontar para a tabela inteira.

ACell.ListObject.Range

Você pode usar a seguinte instrução para fazer referência a uma tabela sem cabeçalho.

ACell.ListObject.DataBodyRange


Tags: Excel, VBA, cell, activecell, table, list




Inline image 1

VBA Excel Série - 03 - VBA ou MACROS

Dando atenção a segunda limitação...
Para resolver a segunda limitação das macros baseadas em funções - pois haviam muitos comandos para se gerenciar eficazmente - o VBA foi implementado para trabalhar com um modelo de objetos. O termo modelo de objetos pode soar bastante assustador, mas é realmente apenas uma maneira lógica de organizar todos os comandos que podemos realizar num aplicativo. 

Em um modelo de objetos, cada parte diferente do aplicativo em uma planilha, ou num intervalo ou um ponto em um gráfico - torna-se um objeto. E cada objeto tem sua própria lista de funções. Podemos aprender mais tarde sobre o que um objeto é e como os objetos se relacionam com as funções, mas o ponto é que o modelo de objetos organiza todos os milhões de comandos possíveis em torno de como cada comando é usado, por exemplo, copiar e colar um intervalo de células, mas você não copia e cola pontos em um gráfico.

Devido ao modelo de objetos, o VBA não precisa de nenhum acesso interno especial ao Excel. Em vez disso, o Excel expõe as suas capacidades para o mundo exterior por meio do modelo de objetos e o VBA conversa com este modelo.




Isto significa que uma macro Excel VBA pode controlar não apenas o Excel, mas também qualquer aplicativo que forneça um modelo de objetos. Todos os aplicativos do Microsoft Office, e vários outros aplicativos da Microsoft e não-Microsoft, oferecem modelos de objetos apropriados.



O VBA que vem com o Excel não é a única linguagem que pode se comunicar com o modelo de objeto. Qualquer linguagem que suporte automação pode controlar o Excel. Você pode controlar o Excel não só com o VBA hospedado pelo Excel, mas também com o VBA hospedado pelo Word, com o Microsoft Visual Basic versão 6, ou mesmo com uma linguagem como C++. Com uma camada de tradução simples, você também pode falar com o modelo de objeto do Excel da Microsoft. NET aplicações escritas em C# ou Microsoft Visual Basic. NET.



Tags: Excel, VBA, MS Office, macro, object model, modelo de objetos, C++, C#, DOT NET, 




Inline image 1

02 - SUA AUDIÊNCIA SE IMPORTA - ROBÔS – São legais


Aprender a como expressar-se em público é uma arte em constante desenvolvimento. Dicas valiosas devem ser avaliadas, consideradas e caso mostrem-se proveitosas, podem ser aplicadas quando tivermos a oportunidade.

ROBÔS – São legais

Acesse a apresentação completa aqui.






Outras apresentações online com temas similares:

13 dicas para se falar em público - Mais de 700 visualizações


Inline image 2

10 Dicas para se Falar em Público - Mais de 50.000 visualizações


Inline image 3


Inline image 4




Tags: PPT, PPTx, slide, slideshare, apresentação, falar, público, audiência, assistência, ROBÔS, 


Inline image 1

diHITT - Notícias