プロが教えるわが家の防犯対策術!

Excelシート上に、フォームコントロールのボタンを置いてマクロを登録すると
実行するのに便利なのですが、
スクロールやオートフィルタで特定の値でフィルタした時などに、
ボタンが見えなくなってしまいます。
ウィンドウ枠の固定で常に固定される領域にボタンを置くのも手なのですが、
どうしてもレイアウト的に無理がある時もあります。

ちなみに、A列だけボタンを置く領域とするとボタンが縦に配置できますが、
行数が多い表の場合、フィルタやスクロールでボタンが見えなくなってしまいます。

常にボタンを見えるようにする方法はないでしょうか?
ボタンを配置したオブジェクトを集計表の上に浮かせて置ければ良さそうなのですが。
(浮かせて、という意味は、自由にマウスでボタンセットを移動できれば表の邪魔にならないといういう意味です。)

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

  • どう思う?

    mygoonickname さん

    今は、コンボボックスで選択肢から選んでから、
    「実行」と書かれたコマンドボタンをクリックして値毎の処理をしています。
    これはうまく行きましたので助かりました。

    使っていて思ったのは、
    コンボボックスで選択肢から選んだ直後に処理に飛ばす事は可能でしょうか?
    それが出来れば「実行」ボタンを無くせます。
    ご存じでしたらよろしくお願いいたします。

    No.3の回答に寄せられた補足コメントです。 補足日時:2021/11/22 12:06

A 回答 (7件)

こんばんは。



どの様な方法が良いかにもよりますが、
シート上以外では、ダメでしょうか?

小さなユーザーフォームを表示しておく方法。フォームをモードレスで表示
https://atmarkit.itmedia.co.jp/ait/articles/1410 …

リボンにマクロのボタンを設置する方法、
https://hamachan.info/win7/excel/macro.html
    • good
    • 0
この回答へのお礼

ありがとうございます。
>小さなユーザーフォームを表示しておく方法
この方法が画期的な発見でした。

今までは、例えば”E2”セルの値に応じて処理をするマクロ1を設定していたのですが、今回以下の様にコンボボックスで選択肢を用意出来る事が分かりましたので、
Private Sub UserForm_Initialize()
With ComboBox1
.AddItem "りんご"
.AddItem "みかん"
.AddItem "バナナ"
.AddItem "マンゴー"
End With
End Sub

この値に応じてマクロ1を実行するにはどうしたら良いでしょうか?
ちなみにE2の値に応じて動作するマクロは以下の様なソースです。
Sub マクロ1()
Select Case Range("E2").Value
Case "りんご"
 処理
Case "みかん"
 処理
Case "バナナ"
 処理
Case "マンゴー"
 処理
End Select
End Sub

UserForm1内のComboBox1に応じて、マクロ1の分岐が出来ないでしょうか?

お礼日時:2021/11/21 20:34

#5です


>リボンの設定は各PCで行う必要がありそうですね。

いえ、設定されたブックが開く時のインスタンスで設定するので
そのブックのみに反映されます。従ってPC設定は不要ですが、バージョンの互換性には問題があり、現行バージョンで作成すると2016以降なら、、みたいになると思います。(確認していません)
いづれにしても、不具合対策でWindowsAPIでレジストリー登録したりする必要もあるので気軽ではありませんね。
そのようなことも出来る程度の認識で、将来、アプリやアドインなどとして配布を考えた時に思い出せれば、幸いです。
    • good
    • 0
この回答へのお礼

ありがとうございます。
今の環境は、全スタッフOffice365で統一されてますので、
ブック毎にリボン設定が活きるのであれば活用できそうです!

お礼日時:2021/11/22 18:06

こんにちは。



下記があります。
選んだ直後に、マクロが走ります。
選んだ項目が問題ないかを確認してからが良いかと思って、コマンドボタン
を配置してをお勧めしていました。

Private Sub ComboBox1_Change()
処理
End Sub
    • good
    • 0
この回答へのお礼

そんな簡単に解決できるんですね。
確かにうまく行きました!
両方の方法が知れて良かったです。
ありがとうございます。

お礼日時:2021/11/22 16:47

こんばんは


直接の回答ではありません。
代替え案として、少しハードルが上がりますが、リボンをカスタムしてユーザーフォームの様にすることが出来ます。
リボンにはボタン、リストボックスやコンボボックスなどなどコントロールを作成配置する事が可能でそこからVBAを実行する方法もあります
不要な既存機能(リボン操作)を排除する事も可能なので、専用アプリケーションのような仕上がりになります。
参考 https://www.ka-net.org/blog/?cat=1
    • good
    • 1
この回答へのお礼

ありがとうございます。
リボンの設定は各PCで行う必要がありそうですね。
ブックを開いた全てのPCに反映できれば便利ですね。

お礼日時:2021/11/22 16:46

>フォームコントロールのボタンを置いてマクロを登録すると



これを

Excel VBA 右クリックメニューにマクロ実行メニューを追加する
https://kosapi.com/post-978/



Excel VBA ファイルを開く時にマクロを自動実行する方法
https://officedic.com/excel-vba-fileopen-autoexe …

で設定し

Excel VBA ファイルを閉じる時にマクロを自動実行する方法
https://officedic.com/excel-vba-fileclose-autoex …

で解除する。
右クリックに追加する呼び出すマクロは従来あるもので宜しいのでは?
    • good
    • 1
この回答へのお礼

なるほど。右クリックメニューで実行できれば、画面の位置に関わらずいつでも実行できますね。
色々応用できそうです。
ありがとうございます。

お礼日時:2021/11/22 16:44

こんばんは。



ComboBoxの他に、コマンドボタンを配置した方が無難かと思います。

https://support.microsoft.com/ja-jp/office/%E3%8 …

Private Sub CommandButton1_Click
Select case ComboBox1.Value
Case ”リンゴ”
処理
Case "みかん"
処理


End Sub
この回答への補足あり
    • good
    • 0
この回答へのお礼

なるほど!
選択肢をユーザフォーム上で行うなら、実行ボタンも同じフォームで行う方が正しそうですね。テスト成功しました。
ありがとうございました。

お礼日時:2021/11/21 21:31

> ウィンドウ枠の固定で常に固定される領域にボタンを置くのも手なのですが、


これ一択に思います。例えば11列目より下だけを選択してオートフィルタの対象(11列目を見出し)とし、11列目から上を固定表示としボタンを配置というくらいしか、やりようか無いかと思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。
他の回答者さんからも色々な方法をアドバイスしていただいてます。
奥深いですね。

お礼日時:2021/11/22 16:45

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

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


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