Excel VBA с 3 вложенными циклами - PullRequest
0 голосов
/ 13 июля 2020

Я хочу присвоить нескольким флажкам в моей пользовательской форме заголовок, исходящий из ячейки. Поскольку я не хочу записывать каждую ссылку, я хотел бы использовать al oop. К сожалению, я понятия не имею, как это сделать.

У меня 8 флажков на рабочий день и 23 рабочих дня всего. Именование похоже на WD1_1, WD1_2 ... WD1_8, WD2_1, WD2_2 ... WD2_8.

WD1_1 получить значение из ячейки B2 вкладки «задачи». С этого момента он всегда равен +1.

У меня проблема в том, что я не могу просто l oop до 185, поскольку меняются три вещи: подсчитайте номер задачи и номер ячейки. , когда задача 8 в WD1 достигнута, подсчитайте WD +1 и перезапустите номер задачи с 1 до 8, а также продолжайте подсчитывать ссылку на ячейку.

Я просто получаю это для одного экземпляра, например ссылку на ячейку , но не все три вместе.

Это то, что мне нужно oop с помощью Задач на WD, но я не могу понять, как считать Рабочие дни, а также номер ячейки:

 For x = 1 To 23
 For i = 1 To 8
 For y = 2 To 185
        
      If Controls("WD" & x & "_" & i).Caption = "" Then
        Controls("WD" & x & "_" & i).Visible = False
        Else
        Controls("WD" & x & "_" & i).Visible = True
      End If
    
      If Sheets("Tasks").Range("I" & y) = 1 Then
        Controls("WD" & x & "_" & i).Value = True
        Else
        Controls("WD" & x & "_" & i).Value = False
      End If

 Next y, i, x

Заранее благодарим за любую помощь!

1 Ответ

0 голосов
/ 15 июля 2020

Нашел ответ. Моя ошибка заключалась в go через третье oop. Удаление третьего l oop, а затем использование линейной функции для go через каждую строку - правильный способ сделать это:

 Dim x As Integer
Dim i As Integer

 For x = 1 To 23
 For i = 1 To 8

      If Controls("WD" & x & "_" & i).Caption = "" Then
        Controls("WD" & x & "_" & i).Visible = False
        Else
        Controls("WD" & x & "_" & i).Visible = True
    End If

    If Sheets("Tasks").Range("I" & (x - 1) * 8 + i + 1).Value = 1 Then
       Controls("WD" & x & "_" & i).Value = True
    Else
      Controls("WD" & x & "_" & i).Value = False
    End If

 Next i, x
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...