2016-05-20 145 views
0

如何更新此VBA代碼,以便它可以檢查我的所有列(從G4到G1000),並顯示每個列的msgbox而不僅是G4的循環?如何通過單元格循環

Private Sub Workbook_Open() 
    Dim c1 As Range 
    Set c1 = ThisWorkbook.Sheets("Sheet1").Range("G4") 
    If IsDate(c1) Then 
    If Now >= c1 + 60 Then 
     MsgBox "The Date in Sheet 1 Cell B4 has been reached or passed." 
     End If 
    End If 
End Sub 
+0

'for ... next'循環。使用範圍(「G」&x)其中x是循環中的變量。 – gtwebb

回答

0

使用r.offset(0,-5)將參照B列

Private Sub Workbook_Open() 
     Dim c1 As Range, r As Range 
     Set c1 = ThisWorkbook.Sheets("Sheet1").Range("G4:G100") 
     For Each r In c1 
      If IsDate(r.Value) Then 
       If Now >= r.Value + 60 Then 
        MsgBox "warning cell " & r.Address(0, 0) & " is expired: Value: " & r.offset(0,-5) 'r.offset(0,-5) will return the content on col 
       End If 
      End If 
     Next r 
    End Sub 

希望這會有所幫助。

1

也許:

Private Sub Workbook_Open() 
    Dim c1 As Range, r As Range 
    Set c1 = ThisWorkbook.Sheets("Sheet1").Range("G4:G100") 
    For Each r In c1 
     If IsDate(r.Value) Then 
      If Now >= r.Value + 60 Then 
       MsgBox "warning cell " & r.Address(0, 0) & " is expired" 
      End If 
     End If 
    Next r 
End Sub 
+0

例如,如果G4的日期過期,msg框可以包含寫入B4的數據嗎? –

+0

@ G.Rizk你可以修改MsgBox –

+0

是的,我知道,但我需要它給另一列的值,這意味着當G4過期時寫入B4的值。我應該寫什麼,而不是r.value,我不應該定義一個新值? –