locked
Macro no excel RRS feed

  • Pergunta

  • Boa tarde,

    Estou precisando de uma ajuda urgente! Comecei a programar a pouco tempo e ainda estou muito perdido!!!
    Meu problema é o seguinte:

    Tenho uma linha de 7 colunas com números. Eles variam de 0 a 10.
    Preciso fazer uma macro que olhe todas as células da linhas e me avise se algum teve variação maior que 0.
    Caso positivo, ele me avisa por um msgbox. Caso negativo ele não faz nada.

    O problema é que cada coluna é um produto diferente. E se, no caso, houve variação maior que 0, o msgbox tem que dizer que houve uma variação X na coluna Y.


    É muito díficil? Alguém poderia dar uma luz?

    Valeu.

    segunda-feira, 31 de março de 2008 21:04

Respostas

  • Lellison,

    Tenta este procedimento aqui:

    Code Snippet

    Sub LoopColunas()

    For i = 2 To 8
    If Cells(2, i) <> 0 Then Mensagem = Mensagem & "O " & Cells(1, i) & " variou " & Cells(2, i) & vbLf
    Next i

    MsgBox Mensagem

    End Sub

     

     

    [ ]s

    segunda-feira, 31 de março de 2008 22:04
  • Code Snippet

    Sub alteração()
    Dim x As Integer

    For x = 2 To 8
    If Cells(2, x).Value <> "" Then
    y = x - 1
    MsgBox "Houve uma alteração no produto " & y & " e a alteração foi de " & Cells(2, x).Value & " ! "
    End If
    Next x
    End Sub

     

     

    tenta esse agora
    terça-feira, 1 de abril de 2008 19:15

Todas as Respostas

  • Tenta assim:

     

     

    Code Snippet

    Sub alteração()
    Dim x As Integer
    Dim y As Integer

    x = 1
    y = 1
    While Cells(x, y).Value <> ""
    While Cells(x, y).Value <> ""
    If Cells(x, y).Value > 0 Then
    MsgBox "Foi encontrado uma alteração na linha " & x & " e na coluna " & y & "!"
    End If
    x = x + 1
    Wend
    y = y + 1
    Wend
    End Sub

     

     

    segunda-feira, 31 de março de 2008 21:19
  • lellisson,

     

    Em anexo, solução para o problema.

     

    onde Plan1 é o nome da planilha com os dados e caso seja outro nome precisa apenas alterar o nome.

     

    Code Snippet

    Option Explicit

     

    Private Sub ValidarDados()

        Dim lngLinha As Long
        Dim intCol  As Integer
        Dim strErr   As String
       
        For lngLinha = 1 To 10000 'numero de linhas da planilha
       
            strErr = ""
           
            For intCol = 1 To 7
                If Plan1.Cells(lngLinha, intCol) > 0 Then
                    strErr = strErr & "Coluna: " & intCol & ", valor encontrado " & Plan1.Cells(lngLinha, intCol) & vbNewLine
                   
                   
    'Exit For 'caso precise apresentar apenas 1 valor, remover o comentário dessa linha
                End If
            Next intCol
           
            If strErr <> "" Then
                MsgBox "Ocorreu uma variação na Linha " & lngLinha & ", com os seguintes valores:" & vbNewLine & strErr, vbCritical
            End If
       
        Next lngLinha


    End Sub

     

     

    Ajude a melhorar o nosso Fórum!
    Não esqueça de marca a mensagem como "útil", caso tenha ajudado.

     

    segunda-feira, 31 de março de 2008 21:20

  • Vou tentar ser mais explícito


      produto 1 produto 2 produto 3 produto 4 produto 5
                         
    variação           -               -                 2             -               -    



    Essa é a tabela. Ela tem 1 linha só, porém várias colunas. São 7 produtos no total.
    Quero que a macro olhe nas linhas, e na que haja um valor, me avise por uma msgbox que "o produto 3 variou 2".

    Os que não variaram não precisa avisar nada....


    Obrigado mesmo.... abraços

    segunda-feira, 31 de março de 2008 21:40
  • Lellison,

    Tenta este procedimento aqui:

    Code Snippet

    Sub LoopColunas()

    For i = 2 To 8
    If Cells(2, i) <> 0 Then Mensagem = Mensagem & "O " & Cells(1, i) & " variou " & Cells(2, i) & vbLf
    Next i

    MsgBox Mensagem

    End Sub

     

     

    [ ]s

    segunda-feira, 31 de março de 2008 22:04
  • Code Snippet

    Sub alteração()
    Dim x As Integer

    For x = 2 To 8
    If Cells(2, x).Value <> "" Then
    y = x - 1
    MsgBox "Houve uma alteração no produto " & y & " e a alteração foi de " & Cells(2, x).Value & " ! "
    End If
    Next x
    End Sub

     

     

    tenta esse agora
    terça-feira, 1 de abril de 2008 19:15