簡體   English   中英

Excel VBA 帶 3 個嵌套循環

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM