
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