Я пытаюсь выяснить, где ошибка, уже потратил два часа, чтобы погуглить это :(

Я создал массив (ArrayTestPrime) с элементами внутри него: переменная, массив и 4 числа. Я объявил это прежде всего "Subs", поэтому это должно быть видно во всем модуле.

Я просто хочу изменить значение элемента (0) в массиве (ArrayTestPrime) в первой процедуре, распечатать его. Затем вызовите Процедуру_2, напечатайте ее, затем пройдите цикл в строке 1 на листах (1) и измените его снова.

Debug. печать показывает мне это:

 First_Procedure =  

 At the beginning of Second_Procedure =  

 Variable must be equal =  17

 At the end of Second_Procedure =  

Но истинные ценности должны быть:

 First_Procedure =  100

 At the beginning of Second_Procedure =  100

 Variable must be equal =  17

 At the end of Second_Procedure =  17

Мой код, который штурмует мой мозг:

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

Пожалуйста, помогите мне! Я буду признателен за любую помощь!

1 ответ1

0

У вас две проблемы с назначением переменных ...

1) Ваш код перевернут в этом фрагменте кода:

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

Так должно быть:

   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) Вы забыли установить значение для 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .