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. :cry: :cry: :cry: :?: :?: :?: :

"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