gpt4 book ai didi

vba - 我如何引用工作表以遍历不同的工作表并在每个工作表上执行相同的功能?

转载 作者:行者123 更新时间:2023-12-04 21:15:29 26 4
gpt4 key购买 nike

我是 VBA 新手,正在努力学习它。我编写了这个函数来尝试遍历同一个工作簿中的一些工作表,并添加一个列来根据左侧的单元格更新标记为“ww”的星期。

我遇到了 For 循环的问题,它应该循环定义的 sh1 到 sh3。如果使用 sheet.("sh"&i) 不适用于 For 循环,如何声明要循环的工作表?
Sheets("sh" & i).Activate部分是我收到调试错误的地方。
“运行时错误:9
下标超出范围"

我在很大程度上不确定自己在做什么并进行了很多实验。另一方面,有没有什么好的在线学习类(class)可以用来增加我对 VBA 的了解?

Function updateWWColumn()

Set sh1 = ActiveWorkbook.Sheets("Data_WE")
Set sh2 = ActiveWorkbook.Sheets("Data_E")
Set sh3 = ActiveWorkbook.Sheets("Data_PC")

'placeholder to contain the week number in integer form from the cell on the right.
Dim placeholder As Integer
Dim i As Integer

For i = 1 To 3
Sheets("sh" & i).Activate ' Run time error: 9 subscript out of range
ActiveSheet.Columns("U:U").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Worksheets("sh" & i).Columns("P:P").Delete Shift:=xlToLeft
placeholder = Right(Worksheets("sh" & i).Range("S83"), 2)
Worksheets("sh" & i).Range("T83").Value = "WW" & placeholder + 1
Next i

End Function

最佳答案

不要使用三个变量来存储您的工作表引用 - 使用一个包含三个项目的数组来存储您的特定工作表。

所以我在这里所做的就是将 sh1、sh2 和 sh3 更改为一个名为 sh 的数组。然后无论你会使用WorkSheets("sh"&i)你可以使用 sh(i)

Function updateWWColumn()
Dim sh(3) As Worksheet
Set sh(1) = ActiveWorkbook.Sheets("Data_WE")
Set sh(2) = ActiveWorkbook.Sheets("Data_E")
Set sh(3) = ActiveWorkbook.Sheets("Data_PC")
'placeholder to contain the week number in integer form from the cell on the right.
Dim placeholder As Interger
Dim i As Integer

For i = 1 To 3
sh(i).Activate
ActiveSheet.Columns("U:U"). _
Insert Shift:=xlToRight, _
CopyOrigin:=xlFormatFromLeftOrAbove

sh(i).Columns("P:P"). _
Delete Shift:=xlToLeft

placeholder = Right(sh(i).Range("S83"), 2)
sh(i).Range("T83").Value = "WW" & placeholder + 1
Next i
End Function

关于vba - 我如何引用工作表以遍历不同的工作表并在每个工作表上执行相同的功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43750601/

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