[英]Looping through Inactive worksheets
除非我转到每个选项卡并运行它,否则循环代码不会一次出现在所有工作表上
Dim Sheets As Variant
Dim Sheet As Variant
Sheets = Array("1", "2", "3", "4", "5", "6")
For Each Sheet In ActiveWorkbook.Sheets
If Range("G2").Value = 1 Then Range("h10:h11").Value =
Range("N10:N11").Value
If Range("G2").Value = 1 Then Range("h14:h22").Value =
Range("N14:N22").Value
If Range("G2").Value = 1 Then Range("h27:h29").Value =
Range("N27:N29").Value
Next Sheet
我该如何修复我的代码,以便当我在选项卡1上更改所有其他选项卡时
如果您未在代码中指定父级工作表,则只会获得活动工作表。 使用带块:
Dim Shts As variant
Dim Sheet As Worksheet
Shts = Array("1", "2", "3", "4", "5", "6")
For Each Sheet In ActiveWorkbook.WorkSheets
With Sheet
If .Range("G2").Value = 1 Then
.Range("h10:h11").Value = .Range("N10:N11").Value
.Range("h14:h22").Value = .Range("N14:N22").Value
.Range("h27:h29").Value = .Range("N27:N29").Value
End If
End With
Next Sheet
像这样,还检查工作表是否存在,并提供跳过活动工作表的选项
Sub n()
Dim Shts() As Variant
Dim ws As Worksheet
Dim s As Variant
Shts = Array("1", "2", "3", "4", "5", "6")
For Each s In Shts
If WORKSHEET_EXISTS(CStr(s)) Then
' Exclude the activesheet?
If s <> ActiveSheet.Name Then
Set ws = ThisWorkbook.Worksheets(s)
With ws
If .Range("G2").Value = 1 Then
.Range("h10:h11").Value = .Range("N10:N11").Value
.Range("h14:h22").Value = .Range("N14:N22").Value
.Range("h27:h29").Value = .Range("N27:N29").Value
End If
End With
' End of exclude
End If
Else
Debug.Print "Can't find worksheet : " & s
End If
Next s
Erase Shts
End Sub
Function WORKSHEET_EXISTS(strWorksheetname As String) As Boolean
Dim w As Excel.Worksheet
WORKSHEET_EXISTS = False
On Error GoTo eHandle
Set w = ThisWorkbook.Worksheets(strWorksheetname)
WORKSHEET_EXISTS = True
ExitFunction:
Exit Function
eHandle:
End Function
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.