none
Percorrer Coluna, comparar valores RRS feed

  • Pergunta

  • Olá Pessoal,

    Estou começando a mexer com o VBA e estou com um monte de duvidas,

    preciso percorrer uma coluna até seu ultimo valor e comparar com um valor formatado,

    estou tentando percorrer da sequinte maneira

    Sub VerificaColuna()

    Dim coluna As Long
    Dim linha As Long
    Dim valorCelula

    For coluna = 1 To 1
        For linha = 1 To linha <> 10
            valorCelula = FormatNumber(Cells(coluna, linha).Value, 2)
                If valorCelula <> Cells(coluna, linha).Select Then
            Cells(coluna, linha).Value = valorCelula
                End If
           
        Next
    Next
           
    End Sub

    Porem nada acontece a planilha...

    Alguem poe me dar uma Luz?

    quarta-feira, 22 de fevereiro de 2012 12:53

Respostas

  • Alex,

    Temos outra forma de fazer, que seria com o while.

    Gasta menos recurso da maquina, pois não faz 2 for

    Sub SubstituiValor()
    
    coluna = 1
    linha = 1
    While Cells(linha, coluna).Value <> ""
        valorCelula = FormatNumber(Cells(linha, coluna).Value, 2)
        If valorCelula <> Cells(linha, coluna).Value Then
            Cells(linha, coluna).Value = valorCelula
        End If
        linha = linha + 1
    Wend
    End Sub

    Alex, também não está acontecendo pois você está comparando a célula com ela mesma.

    Você tem que aportar a celula formatada com outras vatiáveis.

    por ex:

    Sub SubstituiValor()
    
    coluna = 1
    linha = 1
    While Cells(linha, coluna).Value <> ""
        valorCelula = FormatNumber(Cells(1, 2).Value, 2)
        If valorCelula <> Cells(linha, coluna).Value Then
            Cells(linha, coluna).Value = valorCelula
        End If
        linha = linha + 1
    Wend
    End Sub

    Veja que eu coloquei: cells(1,2).value -> ele está buscando a celula B1 para comparação.

    Acho que com isso você conseguirá resolver o seu problema.

    quinta-feira, 23 de fevereiro de 2012 13:53

Todas as Respostas

  • Opa, inverti as linhas e colunas...

    Sub VerificaColuna()

    Dim coluna
    Dim linha
    Dim valorCelula

    For coluna = 1 To 1
        For linha = 1 To linha <> ""
            valorCelula = FormatNumber(Cells(linha, coluna).Value, 2)
            If valorCelula <> Cells(linha, coluna).Select Then
                    Cells(linha, coluna).Value = valorCelula
            End If
        Next
    Next
           
    End Sub

    quarta-feira, 22 de fevereiro de 2012 12:58
  • Alex,

    Temos outra forma de fazer, que seria com o while.

    Gasta menos recurso da maquina, pois não faz 2 for

    Sub SubstituiValor()
    
    coluna = 1
    linha = 1
    While Cells(linha, coluna).Value <> ""
        valorCelula = FormatNumber(Cells(linha, coluna).Value, 2)
        If valorCelula <> Cells(linha, coluna).Value Then
            Cells(linha, coluna).Value = valorCelula
        End If
        linha = linha + 1
    Wend
    End Sub

    Alex, também não está acontecendo pois você está comparando a célula com ela mesma.

    Você tem que aportar a celula formatada com outras vatiáveis.

    por ex:

    Sub SubstituiValor()
    
    coluna = 1
    linha = 1
    While Cells(linha, coluna).Value <> ""
        valorCelula = FormatNumber(Cells(1, 2).Value, 2)
        If valorCelula <> Cells(linha, coluna).Value Then
            Cells(linha, coluna).Value = valorCelula
        End If
        linha = linha + 1
    Wend
    End Sub

    Veja que eu coloquei: cells(1,2).value -> ele está buscando a celula B1 para comparação.

    Acho que com isso você conseguirá resolver o seu problema.

    quinta-feira, 23 de fevereiro de 2012 13:53