Öffentliche Variable mit Call-Funktion

Öffentliche Variable mit Call-Funktion

Ich versuche herauszufinden, wo der Fehler liegt, habe bereits zwei Stunden damit verbracht, danach zu googeln :(

Ich habe ein Array (ArrayTestPrime) mit den darin enthaltenen Elementen erstellt: Variable, Array und 4 Zahlen. Ich habe es vor allem als „Subs“ deklariert, damit es im gesamten Modul sichtbar ist.

Ich möchte nur den Wert des Elements (0) im Array (ArrayTestPrime) in der ersten Prozedur ändern und ausdrucken. Rufen Sie dann Prozedur_2 auf, drucken Sie es aus, durchlaufen Sie dann die Schleife in Zeile 1 bei Blättern (1) und ändern Sie es erneut.

Debug.print zeigt mir Folgendes:

 First_Procedure =  

 At the beginning of Second_Procedure =  

 Variable must be equal =  17

 At the end of Second_Procedure =  

Aber wahre Werte müssen sein:

 First_Procedure =  100

 At the beginning of Second_Procedure =  100

 Variable must be equal =  17

 At the end of Second_Procedure =  17

Mein Code, der mir den Kopf verdreht:

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

Bitte helft mir! Ich bin für jede Art von Hilfe dankbar!

Antwort1

Sie haben zwei Probleme mit Ihren Variablenzuweisungen ...

1) Sie haben Ihre Bestellung in diesem Code-Schnipsel umgedreht:

  Sub First_Procedure()
  Article = "ARTICLE"
→ ArrayTestPrime = Array(ArticleCol, ArrayInArray(), 1, 2, 2, 1)  'ArticleCol = "" 
→ ArticleCol = 100
  Debug.Print "First_Procedure =  " & ArrayTestPrime(0)  'ArticleCol = ""

Es sollte sein:

   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) Sie haben vergessen, den Wert für ArrayTestPrime(0) festzulegen:

   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

verwandte Informationen