• ベストアンサー

マクロで出来たら・・

こんにちは。質問させてください。 マウスだけで操作するキーボードってありますよね。あんな感じのものってマクロで出来ますか? 実際にやりたいことというのはエクセル上にコマンドボタンがあって、そのコマンドボタンを押すとそのボタンに書いてある文字(Caption)をA1セルに表示させたいんです。ボタンがひとつふたつなら自力でがんばろうと思っていますが、けっこー沢山あるので・・つい・・^^ すみませんがお力を貸してください。

質問者が選んだベストアンサー

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

こんにちは。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

ooc
質問者

お礼

出来ました(^o^)/ すばらしいです。感動しました!! ありがとうございましたm(__)m

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。#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

ooc
質問者

お礼

2度もお答えいただきましてどうもありがとうございました。 2番の方の方法で解決いたしました。お忙しいところ何度もありがとうございました。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんにちは。 >ボタンがひとつふたつなら自力でがんばろうと思っていますが、 サンプルコードを見せてくれませんか? それに、ボタンのCaption を表示して、マニュアルでも作るのでしょうか? そのボタンの種類がわかりませんが、For Each ~ In のループで取れば、タイプを選択して、.Caption を取ればよいのではありませんか?

ooc
質問者

補足

さっそくすみません。 サンプルコード・・・というレベルではございません。 自力で、と申し上げたのは、コマンドボタンに『あ』と書いてあってコマンドボタン1を押すとA1セルに『あ』と出るようには作れますが、ボタンの数が多いと大変なので一括で出来ないものかと質問させていただいたまでです。分かりづらい質問文で大変申し訳ございませんでした。

関連するQ&A