
VBAの初級者です。
VBA[Private Sub]に以下の様なコードを作成しました。
(表示するシートを切り替えるコードです)
Private Sub *****1_Click()
Worksheets("*****").Activate
End Sub
以上のコードをシート上に作成した図形(オートシェイプやコントロールボタン)に登録しようとすると、作成した図形を右クリックして出てくるメニュー【マクロ登録】ダイアログ画面には【Private Sub】マクロ名のリストが出て来ず、登録したくても登録できません。
(【Sub】マクロ名のリストは表示されているが?)
どうしたら、【Private Sub】マクロを登録できるか?教えて下さい。お願いいたします。
No.3ベストアンサー
- 回答日時:
No.1です。
補足コメントの内容
・シートへのプロシージャーの記述
・「Private Sub」を図形に登録
までは想定して回答したつもりでしたが、何が解決しないのかが不明です。
>どうしてもPrivateが良いのであれば、そのあとで追記しても大丈夫なようです。
が理解できませんでしたか?
一旦「Sub・・・」で登録後、「Private Sub・・・」としても、登録されたプロシージャは名前が変更されていなければ変更されないので、Privateという属性に変更しても(少なくとも私の使用している環境では)大丈夫ですよ。
という意味で回答しております。
>【マクロ登録】ダイアログ画面には【Private Sub】マクロ名のリストが出て来ず、登録したくても登録できません。
ということでしたので、「リスト」へ表示するための手段として回答しましたが、
「Private等、リストに出てこない物を登録したい」ということでしたら「マクロ名」のところに
(ブック名!)シート名.プロシージャー名
※ブック名は省略可能。シート名.(ピリオド)プロシージャー名で、そのシートにあるプロシージャーという意味でしょう。
を手入力しても登録されます。
なお、シートに記載されたPrivateだからと言って「他のシートの図形から登録できない」わけでは無く、上記の方法で簡単に登録できますので、それほどPrivateにこだわる意味は無いように思います。
No2さんへの補足コメントでしたら、この回答は無視して構いません。
No.3 No.1回答者: Zincer 様
お世話になります。
=以下の文章より、前の回答内容は、小生も追試もしましたし、理解できています。
>「Private等、リストに出てこない物を登録したい」
>書式(省略)・・・に従って、を手入力しても登録されます。
> なお、シートに記載されたPrivateだからと言って「他のシートの図形から登録できない」わけでは無く、上記の方法で簡単に登録できますので、
=しかし、回答の[書式]に従って記述して登録(OK)しても、
「マクロ'(ブック名!)シート名.プロシージャー名'を実行できません。このブックでマクロが使用できないか、またはすべてのマクロが無効になっている可能性があります。」のメッセージがでて実行できませんでした。(しかし、ブック上の他のマクロ([Module1]に記載したプロシージャ(マクロ)は[図形クリック]で問題無く実行できます。)
=その後、色々と試行実験をして見た結果、以下の様な事が判明しました。((小生の環境では・・・)
既にある[シート名]上に記載した[Private Sub プロシージャ名]を、一旦 Private を除いて[Sub プロシージャ名]にして(当然、マクロダイアログ画面でもリストにも表示される)で図形に登録した後で、Private を付け加えた[Private Sub プロシージャ名]に変えたら、問題無く[図形クリック]でマクロが実行されました。
=正に、[第一回目の回答に尽きる]結果となりました。
>それほどPrivateにこだわる意味は無いように思います。
小生の質問にお付合い戴き、本当に、色々とありがとうございました。
No.2
- 回答日時:
こんばんは!
オートシェイプにマクロを登録する場合は
挿入したオートシェイプ上で右クリック → マクロの登録 → 新規作成
これでVBE画面に
Sub 挿入したオートシェイプ名_Click()
End Sub
と表示されますので、カーソルが点滅しているところに
必要なコードを記載するだけです。
※ フォームコントロールのコマンドボタンの場合は挿入すれば
VBE画面が表示されますのですぐにコード記載。
ActiveXコントロールのコマンドボタンでは
挿入したコマンドボタンをダブルクリック!
これでコード記載が可能になります。m(_ _)m
No.1
- 回答日時:
先ずは「Private」を除いて「Sub *****1_Click()」としておき、質問中の手順で登録。
どうしてもPrivateが良いのであれば、そのあとで追記しても大丈夫なようです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
Sub ***( ) と Private Sub ***( ) の違い
Visual Basic(VBA)
-
数式による空白を無視して最終行を取得するマクロ
Excel(エクセル)
-
private subモジュールを他のモジュールから呼び出して使う方法を教えてください(-.-)
Visual Basic(VBA)
-
-
4
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
5
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
6
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
7
複数の条件に合う行番号を取得するには
その他(Microsoft Office)
-
8
Excel VBA Outlookメール作成について
Excel(エクセル)
-
9
エクセルVBAで、条件に一致するセルへ移動
Excel(エクセル)
-
10
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
11
Private Sub内でSubをCallしたい
その他(プログラミング・Web制作)
-
12
Excel VBAでのWorksheet_Changeが動作しない原因
Excel(エクセル)
-
13
名前をつけて保存した後、元のファイルに戻るには
その他(コンピューター・テクノロジー)
-
14
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
15
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
16
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
17
エクセルvba (ByVal Target As Range)について
Excel(エクセル)
-
18
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
19
エクセルマクロで特定の範囲が空白という条件
Excel(エクセル)
-
20
Excelでの罫線のみのコピーについて
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
エクセルVBAで新規シートにマク...
-
5
ファイル名を今日の日付、時刻...
-
6
VBAを使ってエクセルシート...
-
7
ピボットグラフの書式の固定に...
-
8
【ExcelVBA】クエリの更新とピ...
-
9
Pictures.Insertメソッド⇒Shape...
-
10
EXCELにクリップボードにある画...
-
11
エクセルで「ODBC Microsoft Ac...
-
12
VBA[Private Sub]のコードをシ...
-
13
どのドキュメントは暗号化され...
-
14
別ブックからユーザーフォーム...
-
15
Wordのマクロから書式(O)⇒箇条...
-
16
VBAで棒グラフの色を変えたい
-
17
Excelのラジオボタンにチェック...
-
18
エクセル2007 テキストボ...
-
19
VBAでこのような図形の移動はで...
-
20
cellsで特定の離れた範囲を選択...
おすすめ情報
公式facebook
公式twitter
早速の回答、ありがとうございました。
自分でも、ご回答を追試した所、その通りでした。未知の回答で新たな知識になり助かりました。
只、小生としては、何故【Private Sub ****()】にコードを記載したか?と言うと、それなりの理由が有ります。
実は、VBE画面のプロジェクト画面の【Module上】では無く、【Sheet1(****)上】で(そのシートだけで利用する)コードなので、【Private Sub ****()】を、図形((オートシェイプ等)に登録したい」と思った次第です。(最初にキチンと説明しなくて申し訳有りませんでした)
以上、追加の質問で申し訳ありませんが、回答戴ければ、助かります。どうぞ、よろしくお願いいたします。