Página 1 de 1
macro vba
Enviado: 28 Mar 2019 às 17:35
por cas2303
Boa tarde,
Estou começando a programar em VBA, e no momento estou obtendo erro 1004, no código abaixo, gostaria de saber como atribuir o alor da celula escolhida a minha variável de matriz, desde já agradeço a ajuda, obrigado.

:
"Public Sub CommandButton1_Click()
Dim s1(1 To 15) As String
Dim s2(1 To 15) As String
Sheets("D_LOTFAC").Select
linha1 = 52
linha2 = linha - 50
For a = 1 To 15
s1(a) = CStr(Cells(linha2, 1))
MsgBox s1(a) + " Ola Mundo " + CStr(linha2)
Next a
End Sub
Re: macro vba
Enviado: 29 Mar 2019 às 07:10
por Jimmy
Olá,
Quando dá o erro, se você clicar em DEPURAR, vai para o modo que te permite ver o conteúdo das variáveis, e uma série de outras possibilidades. Serve para ajudar a encontrar erros, verificar se a lógica está correta, etc.
Nessa hora, a linha em execução no momento, e no seu caso, a linha de deu pau, fica em amarelo. Se colocar o cursor (sem clicar) sobre o nome da variável, vai aparecer seu valor.
Clicando na barra de ferramentas, no ícone à direita da maozinha, você consegue executar a macro passo a passo. Procure no youtube vídeos que ensinem a usar o depurador, porque durante o desenvolvimento, ele é um bom amigo.
No caso de seu erro, troque a linha
linha2 = linha - 50
por
linha2 = linha1 - 50
Jimmy San Juan
macro vba
Enviado: 29 Mar 2019 às 18:58
por cas2303
Desculpe, mas é que estou começando agora em VBA, gostaria de saber porque o "range" esta errado.
Re: macro vba
Enviado: 30 Mar 2019 às 06:31
por Jimmy
Range é um conjunto de células, por exemplo C1, C2 e C3. Em VB, assim como no Excel, essa range (ou faixa) se escreve C1:C3, onde os dois pontos fazem o papel da palavra "até".
Na sua macro não há range, apenas células individuais.
Você colocou o valor 52 na variável linha 1, depois disse que linha2 deveria conter o resultado da conta: o valor que está na variável linha menos o valor 50. Acontece que na variável linha não há nada. Há 52 na linha1! O números 1 no final do nome faz com que a variável linha seja diferente da linha2. São variáveis completamente distintas, assim como são distintas as variáveis abacate e tomada. Então não tem sentido tirar 50 do valor de uma variável que não tem nada. Como o Excel considera como zero o valor de variáveis não usadas ainda, o resultado de zero menos 50 tá -50. Se tivesse sido feito linha2 = linha1 - 50, linha2 teria 52-50 que resulta em 2.
Depois você usa a variável linha2 para indicar a linha a que se refere a célula em cells(linha2,1). O erro ocorreu porque em linha2 há o valor -50 (linha negativa), e não existe essa linha no Excel. Quando mudou linha para linha2, nessa variável passou a ter o valor de 2, que reflete uma linha que existe no Excel, e o erro cessou.
Fora erros de sintaxe ou de valores, a macro pode também conter erros de lógica, que muitas vezes não causam erros na execução, mas não executam o que era esperado. QUanto a isso não sei dizer se há porque precisaria saber qual era a finalidade da macro.
Assista vídeos no youtube sobre introdução à programação, pois isso te dará um impulso inicial muito bom.
Boa sorte.
Jimmy San Juan