[英]Macro to Clear multiple Columns
下面是我打开工作簿时自动运行TimeStamp宏的代码。 但是,仅在时间为上午6:45或更高版本时运行。 我的问题是,如果时间在上午6:45之前并且在运行TimeStamp宏之前,我试图使其从第2行开始清除A到D列中的单元格内容。 我尝试仅使用列A来执行此操作,调试器说最上面的问题。 我似乎无法弄清楚为什么这是一个问题。 我认为我正在打破某种语法规则,但不确定。
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()
但这都不起作用。 这是它的样子
清除()代码
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
在子对象中声明子对象是行不通的(我确定是99.9999%,但从未尝试过这样做!)
移动你的Sub Clear
声明,以便它的后Workbook_Open
,然后只需调用Clear
从内部Workbook_Open
,在调用同样的方式TimeStamp
。 (您在WorkBook_open的结尾处还缺少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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.