[英]Excel VBA with 3 nested loops
我想在我的用戶窗體中為多個復選框提供來自單元格的標題。 因為我不想寫下每一個參考,我想使用一個循環。 不幸的是,我不知道該怎么做。
我每個工作日有 8 個復選框,總共有 23 個工作日。 命名類似於 WD1_1、WD1_2...WD1_8、WD2_1、WD2_2...WD2_8。
WD1_1 從選項卡“任務”單元格 B2 中獲取值。 從那以后,它總是+1。
我遇到的問題是,我不能一直循環到 185,因為三件事正在發生變化:計算任務編號和單元格編號,當達到 WD1 中的任務 8 時,向上計數 WD +1 並從 1 重新啟動任務編號到 8 並繼續計數單元格引用。
我只是在一個實例中做到這一點,例如單元格引用,但不是所有三個都在一起。
這是我必須遍歷每個 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
提前感謝您的幫助!
找到了答案。 我的錯誤是通過第三個循環到達 go 。 刪除第三個循環,然后通過每一行使用線性 function 到 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.