- ベストアンサー
エクセルVBAで1つのシートでボタンを押してセルに値を入力する方法
- エクセルVBAを使用して、1つのシート上で複数のボタンをクリックし、それぞれのボタンに対応したセルに値を入力する方法を教えてください。
- 現在、別のシートを作成してボタンを配置し、それぞれのボタンに対応したセルに値を入力していますが、1つのシートで実現したいと考えています。
- sheet(1)以外の各シートのデータは同じであり、ボタンを押して入力するセルを変える必要があります。これを実現する方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
gon2014さん こんにちは。 命令はもっとコンパクトにできますが、今のプログラムを使用して使用シートを2つに限定するように修正すると以下の通りになります。 Public 目標セル As Range Sub sheet2を開く() Set 目標セル = Range("F8") Worksheets(2).Select End Sub Sub sheet3を開く() Set 目標セル = Range("H8") Worksheets(2).Select End Sub : : Sub 入力1() 目標セル = "データ1" 目標セル.Select End Sub Sub 入力2() 目標セル = "データ2" 目標セル.Select End Sub Sub 入力3() 目標セル = "データ3" 目標セル.Select End Sub 注) ・テストはしていません。 ・サブルーチン名は変更した方が分かりやすいかと思います。 sheet2を開く → btnXXXXXX_Click XXXXXXには分かりやすい名前を付けて下さい。 お試し下さい。
その他の回答 (1)
- misatoanna
- ベストアンサー率58% (528/896)
>ボタンをクリックして開く別のシートにも複数のボタンがあり、その >うちの任意のボタンをクリックすると、そのボタンの値がsheet(1)の >それぞれのボタンに対応したセルに入力・・・ ボタンの値って何でしょうか。ボタンのある行の特定セルの値ですか? また、sheet(1)のそれぞれのボタンに対応したセルとは? ご質問の文章だけでは正確な状況がわかりませんの、とりあえずマクロ 記述を少なくする参考例です。 Sheet2に下図のようなレイアウトでボタンとデータがあるとします。 ボタンはすべて[フォーム]のボタンであることが前提です。 ボタンすべてに、次のマクロを登録します。 ------- Sub Test() Dim nm As String, ad As String nm = ActiveSheet.Shapes(Application.Caller).Name ad = ActiveSheet.Buttons(nm).Caption Worksheets("Sheet1").Range(ad).Value _ = ActiveSheet.Buttons(nm).TopLeftCell.Offset(0, -1).Value End Sub ------- ボタンをクリックすると、Sheet1 に ・Sheet2でクリックしたボタンの文字と同じ番地のセルに ・そのボタンの左隣りのセルの値が 入力されます。
お礼
早々のご質問ありがとうございました。 しかも図入りで感謝いたします。 初心者には難しいコードで理解するのに時間がかかりました。(まだよく理解できていませんが・・・) 教えていただいたとおりにやってみて、動作はわかったのですが、求めていたものとは違うものでした。 私の説明が下手なせいだと思います。 せっかくお時間をとっていただいたのに申し訳ないです。 でも教えて頂いたコードは別件で役に立ちそうです。思いがけず良いコードを学ぶことができました。 今回のものについては、もう少し頑張ってみます。 ありがとうございました。
お礼
出来ました! まさに望んでいたことが出来ました! 感謝感激です。 これでファイルがスッキリします。 ありがとうございました!
補足
早々のご回答ありがとうございました。 お礼がおそくなって申し訳ありません。 一番目の方に教えていただいたものを試し終わりましたので、明日か明後日に、jcctaira様に教えて頂いたものを試してみます。 後日報告を兼ねて、改めてお礼させて頂きます。