Usuário com melhor resposta
Macro no excel

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 SnippetSub LoopColunas()
For i = 2 To 8
If Cells(2, i) <> 0 Then Mensagem = Mensagem & "O " & Cells(1, i) & " variou " & Cells(2, i) & vbLf
Next iMsgBox Mensagem
End Sub
[ ]s
segunda-feira, 31 de março de 2008 22:04 -
Code Snippet
Sub alteração()
Dim x As IntegerFor 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 Subterça-feira, 1 de abril de 2008 19:15
Todas as Respostas
-
Tenta assim:
Code SnippetSub alteração()
Dim x As Integer
Dim y As Integerx = 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 Subsegunda-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 SnippetOption 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 SubAjude 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çossegunda-feira, 31 de março de 2008 21:40 -
Lellison,
Tenta este procedimento aqui:
Code SnippetSub LoopColunas()
For i = 2 To 8
If Cells(2, i) <> 0 Then Mensagem = Mensagem & "O " & Cells(1, i) & " variou " & Cells(2, i) & vbLf
Next iMsgBox Mensagem
End Sub
[ ]s
segunda-feira, 31 de março de 2008 22:04 -
Code Snippet
Sub alteração()
Dim x As IntegerFor 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 Subterça-feira, 1 de abril de 2008 19:15