質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

1870閲覧

VBAでイベントプロシージャのオンオフを切り替えたいが、エラーになってしまう

halmichi

総合スコア12

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2020/08/15 11:55

編集2020/08/15 13:01

Microsoft365のエクセルを使っています。
VBAでボタンクリックで一番下のWorksheet_SelectionChangeのオンオフを切り替えたいのですが、2行目で「VBA エラー 438 オブジェクトは、このプロパティまたはメソッドをサポートしていません。」というエラーが出てしまいます。
https://xtech.nikkei.com/it/pc/article/NPC/20070906/281295/
上記のページの中ほどにあるコードをコピペ改変しただけなのですが、どこがおかしいのでしょうか?
よろしくお願いいたします。

VBA

1Private Sub CommandButton3_Click() 2With ActiveSheet.Shapes("CommandButton3").TextFrame.Characters 3 If .Text = "チェック受付中" Then 4 .Text = "チェック受付" 5 Application.EnableEvents = False 6 7 Else 8 .Text = "チェック受付中" 9 Application.EnableEvents = True 10 End If 11 End With 12 13End Sub 14Private Sub Worksheet_SelectionChange(ByVal Target As Range)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2020/08/15 12:49

・リンクは「リンクの挿入」で記入してください。 ・ワークシート上に"CommandButton3"という名前のオートシェイプが存在していて、ユーザーフォーム上に"CommandButton3"という名前のコマンドボタンが存在していますか? Excel2013で試したところ、質問のエラーは再現しませんでした。
halmichi

2020/08/15 13:36

ありがとうございます。 ワークシート上に、開発の中の挿入で作ったプロパティの(オブジェクト名)がCommandButton3のものならありますが、ユーザーフォームに関しては作っていませんでした。調べて新たにユーザーフォームにCommandButton3を作ってみましたが、同じエラーが出てしまいます。 ワークシート上のボタンを作るだけではダメだったということでしょうか? よろしくお願いいたします。
kaz.Suenaga

2020/08/15 13:44

コードの各行で何に対して何をやっているか、説明できますか?
meg_

2020/08/15 14:00

質問のコードに「Private Sub CommandButton3_Click()」の記述があったので、ユーザーフォームのコマンドボタンのクリック時の動作を定義しているものと理解しましたが違いましたか? 違うのであれば別にユーザーフォームは不要です。
halmichi

2020/08/16 01:53

回答でのご指摘通り、フォームとactiveXのボタンをごっちゃにしていたのが原因だったようです。 ありがとうございました。
guest

回答1

0

ベストアンサー

そのボタンが、フォームコントロールのボタンではなくActiveXコントロールのコマンドボタンなら
(名前からたぶんそうだと思いますが)、下記のコードになります。

vba

1Private Sub CommandButton3_Click() 2 With Me.OLEObjects("CommandButton3").Object 3 If .Caption = "チェック受付中" Then 4 .Caption = "チェック受付" 5 Application.EnableEvents = False 6 7 Else 8 .Caption = "チェック受付中" 9 Application.EnableEvents = True 10 End If 11 End With 12End Sub 13 14

投稿2020/08/15 14:24

hatena19

総合スコア33740

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

halmichi

2020/08/16 01:54

全くご指摘の通りでした。もっと勉強します。ありがとうございました。
halmichi

2020/08/16 01:55

全くご指摘の通りでした。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問