Variable pública con función de llamada

Variable pública con función de llamada

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

información relacionada