gpt4 book ai didi

excel - VBA 循环遍历工作表,其中工作表名称由两个变量组成

转载 作者:行者123 更新时间:2023-12-04 22:14:13 25 4
gpt4 key购买 nike

警告:我的 VBA 知识是通过谷歌搜索自学的,所以请耐心等待!
我有一组工作表,并试图通过每张表执行相同的一组操作。我的代码有问题:
例如。工作表是“Staging AA 101”、“Staging AA 102”、“Staging AA 201”、“Staging BB 101”、“Staging BB 102”、“Staging BB 201”、“Staging CC 101”、“Staging CC 102”、 “分期 CC 201”
我的代码是:

Dim ExpSub(1 To 3) As String
Dim Post(1 To 3) As String
Dim i As Integer 'ExpSub
Dim j As Integer 'Post

ExpSub(1) = "101"
ExpSub(2) = "102"
ExpSub(3) = "201"
Post(1) = "AA"
Post(2) = "BB"
Post(3) = "CC"

For j = 1 To 3 'j for Post
For i = 1 To 3 'i for ExpSub
Sheets("Staging " & Post(j) & " " & ExpSub(i)).Select
Range("AK4").Select
Range(Selection, Selection.Offset(100, 1)).Select
Selection.ClearContents
Next i
Next j
在这一行出错
Sheets("Staging "& Post(j) & ""& ExpSub(i)).Select
请问我如何遍历所有带有这些变量的工作表?提前致谢!

最佳答案

您的循环按预期工作。您应该将字符串连接的结果写入中间变量并使用调试器进行检查。
我可以想到您的代码失败的两个原因:
a) 您的一张纸丢失或名称中有错字(可能是多余的空格字符)。使用调试器检查您的代码失败的工作表。
b)您没有指定要使用的工作簿,因此 VBA 将在事件工作簿中查找工作表 - 也许这是一个不同的工作簿。
除此之外:您不需要Select使用它们的工作表或范围,实际上应该避免这种情况,因为它会使您的代码变慢并且是错误的敞开大门。你应该花时间阅读 How to avoid using Select in Excel VBA .
您的代码可能看起来像

Dim ExpSub() As Variant, Post As Variant
ExpSub = Array("101", "102", "201")
Post = Array("AA", "BB", "CC")

Dim i As Integer 'ExpSub
Dim j As Integer 'Post
For j = LBound(Post) To UBound(Post) 'j for Post
For i = LBound(ExpSub) To UBound(ExpSub) 'i for ExpSub
Dim sheetname As String
sheetname = "Staging " & Post(j) & " " & ExpSub(i)
Debug.Print sheetname

With ThisWorkbook.Sheets(sheetname)
Dim r As Range
Set r = .Range("A4").Resize(100, 1)
r.ClearContents
End With
Next i
Next j
该代码假定工作表与您的代码 ( ThisWorkbook) 位于同一工作簿中,否则您需要更改它。
如果你喜欢 loooong 语句,而不是 With -Block 你可以写一行。就个人而言,我讨厌这么长的陈述,因为它们很难阅读,如果它们失败了,你不知道是哪个部分导致了失败。
ThisWorkbook.Sheets(sheetname).Range("A4").Resize(100, 1).ClearContents

关于excel - VBA 循环遍历工作表,其中工作表名称由两个变量组成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71061613/

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