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