VBAで作ったCheckBoxesの名前を知りたい

このQ&Aのポイント
  • VBAで作成したCheckBoxesの名前を知りたい方法について教えてください。
  • VBAでCheckBoxesを作成し、クリックされたCheckBoxの名前を調べる方法についてお伺いします。
  • VBAで作成したCheckBoxesの名前を取得するための方法を教えてください。
回答を見る
  • ベストアンサー

VBAで作ったCheckBoxesの名前を知りたい。

VBAでCheckBoxeを3個作りsub checkをコールできる用にしました。 このsub checkのなかで今どのCheckBoxeがクリックされたか調べたいのですがどうすればいいでしょうか、 Sub main() With ActiveSheet.CheckBoxes.Add(10, 10, 20, 20) .Name = "CheckBox " & .Index .Caption = "" .OnAction = "check" End With With ActiveSheet.CheckBoxes.Add(10, 50, 20, 20) .Name = "CheckBox " & .Index .Caption = "" .OnAction = "check" End With With ActiveSheet.CheckBoxes.Add(10, 100, 20, 20) .Name = "CheckBox " & .Index .Caption = "" .OnAction = "check" End With End Sub Sub check() '// クリックされたcheckboxの番号が知りたい// End Sub

  • obone
  • お礼率51% (111/215)

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

  • ベストアンサー
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.3

>番号が知りたい// こちらの方がスマートですね MsgBox ActiveSheet.CheckBoxes(Application.Caller).Index

obone
質問者

お礼

ありがつございました。

その他の回答 (2)

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.2

>番号が知りたい// MsgBox Split(ActiveSheet.Shapes(Application.Caller).Name, " ")(1)

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.1

''// クリックされたcheckboxの番号が知りたい// Sub check()     MsgBox ActiveSheet.Shapes(Application.Caller).Name End Sub

関連するQ&A

  • Excel VBA チェックボックスの判断

    下記のようなマクロでチェックボックスを作成したのですが、その作成したチェックボックスをクリックしたときに、ある処理を実行させるようにするにはどうすればいいのでしょうか? よろしくお願いします。 Dim Max as Long Dim Cell as Range Dim Check as CheckBox ・ ・ ・ For i = 0 To Max   With Cell.Offset(i)   Set Check = ActiveSheet.CheckBoxes.Add_     (Left:=.Left,Top:=.Top, Width:=.Width, Height:=.Height)   End With   With Check   .LinkedCell = Cell.Address   .Caption = ""   .Value = False   End With Next

  • VBAのボタン操作について。

    For i=0 to 3 with Range("A" & (i+1)) with ActiveSheet.Buttons.Add(.Left,.Top,.Width,.Height) .caption="テストボタン" .OnAction="テストアクション" End with End wirh Sub テストアクション() MsgBox "あなたがクリックしたボタンは上から○番目のボタンです。" End sub 上記マクロを実行すると、セルA1,A2,A3にテストボタンが配置されます。 3つのボタンのどれかをクリックしたとき、テストアクションが実行されますが、 ○番目の○を求めるにはどうすればよいのでしょうか?

  • EXCEL VBA でマクロが作動するシートとしないシートがある。

    右クリックのショートカットメニューに作成したマクロを追加しました。その追加マクロを実行しても右クリックのショートカットに追加されないシートがあります。同じbookでもその他のシートでは、右クリックのショートカットメニューに追加されているものもあります。 なぜでしょうか? できないのは、右クリックのショートカットの表示です。目的の動作(下記の場合は、フォントの色を変える)は、どのシートでも作動します。 ちなみにプロシージャーは次のように書いています。PERSONAL.XLSに登録してあります。 宜しくお願いします。 'セルの右クリックショートカットメニューを作成 Sub 色々右クリック() 赤みぎクリック 黒みぎクリック 青みぎクリック End Sub Sub 赤みぎクリック() Dim Newb Set Newb = Application.CommandBars("Cell").Controls.Add() With Newb .Caption = "赤" .OnAction = "赤フォント" .BeginGroup = False End With End Sub Sub 赤フォント() Selection.Font.ColorIndex = 3 End Sub Sub 黒みぎクリック() Dim Newb Set Newb = Application.CommandBars("Cell").Controls.Add() With Newb .Caption = "黒" .OnAction = "黒フォント" .BeginGroup = False End With End Sub Sub 黒フォント() Selection.Font.ColorIndex = 1 End Sub Sub 青みぎクリック() Dim Newb Set Newb = Application.CommandBars("Cell").Controls.Add() With Newb .Caption = "青" .OnAction = "青フォント" .BeginGroup = False End With End Sub Sub 青フォント() Selection.Font.ColorIndex = 5 End Sub Sub Reset_RightClick() Dim rightBar As CommandBar Application.CommandBars("cell").Reset End Sub

  • Excell2010VBAmacro互換性

    マイクロソフトオフィス2010EXCELマクロについて質問させてください。 VBAマクロでマウス右クリック時にポップアップメニューを出し、 自作マクロを呼び出すようにしました。動作している。 このマクロを別PCのオフィス2013で動作させると、 マクロ内部ではポップアップメニューを作成動作している ようです(デバッグで通っていること確認)ようですが、 EXCEL画面上にはメニューが表示されません。 サンプルマクロは下記参照。 非互換または設定漏れがあるのでしょうか?   サンプルマクロ Sheet1 --------------------------------------- Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) Application.CommandBars("Cell").Reset '右クリックメニューを初期設定に戻す Call set_RightMenu '右メニュー登録 End Sub Module1 --------------------------------------- Sub reset_RightMenu() ' '右クリックメニューを初期化 ' Application.CommandBars("Cell").Reset End Sub Public Sub set_RightMenu() ' ' 右クリックメニューを設定する ' Call reset_RightMenu '右クリックメニュー初期化 With Application.CommandBars("Cell") _ .Controls.Add() .BeginGroup = True .Caption = "menu0" .FaceId = 682 .OnAction = "menu0" End With With Application.CommandBars("Cell") _ .Controls.Add(Type:=msoControlPopup) .BeginGroup = True .Caption = "SubMenu" With .Controls.Add(Type:=msoControlButton) .Caption = "menu1" .FaceId = 931 .OnAction = "menu1" End With With .Controls.Add(Type:=msoControlButton) .Caption = "menu2" .FaceId = 931 .OnAction = "menu2" End With End With End Sub Sub menu0 MsgBox "****** Menu 0 *******" End Sub Sub menu1 MsgBox "****** Menu 1 *******" End Sub Sub menu2 MsgBox "****** Menu 2 *******" End Sub

  • Excel VBA コマンドボタン

    質問させて頂きます。 現在コマンドボタンを作成したいと考えているのですがツールボックスからでは無く、コーディングで作ろうと考えています。 現在は下記のコードでコマンドボタンの作成までは出来たのですが + コマンドボタンの背景色/フォントカラー/フォントサイズの調整も加えたいと思っています。 下記のコードに上記要望を可能にする為にはどのようなコードを記述すれば宜しいでしょうか? よろしくお願いします。 With ActiveSheet.Buttons.Add(省略しました) .Name = "" .Caption = "" .OnAction = "" End With

  • エクセル2007で自前のツールバーを作る方法

    エクセル2000です。 以下のマクロで自前の新しいツールバーが作れ、作動します。 ところがエクセル2007ではうんともすんとも言ってくれません。 エクセル2007で使う場合はどのようにしたらよいでしょうか? ユーザーフォームで似たようなものを作る方法はわかるのですが、できれば以下の方法を使いたいのです。 Sub 三択メニュー() On Error Resume Next Application.CommandBars("選択します").Delete On Error GoTo 0 Application.CommandBars.Add Name:="選択します", Position:=msoBarFloating With Application.CommandBars("選択します") .Visible = True .Controls.Add Type:=msoControlButton With .Controls(1) .Style = msoButtonCaption .Caption = "⇒メニュー1 " .OnAction = "Msg_1" End With .Controls.Add Type:=msoControlButton With .Controls(2) .Style = msoButtonCaption .Caption = "⇒メニュー2 " .OnAction = "Msg_2" End With .Controls.Add Type:=msoControlButton With .Controls(3) .Style = msoButtonCaption .Caption = "⇒メニュー3 " .OnAction = "Msg_3" End With End With End Sub Sub Msg_1() Application.CommandBars("選択します").Delete MsgBox "追加コマンド1を処理しました。" End Sub Sub Msg_2() Application.CommandBars("選択します").Delete MsgBox "追加コマンド2を処理しました。" End Sub Sub Msg_3() Application.CommandBars("選択します").Delete MsgBox "追加コマンド3を処理しました。" End Sub

  • めっちゃ困ってます

    ソフトを使おうとしたのですがいきなりつまづきました。11行目の◎◎のところがまちがってる?という事らしいのですが、どなたかどうしたらなおるか教えていただけないでしょうか。 Sub MortalityMenu() DeleteMort Dim MortMenu As CommandBarControl Dim MainMenu As CommandBar Dim SecondMenu As CommandBarControl Dim HelpIndex As Integer Dim NewButton As CommandBarControl Dim IconSheet As Worksheet 'Set IconSheet = Worksheets("Sheet5") Set MainMenu = Application.CommandBars("Worksheet Menu Bar") ◎HelpIndex = MainMenu.Controls("Help").Index◎ Set MortMenu = MainMenu.Controls.Add(Type:=msoControlPopup, _ Before:=HelpIndex) MortMenu.Caption = "&Mortality" Set SecondMenu = MortMenu.Controls.Add(Type:=msoControlPopup) SecondMenu.Caption = "&P-spline" Set NewButton = SecondMenu.Controls.Add(Type:=msoControlButton) With NewButton .Caption = "Fit Model" .Style = msoButtonIconAndCaption .OnAction = "Graduation.RunPS" End With Set NewButton = SecondMenu.Controls.Add(Type:=msoControlButton) With NewButton .Caption = "Generate Scenario" .Style = msoButtonIconAndCaption .OnAction = "Graduation.AddScenPS" End With Set SecondMenu = MortMenu.Controls.Add(Type:=msoControlPopup) SecondMenu.Caption = "&Lee-Carter" Set NewButton = SecondMenu.Controls.Add(Type:=msoControlButton) With NewButton .Caption = "Fit Model" .Style = msoButtonIconAndCaption .OnAction = "Graduation.RunLC" End With Set NewButton = SecondMenu.Controls.Add(Type:=msoControlButton) With NewButton .Caption = "Generate Scenario" .Style = msoButtonIconAndCaption .OnAction = "Graduation.RunLCProjection" End With ' Set SecondMenu = MortMenu.Controls.Add(Type:=msoControlButton) ' SecondMenu.Caption = "&Add Mortality Data" ' SecondMenu.OnAction = "AddData.AddMortalitySheets" Set SecondMenu = MortMenu.Controls.Add(Type:=msoControlButton) SecondMenu.Caption = "&About CMI Software" SecondMenu.OnAction = "Graduation.ShowAbout" End Sub Sub DeleteMort() On Error Resume Next CommandBars(1).Controls("Mortality").Delete End Sub

  • Excel2003右クリックについて

    Excel2000でVBAを使って右クリックのメニューに項目を追加するマクロを作成したのですが、 Excel2003では右クリックでメニューが出てきません。なぜでしょうか?? Private Sub Workbook_Open() Dim cbMenuBar As CommandBar Dim cbGomaPop As CommandBarPopup Dim oGomaControl As CommandBarControl Dim cbGomaMenuItem As CommandBarButton Dim n As Integer Dim fExistGomaContextMenu As Boolean On Error Resume Next ' Add Goma Menu to Context Menu Set cbMenuBar = Application.CommandBars("Cell") ' Avoid Excel2003(beta) Error on Add Context Menu If Int(Application.Version) < 11 Then 'Check Goma Context Menu (Dic) Exist fExistGomaContextMenu = False For n = cbMenuBar.Controls.Count To 1 Step -1 If cbMenuBar.Controls(n).Caption = MITEM_DIC_CAPTION2 Then fExistGomaContextMenu = True Exit For End If Next n If fExistGomaContextMenu = False Then Set cbGomaMenuItem = cbMenuBar.Controls.Add(Temporary:=True) With cbGomaMenuItem .BeginGroup = True .Caption = MITEM_TRAN_CAPTION2 .OnAction = MITEM_TRAN_ACTION End With Set cbGomaMenuItem = cbMenuBar.Controls.Add(Temporary:=True) With cbGomaMenuItem .Caption = MITEM_OPT_CAPTION2 .OnAction = MITEM_OPT_ACTION End With Set cbGomaMenuItem = cbMenuBar.Controls.Add(Temporary:=True) With cbGomaMenuItem .Caption = MITEM_DIC_CAPTION2 .OnAction = MITEM_DIC_ACTION End With Set cbGomaMenuItem = cbMenuBar.Controls.Add(Temporary:=True) With cbGomaMenuItem .Caption = MITEM_DIC_CAPTION3 .OnAction = MITEM_DIC_ACTION2 End With End If End If End Sub おわかりになる方がいらっしゃいましたら教えて下さい。

  • フォームのCheck boxとOLEObjectのCheckboxのマクロの違い?

    エクセル2003です。 ワークシート上に複数個のチェックボックスを配置し、オンの場合、その左隣のセルの値を返すマクロを作成する場合についての質問です。 普段はフォームのCheck boxを使っています。 フォームのCheck boxなら Sub ChkBx() With ActiveSheet.CheckBoxes(Application.Caller) If .Value = xlOn Then MsgBox .TopLeftCell.Offset(0, -1).Value End If End With End Sub と、標準モジュールに一つだけプロシージャを書いて、複数個のCheck boxに同一のマクロを登録すれば簡単に出来ます。 ところがこれをOLEObjectのCheckboxでやってみようと思ったところ、フォームのように一つのプロシージャを使いまわすことができず、シートモジュールに以下のように各Checkboxごとのマクロを書かなくてはいけないようです。 Private Sub CheckBox1_Click() With OLEObjects("CheckBox1") If .Object.Value Then MsgBox .TopLeftCell.Offset(0, -1).Value End If End With End Sub Private Sub CheckBox2_Click() With OLEObjects("CheckBox2") If .Object.Value Then MsgBox .TopLeftCell.Offset(0, -1).Value End If End With End Sub Private Sub CheckBox3_Click() With OLEObjects("CheckBox3") If .Object.Value Then MsgBox .TopLeftCell.Offset(0, -1).Value End If End With End Sub 3つや4つくらいならどうってことはないのですが十数個もあるとかなり面倒です。 OLEObjectのCheckboxでももっと簡単にする方法はないのでしょうか? それともわたしが何かOLEObjectのCheckboxの使い方について思い違いをしているのでしょうか? ご教示をお願いいたします。

  • EXCEL VBA:シートの右クリックメニューへの追加方法

    (1)EXCEL VBAで、シートの右クリックメニューへの追加方法が下記の通り、ある本に載っていたので試してみましたが、うまく動作しません。 どこが間違っているか教えて下さい。  Sub シートの右クリックメニュー追加()  With CommandBars("Ply").Controls.Add  .Caption = "AAA(メニューの表示文字)"  .OnAction = "BBB(実行するマクロ名)"  .BeginGroup = True  End With  End Sub (2)上記「シートの右クリックメニュー追加」+BBBマクロをアドインへ組み込み、皆さんへ配布して、右クリックメニューで動作させたいのですが、やり方を教えて下さい。 宜しく、お願いします。

専門家に質問してみよう