我正在寫關閉工作簿之前更改按鈕顏色的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