ブックを閉じる前にボタンの色を変更するためのVBAコードを作成しています。私のコードは "Microsoft Excel Objects" - "ThisWorkbook"の下に書かれています。私は2つのタブがあり、1つは「User Interface_OneStep」と呼ばれ、もう1つは「User Interface_UserSupervised」と呼ばれます。ワークブックを閉じると、両方のワークシートのボタンの色を変更したいと思います。VBA Excelイベント「オブジェクトがこのプロパティまたはメソッドをサポートしていません」エラー
私は今、問題があるのは、私が "User Interface_OnseStep"に留まってブックを閉じると、すべて正常に動作するということです。しかし、私が "User Interface_UserSupervised"ワークシートに残っていると、ブックを閉じるときに、 "オブジェクトがこのプロパティまたはメソッドをサポートしていません"というエラーメッセージが表示されます。私のコードは、以下である:
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 =ユーザーInterface_OneStep。なぜ別のタブに切り替えると、Excelは他のタブのプロパティを変更できないのですか?
ありがとうございます!
あなたはSTRING'として '公共worksheetnameを、モジュール内のすべての' Sub'sがそれを認識します。この方法として、モジュールレベルでそれをdecalringことで、 'グローバルとしてWorksheetName'を定義するか必要があります。あるいは、 'Sub ResetColorTemplate()' –
に渡すことができます。申し訳ありませんが、変数を定義しました。ここに貼り付けるのを忘れてしまった。思い出してくれてありがとう。 – vivi11130704