我正在写关闭工作簿之前更改按钮颜色的VBA代码。我的代码写在“Microsoft Excel对象” - “ThisWorkbook”下。我有两个选项卡,一个叫做“User Interface_OneStep”,另一个叫做“User Interface_UserSupervised”。我想在关闭工作簿时更改两个工作表上的按钮颜色。VBA Excel事件“对象不支持此属性或方法”错误
我现在遇到的问题是,如果我关闭工作簿时停留在“User Interface_OnseStep”中,则一切正常。但是如果我停留在“User Interface_UserSupervised”工作表中,当我尝试关闭本书时,弹出一条“Object不支持此属性或方法”的错误消息。我的代码如下:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
ReDim ButtonNumberArray(14) As Variant
ButtonNumberArray(0) = "Rectangle 95"
ButtonNumberArray(1) = "Rectangle 92"
ButtonNumberArray(2) = "Rectangle 98"
ButtonNumberArray(3) = "Rectangle 104"
ButtonNumberArray(4) = "Rectangle 105"
ButtonNumberArray(5) = "Rectangle 106"
ButtonNumberArray(6) = "Rectangle 103"
ButtonNumberArray(7) = "Rectangle 96"
ButtonNumberArray(8) = "Rectangle 114"
ButtonNumberArray(9) = "Rectangle 89"
ButtonNumberArray(10) = "Rectangle 120"
ButtonNumberArray(11) = "Rectangle 123"
ButtonNumberArray(12) = "Rectangle 128"
ButtonNumberArray(13) = "Rectangle 122"
ButtonNumberArray(14) = "Rectangle 137"
For Each var In ButtonNumberArray
WorksheetName = "User Interface_OneStep"
Call ResetColorTemplate
Next var
ReDim ButtonNumberArray(18) As Variant
ButtonNumberArray(0) = "Rectangle 84"
ButtonNumberArray(1) = "Rectangle 89"
ButtonNumberArray(2) = "Rectangle 2"
ButtonNumberArray(3) = "Rectangle 12"
ButtonNumberArray(4) = "Rectangle 88"
ButtonNumberArray(5) = "Rectangle 13"
ButtonNumberArray(6) = "Rectangle 14"
ButtonNumberArray(7) = "Rectangle 15"
ButtonNumberArray(8) = "Rectangle 40"
ButtonNumberArray(9) = "Rectangle 16"
ButtonNumberArray(10) = "Rectangle 81"
ButtonNumberArray(11) = "Rectangle 17"
ButtonNumberArray(12) = "Rectangle 57"
ButtonNumberArray(13) = "Rectangle 86"
ButtonNumberArray(14) = "Rectangle 62"
ButtonNumberArray(15) = "Rectangle 65"
ButtonNumberArray(16) = "Rectangle 67"
ButtonNumberArray(17) = "Rectangle 64"
ButtonNumberArray(18) = "Rectangle 74"
For Each var In ButtonNumberArray
WorksheetName = "User Interface_UserSupervised"
Call ResetColorTemplate
Next var
End Sub
的颜色模板宏此(在模块写入):
Option Explicit
Public ButtonNumberArray() As Variant
Public WorksheetName As String
Sub ResetColorTemplate()
ThisWorkbook.Worksheets(WorksheetName).Shapes.Range(ButtonNumberArray()).Select
Selection.ShapeRange.ShapeStyle = msoShapeStylePreset22
With Selection.ShapeRange.TextFrame2.TextRange.Font.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(0, 0, 0)
.Transparency = 0
.Solid
End With
End Sub
在该行中出现的错误:
Selection.ShapeRange.ShapeStyle = msoShapeStylePreset22
而当错误发生时, WorksheetName = User Interface_OneStep。为什么当我切换到另一个选项卡时,Excel无法修改其他选项卡的属性?
在此先感谢!
您需要可以定义'WorksheetName'全球,通过在模块级为'公共WorksheetName为String',这样所有的'Sub's的模块将识别它decalring它。或者,您可以将它传递给'Sub ResetColorTemplate()' –
抱歉,我确实定义了变量。忘了粘贴在这里。感谢提醒。 – vivi11130704