2017-07-26 34 views
0

的我是一個Excel VBA新手,我試圖寫一些代碼來自動執行特定的任務。我設法找到下面的代碼並對其進行定製以滿足我的需求。由命令按鈕激活的代碼將通過列I查看從第5行開始的文本FALSE。當它遇到FALSE時,它將停止並複製同一行的列C中的單元格。For循環回到頂部

的代碼適用於這一目的,但我想借此邁進了一步。如果代碼到達I列中最後一個填充的單元格而沒有遇到FALSE,我希望它返回到列的頂部並從I1開始搜索。

有沒有辦法做這樣的事情有For循環?我一直在尋找Do Until和Do While循環,但還沒有看到類似於我正在嘗試做的示例。

任何援助將不勝感激。

Picture of the Worksheet

Private Sub CommandButton1_Click() 
Dim LR As Long, i As Long 
    With Sheets("Sheet1") 
     LR = .Range("I" & Rows.Count).End(xlUp).Row 
     For i = 5 To LR 
      With .Range("I" & i) 
       If .Text = ("FALSE") Then 
        .Offset(0, -6).Copy 
       Exit For 
       End If 
      End With 
     Next i 
    End With 
End Sub 
+0

那麼,爲什麼不'對於i = 1到LR'?你還在哪裏粘貼'.Copy'? –

+1

大概可以使用'Range.Find'代替蠻力迭代... –

+0

該程序有點獨特。 C列中的值代表必須按照特定順序從上到下分配一次工作項目的員工的有序列表。 FALSE值代表出席工作的員工,TRUE代表缺席的員工。我希望代碼依次在列表中查找下一個FALSE(下一個可用的員工)。在我的最終工作表中,將會有10個命令按鈕。第一個將使用For i = 2到LR,第二個將使用For i = 3到LR等等直到最後一個按鈕,我將使用For i = 1到LR。 – genelec

回答

0

聲明一些布爾變量:Dim isFound As Boolean,其設置爲false:isFound = False,如果發現匹配,然後將其設置爲true:isFound = True(複製值之後)。之後For循環檢查,如果發現匹配If isFound Then...,並檢查其餘5個單元:從I1I5(因爲在前面的循環中,我們檢查的其餘部分),或者你可以再補充另一個循環,這將去throguh I列。

+0

這樣做!非常感謝你的幫助! – genelec