Двойной цикл For в VBA, разные подписки - PullRequest
0 голосов
/ 11 июля 2019

У меня проблема с вложенным циклом в VBA.Алгоритм, который мне нужно выполнить, выглядит так:

Option base 1
arr(4,2)
i = 1 To 4
j = 2 To 100

i = 1, j = 2 If Cells(2, 1).Value = arr(1,1) Then
                Cells(2,11) = arr(1,2)
i = 1, j = 3 If Cells(3,1).Value = arr(1,1) Then
                Cells(3,11) = arr(1,2)
i = 1, j = 4 If Cells(4,1).Value = arr(1,1) Then
                Cells(4,11).Value = arr(1,2) 
.
.
.

i = 1, j = 100 If Cells(100,1).Value = arr(1,1) Then
                  Cells(100,11).Value = arr(1,2)

And if j reaches 100 then

i = 2, j = 2 If Cells(2,1).Value = arr(2,1) Then
                Cells(2,11).Value = arr(2,2)
i = 2, j = 3 If Cells(3,1).Value = arr(2,1) Then
                Cells(3,11).Value = arr(2,2)
i = 2, j = 4 If Cells(4,1).Value = arr(2,1) Then
                Cells(4,11).Value = arr(2,2)
.
.
.

i = 2, j = 100 If Cells(100,1).Value = arr(2,1) Then
                  Cells(100,1).Value = arr(2,2)

And so on, until i = 4.Я надеюсь, что вы поняли: D Теперь мне нужно выполнить это в VBA - сейчас я понятия не имею, как это сделать, к сожалению, все, что я пытался сделать, это ошибка, поэтому у меня даже нет примера кода для вас; /Я пробовал что-то вроде

For i = 1 To 4
    For j = 1 To 100
      If Cells(j, 1).Value = arr(i, 1) Then
         Cells(j,11).Value = arr(i,2)
      End If
    Next j
Next i

Но, конечно, он показывал "индекс вне диапазона", я тоже пробовал что-то с For Each, но та же проблема ...

Пожалуйста, помогите: D

1 Ответ

1 голос
/ 11 июля 2019

Исходя из вашей попытки выше, вам нужен объект Worksheet для использования .Cells. Смотрите ниже:

For i = 1 To 4
    For j = 1 To 100
        If Sheets("mySheet").Cells(j, 1).Value = arr(i, 1) Then
            Sheets("mySheet").Cells(j, 11).Value = arr(i, 2)
        End If
    Next j
Next i

Если вы все еще сталкиваетесь с subscript out of range, посмотрите на размеры вашего массива, так как вам может потребоваться объявить его, чтобы учесть arr(4,1) и arr(4,2).

Более подробная информация о .Cells собственности здесь:

https://docs.microsoft.com/en-us/office/vba/api/excel.range.cells

...