プロが教える店舗&オフィスのセキュリティ対策術

VBAの初級者です。
VBA[Private Sub]に以下の様なコードを作成しました。
(表示するシートを切り替えるコードです)

Private Sub *****1_Click()
Worksheets("*****").Activate
End Sub

 以上のコードをシート上に作成した図形(オートシェイプやコントロールボタン)に登録しようとすると、作成した図形を右クリックして出てくるメニュー【マクロ登録】ダイアログ画面には【Private Sub】マクロ名のリストが出て来ず、登録したくても登録できません。
(【Sub】マクロ名のリストは表示されているが?)
 どうしたら、【Private Sub】マクロを登録できるか?教えて下さい。お願いいたします。

質問者からの補足コメント

  • どう思う?

    早速の回答、ありがとうございました。
    自分でも、ご回答を追試した所、その通りでした。未知の回答で新たな知識になり助かりました。

     只、小生としては、何故【Private Sub ****()】にコードを記載したか?と言うと、それなりの理由が有ります。
     実は、VBE画面のプロジェクト画面の【Module上】では無く、【Sheet1(****)上】で(そのシートだけで利用する)コードなので、【Private Sub ****()】を、図形((オートシェイプ等)に登録したい」と思った次第です。(最初にキチンと説明しなくて申し訳有りませんでした)
     以上、追加の質問で申し訳ありませんが、回答戴ければ、助かります。どうぞ、よろしくお願いいたします。

      補足日時:2019/04/04 21:01
gooドクター

A 回答 (3件)

No.1です。


補足コメントの内容
・シートへのプロシージャーの記述
・「Private Sub」を図形に登録
までは想定して回答したつもりでしたが、何が解決しないのかが不明です。
>どうしてもPrivateが良いのであれば、そのあとで追記しても大丈夫なようです。
が理解できませんでしたか?
一旦「Sub・・・」で登録後、「Private Sub・・・」としても、登録されたプロシージャは名前が変更されていなければ変更されないので、Privateという属性に変更しても(少なくとも私の使用している環境では)大丈夫ですよ。
という意味で回答しております。

>【マクロ登録】ダイアログ画面には【Private Sub】マクロ名のリストが出て来ず、登録したくても登録できません。
ということでしたので、「リスト」へ表示するための手段として回答しましたが、
「Private等、リストに出てこない物を登録したい」ということでしたら「マクロ名」のところに
(ブック名!)シート名.プロシージャー名
※ブック名は省略可能。シート名.(ピリオド)プロシージャー名で、そのシートにあるプロシージャーという意味でしょう。
を手入力しても登録されます。
なお、シートに記載されたPrivateだからと言って「他のシートの図形から登録できない」わけでは無く、上記の方法で簡単に登録できますので、それほどPrivateにこだわる意味は無いように思います。

No2さんへの補足コメントでしたら、この回答は無視して構いません。
    • good
    • 0
この回答へのお礼

No.3 No.1回答者: Zincer 様

 お世話になります。
=以下の文章より、前の回答内容は、小生も追試もしましたし、理解できています。

>「Private等、リストに出てこない物を登録したい」
>書式(省略)・・・に従って、を手入力しても登録されます。
> なお、シートに記載されたPrivateだからと言って「他のシートの図形から登録できない」わけでは無く、上記の方法で簡単に登録できますので、
=しかし、回答の[書式]に従って記述して登録(OK)しても、
「マクロ'(ブック名!)シート名.プロシージャー名'を実行できません。このブックでマクロが使用できないか、またはすべてのマクロが無効になっている可能性があります。」のメッセージがでて実行できませんでした。(しかし、ブック上の他のマクロ([Module1]に記載したプロシージャ(マクロ)は[図形クリック]で問題無く実行できます。)
=その後、色々と試行実験をして見た結果、以下の様な事が判明しました。((小生の環境では・・・)
 既にある[シート名]上に記載した[Private Sub プロシージャ名]を、一旦 Private を除いて[Sub プロシージャ名]にして(当然、マクロダイアログ画面でもリストにも表示される)で図形に登録した後で、Private を付け加えた[Private Sub プロシージャ名]に変えたら、問題無く[図形クリック]でマクロが実行されました。

=正に、[第一回目の回答に尽きる]結果となりました。
>それほどPrivateにこだわる意味は無いように思います。
小生の質問にお付合い戴き、本当に、色々とありがとうございました。

お礼日時:2019/04/10 11:45

こんばんは!



オートシェイプにマクロを登録する場合は
挿入したオートシェイプ上で右クリック → マクロの登録 → 新規作成
これでVBE画面に

Sub 挿入したオートシェイプ名_Click()

End Sub

と表示されますので、カーソルが点滅しているところに
必要なコードを記載するだけです。

※ フォームコントロールのコマンドボタンの場合は挿入すれば
VBE画面が表示されますのですぐにコード記載。

ActiveXコントロールのコマンドボタンでは
挿入したコマンドボタンをダブルクリック!
これでコード記載が可能になります。m(_ _)m
    • good
    • 0

先ずは「Private」を除いて「Sub *****1_Click()」としておき、質問中の手順で登録。


どうしてもPrivateが良いのであれば、そのあとで追記しても大丈夫なようです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング