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

A1からN41までの大きさで、ある表を作成しています。表の上部に当たるA1からN5まではいくつかの見出しがあります。
また表の左側はA6からB41まで見出しがあります。そしてC6からN41までは各セルに罫線をつけ各セルに名前を入力するようにしています。
入力する名前は20人ほどあり、マクロを登録しているボタンで名前を入力できるようにしています。そしてその20個のマクロを記録したボタンをP7とQ7付近を先頭に10個、2列を縦に並べています。各セルに入力するときに下部の方は、5行目までをウィンドウ枠の固定をしていて表をスクロールして入力しています。
ただその時に必然的にマクロのボタンも移動するので半分ほどボタンが隠れてしまいます。
例えばボタンを、固定している1行目から5行目の間に置くか、表の下部の20行目くらいに縦に4個、5列並べると隠れないと思うのですが、できればスクロールしてもボタンがそのままの位置にとどまってくれればいいなと思っています。
先ほど書きましたようにP7とQ7付近を先頭に10個、2列を縦に並べた時、表をスクロールしてもボタンは元の位置にとどまって、ボタンが隠れないようにすることができるのでしょうか?
私はVBAには詳しくなくマクロの記録を利用して作成しています。ボタンは図形で作成しその図形に右クリックでマクロの登録をしています。
そんなエクセル初級の私が作成した表ですが、上記の事が出来たらと思い質問をさせてもらいました。
文章での表現なのでわかりにくいとは思いますがよろしくお願いします。

A 回答 (3件)

ユーザーフォームを使えば簡単ですが、覚えてみませんか?


画面をスクロールさせても、ユーザーフォームは位値を変えません。

マクロ編集画面で、
[挿入]→[ユーザーフォーム]

ここで、必要な個数のボタンを並べたウィンドウを作ります。
各ボタンのマクロは、作成したボタンをダブルクリックして書き込めます。
内容は

Private Sub CommandButton1_Click()
    Selection = "名前"
End Sub

これだけです。
ボタンの数だけマクロを用意します。

メインのシート上には、
そのユーザーフォームを表示させるためのボタンを配置。
そのボタンに割り当てるマクロは、

Sub ボタン1_Click()
    UserForm1.Show vbModeless
End Sub

これだけです。

以外と簡単だって思いません?
「マクロを登録しているボタンが常に同じ位置」の回答画像1
    • good
    • 0
この回答へのお礼

早速ご教授を参考に行ってみました。こういう事ができるのですね。
また一つエクセルに関して知識が増えました。
本当にありがとうございました。

お礼日時:2021/03/22 18:03

デザインモードでコントロールを右クリックして表示されるメニューから「セルの変化に合わせて移動やサイズ変更〜云々」というのを選択できたと思いますよ。



私はボタンやオブジェクトをあまり増やしたくないので、ボタンが一つや二つでは済まなそうな時は、セルをクリックしたりダブルクリックするイベントや値が変わった時のイベントをマクロのトリガーにしたりしています。

宜しかったら、そんな方法もありますよ程度で参考にしてみてください。
    • good
    • 0
この回答へのお礼

アドバイス、ありがとうございます。
参考にさせていただきます。

お礼日時:2021/03/24 09:37

こんにちは


>上記の事が出来たらと思い質問をさせてもらいました。

直接的な回答ではありませんが、20個のボタンの運用は大変では無いかと思います。
どのような時、条件でボタンを押すのか分かりませんが、20のマクロ 1つに纏める事が出来そうに思います。(20を2つかも)

多分、ボタンのある列などが出力(処理)対象になっていると推察出来るのですが、選択しているセル(列)など(取得・処理)条件を増やして
マクロを纏めて(条件などで処理を分ける)ボタンの数を減らすのは、どうでしょう。
記録マクロから一歩進む必要がありますが、、
複数のコードをコピペ(情報などはダミーで)して
まとめ方のアドバイスを探るのも1つの方法かも、、
纏めようのない処理だったらごめんなさい。
    • good
    • 0
この回答へのお礼

アドバイス、ありがとうございます。
参考にさせていただきます。

お礼日時:2021/03/22 18:04

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