[[20090520113117]] 『コマンドボタンの表示文字とボタン名』(ぽっけ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『コマンドボタンの表示文字とボタン名』(ぽっけ)
 シートにコマンドボタンを作成しました。
 更に、ボタンの表示文字(コマンドボタンオブジェクト、編集で入れられる文字)を『実行』としたい。
 このボタンで実行するマクロ『exitmac』を登録したいのですが、

 ボタン名の取得はどうすれば良いですか? (CommandButton3)
 ボタン名がわかれば、
 Private Sub CommandButton3_Click()
  call exitmac
 End Sub
 をモジュールに書き込むのは自分で出来そうなので教えて下さい。

 '指定したセルにボタンを作成する
 Sub AddButton()
     With ActiveSheet.Range("B3")
         ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False _
         , DisplayAsIcon:=False, Left:=.Left, Top:=.Top, Width:=.Width, Height:=.Height).Select
     End With
     With Selection
         .Placement = xlFreeFloating
         .PrintObject = False
     End With
     Range("B3").Select
 End Sub

 よく意味を理解していませんが、

 Private Sub CommandButton3_Click()
  call exitmac("commandbutton3")
 'とか
  call exitmac(commandbutton3)
 '等として、exitmacというプロシジャーにパラメータとして渡せばよいのではないですか?
 'このイベントプロシジャーのトリガーはCommandButton3ですから・・・・

 End Sub

 他には、コマンドバー「フォーム」のボタンを使う方法があります。
 これなら、Application.Caller ボタン名が取得できます。

 ichinose


 Sub AddButton()
 Dim CmdB As OLEObject
     With ActiveSheet.Range("B3")
         Set CmdB = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False _
         , DisplayAsIcon:=False, Left:=.Left, Top:=.Top, Width:=.Width, Height:=.Height)
     End With
     With CmdB
         .Placement = xlFreeFloating
         .PrintObject = False
         .Object.Caption = "あいうえ"
         .Name = "作ったボタン1"
     End With
     Range("B3").Select
 End Sub

 シートモジュール
 Private Sub 作ったボタン1_Click()
 MsgBox "あいうえ"
 End Sub
 BJ

 ichinoseさんへ(ぽっけ)
 exitmacは、ボタンを押した時に起動したいマクロ名です。
 ですから、
  Private Sub ボタン名_Click()
   call exitmac
  End Sub
 としてシートモジュールに書き込みたい。
 Application.Callerは使い方が分かりませんでした。

 BJさんへ
 Sub AddButtonを二回以上実行するとCommandButton1を作ってしまうようです。
 既にあるので、作らない様に出来ますか?
 結局現在シートのボタン名を取得しないと出来ないかも知れませんが、
 方法が相変わらず分かりません。


 >Sub AddButtonを二回以上実行するとCommandButton1を作ってしまうようです。
 でしょうね。
 提示されていたコードに書いてないので、それはそれで自分で書くと思っていました。

 >結局現在シートのボタン名を取得しないと出来ないかも知れませんが、
 ?????
 作った時にボタンに名前を付けているのに取得する必要があるのか
 考えてみてください。

 名前を付けたボタンがあるのかないのか確認すれば良いだけです。

 On Error Resume Next
 Set CmdB = ActiveSheet.OLEObjects("作ったボタン1")
 If Not CmdB Is Nothing Then Exit Sub
 On Error GoTo 0
 BJ

わかりました BJさんありがとう御座います。(ぽっけ)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.