[英]Excel, VBA, .ClearContents with referenced range, error 1004
[英]Excel VBA ClearContents error
我試圖運行宏應該從表AA,BB和CC清除內容,然后進入表單菜單但它在第4行高舉我錯誤。請參閱下面的代碼。
Sub clear_sheets()
Snames = Split(AA, BB, CC)
For Count = 0 To UBound(Snames)
Sheets(Snames(Count)).Range("A3:C3").End(xlDown).ClearContents
Next
Sheets("MENU").Select
Optimise (False)
End Sub
我在不同的論壇上發布了一些不同的方法。 哪個會更有效率,我的意思是哪一個會減少對處理的壓力?
Sub clear_sheets()
Optimise (True)
Snames = Split("AA, BB, CC", ", ")
For count = 0 To UBound(Snames)
MyRange = Range("A3:C3", Range("A3:C3").End(xlDown)).Address
ThisWorkbook.Sheets(Snames(count)).Range(MyRange).ClearContents
Next
Sheets("MENU").Select
Optimise (False)
End Sub
更新我明白這不是代碼編寫網站,但我想問你是否可以查看下面的代碼。
Sub distribute_dsp_data_9()
Sheets("raw_data_1_9").Visible = True
Sheets("raw_data_1_9").Select
ActiveSheet.ListObjects("COMP_summ_9").Range.AutoFilter Field:=2, Criteria1 _
:="DTTD"
Range("C2").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToLeft)).Select
Selection.Copy
Sheets("DTTD").Select
Range("A3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("raw_data_1_9").Select
ActiveSheet.ListObjects("COMP_summ_9").Range.AutoFilter Field:=2, Criteria1 _
:="FDTL"
Range("C2").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToLeft)).Select
Selection.Copy
Sheets("FDTL").Select
Range("A3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("raw_data_1_9").Select
ActiveSheet.ListObjects("COMP_summ_9").Range.AutoFilter Field:=2, Criteria1 _
:="FULL"
Range("C2").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToLeft)).Select
Selection.Copy
Sheets("FUL ON").Select
Range("A3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("raw_data_1_9").Select
ActiveSheet.ListObjects("COMP_summ_9").Range.AutoFilter Field:=2
Sheets("raw_data_1_9").Visible = False
結束子
嘗試這個。 我已經正確地聲明了你的變量並且使用Array()
而不是Split()
為你的數組賦值都很好,但是Array()
更靈活
Sub clear_sheets()
Dim sheetNames As Variant
Dim count As Integer
sheetNames = Array("AA", "BB", "CC")
For Count = 0 To UBound(Snames)
With Sheets(sheetNames(Count))
Range(.Range("A3"), .Range("C3").End(xlDown)).ClearContents
End With
Next
Sheets("MENU").Select
Optimise (False)
End Sub
此外,如果您的代碼引用您正在編寫VBA的同一工作簿,最好使用ThisWorkbook.Sheets()
而不僅僅是Sheets()
。如果您不這樣做,那么VBA將假設您指的是當您運行代碼時,無論哪個工作簿都處於活動狀態 - 這通常不是一件好事。
更新我已經更改了代碼以刪除我認為您可能想刪除的內容?
采用:
Snames = Split("AA", "BB", "CC")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.