macros清除多个列

下面是我打开工作簿时自动运行TimeStampmacros的代码。 但是,如果时间早上6:45或更晚,它才会运行。 我的问题是,我试图让它清除第2行中列A到D中的单元格内容,如果时间早于上午6:45,并且它运行TimeStampmacros之前。 我试图只用列A和debugging器说,顶线是一个问题。 我似乎无法弄清楚为什么这是一个问题。 我想我打破了某种语法规则,但我不确定。

Private Sub Workbook_Open() If Time > TimeSerial(6, 45, 0) Then Call TimeStamp Else Sub Clear() Dim wb3 As Workbook Set wb3 = ThisWorkbook With wb3.Worksheets("Avnet") .Range("A2:A" & .Range("A2").End(xlDown).Row).ClearContents End With End Sub Application.Wait "06:45:00" Call TimeStamp End Sub 

它工作之前,我在Sub Clear()部分添加…

更新:试图使Sub Clear()成为一个单独的模块,并使用call Clear()但也没有工作。 这是它的样子

Clear()代码

 Sub Clear() Dim wb3 As Workbook Set wb3 = ThisWorkbook With wb3.Worksheets("Avnet") Range("A2:A" & .Range("A2").End(xlDown).Row).ClearContents End With End Sub 

调用Clear()的部分

 Private Sub Workbook_Open() If Time > TimeSerial(20, 0, 0) Then Call TimeStamp Else Call Clear Application.Wait "19:35:00" Call TimeStamp End Sub 

在sub中声明一个子将不起作用(我99.9999%肯定,但是它从来没有进入我的脑海去尝试这个!)

移动您的Sub Clear声明,以便它在Workbook_Open之后,然后从Workbook_Open调用Clear ,就像调用TimeStamp 。 (你也在WorkBook_open的末尾缺less一个End If'

所以你的代码会变成:

 Private Sub Workbook_Open() If Time > TimeSerial(6, 45, 0) Then Call TimeStamp Else Call Clear Application.Wait "06:45:00" Call TimeStamp End If End Sub Sub Clear() Dim wb3 As Workbook Set wb3 = ThisWorkbook With wb3.Worksheets("Avnet") .Range("A2:A" & .Range("A2").End(xlDown).Row).ClearContents End With End Sub 

另外,您的Workbook_Open代码可以简化为:

 Private Sub Workbook_Open() If Time <= TimeSerial(6, 45, 0) Then Call Clear Application.Wait "06:45:00" End If Call TimeStamp End Sub