
Intento averiguar dónde está el error, ya he pasado dos horas buscándolo en Google :(
Creé una matriz (ArrayTestPrime) con elementos dentro de ella: variable, matriz y 4 números. Lo declaré sobre todo "Subs" por lo que debe verse en todo el módulo.
Solo quiero cambiar el valor del elemento (0) en la matriz (ArrayTestPrime) en el primer procedimiento, imprimirlo. Luego llame al Procedimiento_2, imprímalo, luego realice el bucle en la fila 1 en las hojas (1) y cámbielo nuevamente.
Depurar. la impresión me muestra esto:
First_Procedure =
At the beginning of Second_Procedure =
Variable must be equal = 17
At the end of Second_Procedure =
Pero los verdaderos valores deben ser:
First_Procedure = 100
At the beginning of Second_Procedure = 100
Variable must be equal = 17
At the end of Second_Procedure = 17
Mi código que me asalta el cerebro:
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, ayúdame! ¡Agradeceré cualquier tipo de ayuda!
Respuesta1
Tienes dos problemas con tus asignaciones de variables...
1) Tienes tu pedido volteado en este fragmento 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 = ""
Debería 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) Olvidó establecer el 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