gpt4 book ai didi

vba - Excel VBA ClearContents 错误

转载 作者:行者123 更新时间:2023-12-04 21:57:45 25 4
gpt4 key购买 nike

我试图运行宏,它应该清除工作表 AA、BB 和 CC 中的内容,然后进入工作表 MENU,但它在第 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

另外,最好使用 ThisWorkbook.Sheets()而不仅仅是 Sheets()如果您的代码引用了您正在编写 VBA 的同一个工作簿。如果您不这样做,那么 VBA 将假定您在运行代码时引用的是处于事件状态的工作簿中的工作表 - 这通常不是一件好事。

更新
我已更改代码以删除我认为您可能想要删除的内容?

关于vba - Excel VBA ClearContents 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41131588/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com