簡體   English   中英

Excel VBA ClearContents錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM