none
Localizar valores e armazenar posicao de cedula RRS feed

  • Pergunta

  • Bom dia galera,

    To precisando localizar e armazenar a posicao das cédulas q contém a palavra RMK na coluna A usando o VBA. Essa palavra vai aparecer 10 vezes e queria guardar em um string a posicao, pra depois usar essas posicoes pra fazer umas condicoes. Estou com uma tabela aqui q eu tenho q pegar uns dados dela, mas pode ser que eu tenha q inserir linhas nela (pra fazer algum comentario), ai usar referencia fixa pra linha na hora do condicional nao vai dar certo, pq toda hora que eu inserir linha, vou precisar mudar o codigo no VBA.

    Alguém pode me ajudar ae?

    Muito obrigado e abracos!

    quinta-feira, 29 de março de 2012 09:31

Respostas

  • Execute a rotina Test abaixo. Ela armazenará em r o valor de linha de cada uma das ocorrências encontradas, e imprimirá na janela de verificação imediata cada um dos valores.

    Private Sub Test()
        Dim r() As Long
        Dim l As Long

        r = RowOf2("RMK", Columns("A"))

        If IsArrayEmpty(r) Then
            MsgBox "Empty array"
        Else
            For l = LBound(r) To UBound(r)
                Debug.Print r(l)
            Next l
        End If
    End Sub

    Private Function RowOf2(sSearch As String, ByVal rngCol As Range) As Long()
        Dim r As Long
        Dim lTemp() As Long
        Dim l As Long
        Dim lTotal As Long
        
        lTotal = Application.WorksheetFunction.CountIf(rngCol, sSearch)
        If lTotal = 0 Then
            Exit Function
        End If
        ReDim lTemp(1 To lTotal)
        
        For l = 1 To lTotal
            r = Application.WorksheetFunction.Match(sSearch, rngCol, 0)
            lTemp(l) = r + (rngCol(1).Row - 1)
            Set rngCol = rngCol.Resize(rngCol.Rows.Count - r).Offset(r)
        Next l
        
        RowOf2 = lTemp
    End Function

    Private Function IsArrayEmpty(v As Variant) As Boolean
        On Error Resume Next
        If LBound(v) <= UBound(v) Then
            IsArrayEmpty = False
        End If
        If Err.Number > 0 Then IsArrayEmpty = True
    End Function

            

    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    • Marcado como Resposta WMS10 segunda-feira, 2 de abril de 2012 08:28
    quinta-feira, 29 de março de 2012 12:46
    Moderador