我尝试将图表和工作表作为变体进行循环。
Sub ShowSheets(vSheets() As Variant)
Dim i As Long
For i = LBound(vSheets, 1) To UBound(vSheets, 1)
Dim wks As Variant
Set wks = ThisWorkbook.Sheets(vSheets(i, 1))
wks.Visible = xlSheetVisible
Next i
End Sub
vSheets()
包含以下表格和图表的名称:
SheetName1
SheetName2
ChartName1
SheetName3
SheetName4
子程序不成功。我在行上遇到错误wks.Visible = xlSheetVisible
when wks
工作表的名称是SheetName3
.
错误是:
Run-time error '-2147417848 (80010108)':
Method 'Visible' of object '_Worksheet' failed
为什么我在该特定行上收到错误?
以下子例程也不成功:
Sub ShowSheets(vSheets() As Variant)
Dim i As Long
For i = LBound(vSheets, 1) To UBound(vSheets, 1)
ThisWorkbook.Sheets(vSheets(i, 1)).Visible = xlSheetVisible
Next i
End Sub
我在同样的情况下遇到了错误。在行上ThisWorkbook.Sheets(vSheets(i, 1)).Visible = xlSheetVisible
, when ThisWorkbook.Sheets(vSheets(i, 1)).Name
was SheetName3
。我不明白为什么上面的子程序不起作用。
我认为当 wks 是图表时我应该得到一个错误。我会理解的。我不明白为什么当 wks 是图表后的第一个工作表时出现错误。
以下子例程有效,但我仍然无法弄清楚为什么在上面的子例程中出现错误:
是什么导致前两个子程序出现错误?为什么我在工作表时出现错误SheetName3
?
Sub ShowSheets(vSheets() As Variant)
Dim i As Long
For i = LBound(vSheets, 1) To UBound(vSheets, 1)
If TypeName(ThisWorkbook.Sheets(vSheets(i, 1))) = "Worksheet" Then
ThisWorkbook.WorkSheets(vSheets(i, 1)).Visible = xlSheetVisible
End If
Next i
For i = LBound(vSheets, 1) To UBound(vSheets, 1)
Debug.Print (TypeName(ThisWorkbook.Sheets(vSheets(i, 1))))
If TypeName(ThisWorkbook.Sheets(vSheets(i, 1))) = "Chart" Then
ThisWorkbook.Charts(vSheets(i, 1)).Visible = xlSheetVisible
End If
Next i
End Sub