
Tento descobrir onde está o erro, já gastei duas horas pesquisando no Google :(
Criei um array (ArrayTestPrime) com elementos dentro dele: variável, array e 4 números. Eu declarei acima de tudo "Subs" então deve ser visto em todo o módulo.
Eu só quero alterar o valor do elemento (0) no array (ArrayTestPrime) no primeiro procedimento, imprima-o. Em seguida, chame o Procedimento_2, imprima-o, passe pelo loop na linha 1 em folhas (1) e altere-o novamente.
Depurar. print me mostra isso:
First_Procedure =
At the beginning of Second_Procedure =
Variable must be equal = 17
At the end of Second_Procedure =
Mas os valores verdadeiros devem ser:
First_Procedure = 100
At the beginning of Second_Procedure = 100
Variable must be equal = 17
At the end of Second_Procedure = 17
Meu código que invade meu cérebro:
Public Article As String
Public ArticleCol As Variant
Public ArrayTestPrime As Variant
Public ArrayInArray() As Variant
Sub First_Procedure()
Article = "ARTICLE"
ArrayTestPrime = Array(ArticleCol, ArrayInArray(), 1, 2, 2, 1)
ArticleCol = 100
Debug.Print "First_Procedure = " & ArrayTestPrime(0)
Call Second_Procedure
End Sub
Sub Second_Procedure()
Dim Sub_J As Integer
Debug.Print "At the beginning of Second_Procedure = " & ArrayTestPrime(0)
For Sub_J = 1 To 27
If Cells(1, Sub_J) = Article Then ArticleCol = Sub_J
Next Sub_J
Debug.Print "Variable must be equal = " & ArticleCol
Debug.Print "At the end of Second_Procedure = " & ArrayTestPrime(0)
End Sub
Por favor me ajude! Agradecerei qualquer tipo de ajuda!
Responder1
Você tem dois problemas com suas atribuições de variáveis...
1) Você inverteu seu pedido neste trecho de código:
Sub First_Procedure()
Article = "ARTICLE"
→ ArrayTestPrime = Array(ArticleCol, ArrayInArray(), 1, 2, 2, 1) 'ArticleCol = ""
→ ArticleCol = 100
Debug.Print "First_Procedure = " & ArrayTestPrime(0) 'ArticleCol = ""
Deveria ser:
Sub First_Procedure()
Article = "ARTICLE"
→ ArticleCol = 100
→ ArrayTestPrime = Array(ArticleCol, ArrayInArray(), 1, 2, 2, 1) 'ArticleCol = 100
Debug.Print "First_Procedure = " & ArrayTestPrime(0) 'ArticleCol = 100
2) Você esqueceu de definir o valor para ArrayTestPrime(0):
For Sub_J = 1 To 27
If Cells(1, Sub_J) = Article Then ArticleCol = Sub_J
Next Sub_J
→ ArrayTestPrime(0) = ArticleCol 'We must set our new value for ArrayTestPrime(0)
Debug.Print "Variable must be equal = " & ArticleCol
Debug.Print "At the end of Second_Procedure = " & ArrayTestPrime(0)
End Sub