- ベストアンサー
マクロで出来たら・・
こんにちは。質問させてください。 マウスだけで操作するキーボードってありますよね。あんな感じのものってマクロで出来ますか? 実際にやりたいことというのはエクセル上にコマンドボタンがあって、そのコマンドボタンを押すとそのボタンに書いてある文字(Caption)をA1セルに表示させたいんです。ボタンがひとつふたつなら自力でがんばろうと思っていますが、けっこー沢山あるので・・つい・・^^ すみませんがお力を貸してください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。KenKen_SP です。 ソフトウェアキーボードのイメージですか? どうやら [コントロール ツールボックス]のコマンドボタンを使っているみたい ですね。 [表示]-[ツールバー]-[コントロール ツールボックス]のコマンド ボタンだと Excel では大変かもしれません。 ※コントロール配列を扱うことができないからです。例えば 50音 のボタンを作れば、50音分のコードを書かなければなりません。 (クラスモジュールを使う手法もあるにはありますが、、) 代替案として、、 1. VBEを起動し、標準モジュールに下記のマクロをコピー&ペースト 2. [表示]-[ツールバー]-[フォーム]のボタンを貼り付けて、1.の マクロを登録 3. 各ボタンのテキストを編集 はどうですか? フォームのボタンなら Application.Caller でマクロ を呼び出したボタン名が取得できますので、そのボタンのテキストを 取得することが可能です。 この手法なら必要なコードはひとつで済みます。 Sub Cmd_Click() On Error Resume Next 'Application.Caller でマクロを呼び出したボタン名 'を取得できます 'MsgBox Application.Caller strCaption = ActiveSheet _ .Shapes(Application.Caller).TextFrame.Characters.Text ActiveCell.Value = ActiveCell.Value & strCaption End Sub
その他の回答 (2)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。#1のWendy02です。 よくおっしゃっていることが分らないけれど、以下のようなことですか? KenKen_SPさんのおっしゃっているクラスで、オブジェクトにインスタンスを設けて、一括でする方法はあるけれど、なれていないと、結構面倒のものがあります。 Sheet1 のボタンがある場合 Private Sub CommandButton1_Click() Call Sheet1.TestSample1(1) End Sub Private Sub CommandButton2_Click() Call Sheet1.TestSample1(2) End Sub Private Sub CommandButton3_Click() Call Sheet1.TestSample1(3) End Sub Private Sub CommandButton4_Click() Call Sheet1.TestSample1(4) End Sub Sub TestSample1(arg As Integer) Dim myStr As String With Range("A65536").End(xlUp) myStr = OLEObjects(arg).Object.Caption If .Value = "" Then .Value = myStr Else .Offset(1).Value = myStr End If End With End Sub
お礼
2度もお答えいただきましてどうもありがとうございました。 2番の方の方法で解決いたしました。お忙しいところ何度もありがとうございました。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 >ボタンがひとつふたつなら自力でがんばろうと思っていますが、 サンプルコードを見せてくれませんか? それに、ボタンのCaption を表示して、マニュアルでも作るのでしょうか? そのボタンの種類がわかりませんが、For Each ~ In のループで取れば、タイプを選択して、.Caption を取ればよいのではありませんか?
補足
さっそくすみません。 サンプルコード・・・というレベルではございません。 自力で、と申し上げたのは、コマンドボタンに『あ』と書いてあってコマンドボタン1を押すとA1セルに『あ』と出るようには作れますが、ボタンの数が多いと大変なので一括で出来ないものかと質問させていただいたまでです。分かりづらい質問文で大変申し訳ございませんでした。
お礼
出来ました(^o^)/ すばらしいです。感動しました!! ありがとうございましたm(__)m