Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
Por cas2303
#42428
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
Avatar do usuário
Por Jimmy
Avatar
#42438
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
Por cas2303
#42487
Desculpe, mas é que estou começando agora em VBA, gostaria de saber porque o "range" esta errado.
Avatar do usuário
Por Jimmy
Avatar
#42493
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
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord