2016-05-20 93 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,我不应该定义一个新值? –