• 締切済み

エクセル VBA

初歩的な質問ですいません。 エクセルVBAについてです。 沢山のオプションボタンを作ってそのどれを押しても、 同じアクションをするプログラムはどう書けばよいのでしょうか。 たとえば1個ずつでは Private Sub OptionButton1_Click() と書けばよいと思うのですが、 複数のボタンに同じアクションをする場合が良くわからないので、 どなたかお願いします。

みんなの回答

  • auty
  • ベストアンサー率58% (284/486)
回答No.1

グローバルな関数を作って、 それを各場所から呼び出します。 グローバル関数を作る場所は、たぶん    [VBAProject]を右クリック、[挿入]- [標準プロジェクト] を選択だったと思います。

MrTakuya
質問者

お礼

早速のご回答ありがとうございました。 参考にさせていただきます。

関連するQ&A

  • Excel VBA オプションボタンについての質問です。

    Excel VBA オプションボタンについての質問です。 以下コードで実行時エラー424 オブジェクトが必要です。 が発生して困っています。 Private Sub AB_optionClick()  MsgBox OptionButton3.Value End sub オプションボタンの利用方法がいまいち理解出来ていません。 アドバイスよろしくお願いいたします。m(_ _)m

  • エクセルVBAマクロのオプションボタンについて

    オプションボタンのマクロに関して教えて下さい。 マクロのスキルレベルは、新しいマクロの記録を多用して、マクロを組むレベルです。 「表示-ツールバー-フォーム」から選ぶオプションボタンを使って、オプションボタンAが押されている場合とBが押されている場合で、処理を変えたいのですが、そのオプションボタンの値をどうやっても拾えません。 色々検索した結果、以下のマクロでできる気がしたのですが、駄目でした。 Private Sub OptionButton1_Click() オプション1 = True End Sub Private Sub OptionButton2_Click() オプション2 = True End Sub Sub オプションボタン() If オプション1 = True Then Range("a1") = 1 ElseIf オプション2 = True Then Range("a1") = 2 Else Range("a1") = 0 End If End Sub 作ったオプションボタンを右クリックしてマクロ登録を選ぶと、「オプション1_Click」となっているので、「OptionButton1_Click」を「オプション1_Click」に変えてみたのですが、やっぱり駄目でした。 ネットではユーザフォームを使ったマクロ例はあるのですが、そのまま使用するオプションボタンの例がありません。できればユーザフォームは使いたくありません。 ご存知の方がいらっしゃいましたら、教えて下さい。よろしくお願いします。

  • excel VBA 作成したUserFormにoptionButton

    excel VBA 作成したUserFormにoptionButtonを多数配置しています。このUserFormをワークシート上に再表示すとる、チェック項目に入力したチェックが消えてしまいます。消えない方法が解りません。 private sub OptionButton1_Click() Activesheet.Shapes("図形1").Visible=False '図形1表示 End sub private sub OptionButton1_Click() Activesheet.Shapes("図形1").Visible=True  '図形1非表示 End sub  同様な書式で数項目あります。 又、保存したワークシートを読み込んだ場合も同様に出来ないでしょうか。optionButtonのチェック項目が多数あります。チェック項目は図形を表示と非表示です。何方か良い方法がありましたら教えて頂けないでしょうか。宜しくお願いします。

  • エクセルVBAでユーザーフォーム

    エクセルVBAでユーザーフォーム上にオプションボタンが2つ、コンボボックスが6つあります。 OptionButton1をクリックした場合のComboboxの動きの制御について以下のように書いてみました。 これでも期待通りCombobox1~3は動き4~6は動かなくなります。 ただ、もっと別の簡単な書き方があるのではないかと思い質問しました。 宜しくお願いします。 Private Sub OptionButton1_Click() ComboBox1.Enabled = True ComboBox1.ListIndex = 0 ComboBox2.Enabled = True ComboBox2.ListIndex = 0 ComboBox3.Enabled = True ComboBox3.ListIndex = 0 ComboBox4.Enabled = False ComboBox4.ListIndex = 0 ComboBox5.Enabled = False ComboBox5.ListIndex = 0 ComboBox6.Enabled = False ComboBox6.ListIndex = 0 End Sub

  • Excel VBA OptionButton

    Excel VBAのOptionButtonについてお伺いします。 現在、Excel2007にてユーザーフォームを作成しております。 シート上の文字によって、ユーザーフォーム上のオプションボタンの ON/OFFを切り替えたいのですがうまく動作しません。 具体的には・・・・ ユーザフォーム上のCommandButton1を押下すると、 sheet2のE22セルの文字がTRUEの場合、ユーザーフォーム上の OptionButton1がON・OptionButton2がOFF sheet2のE22セルの文字がFALSEの場合、ユーザーフォーム上の OptionButton1がOFF・OptionButton2がON 以下のように考えていたのですが、動作しません。 ------------------------------ Private Sub CommandButton1_Click() If sheet2.Range("E22").Value = "TRUE" Then OptionButton1.Value = True ElseIf sheet2.Range("E22").Value = "FALSE" Then OptionButton2.Value = True End If ------------------------------ お知恵お借りしたく存じます。 宜しくお願い致します。

  • エクセル VBA

    初歩的な質問ですいませんが、 複数のオプションボタンで、 同じアクションをするVBAはどのように書けばよいのでしょうか。 withEventによる クラスモジュールを使うほか方法はないのでしょうか。 使わなくても良い方法があれば、それもお願いします。

  • エクセルVBAについて

    エクセルのVBAについて、質問させて下さい。 下記コードはform上に記述しました。 オプションコマンドのオブジェクト数をcaseで選択し、その選択したものを格納しています。 Private Sub CommandButton1_Click() Dim i As Long lngData(1) = 0 For i = 1 To 12 If Me.Controls("OptionButton" & i).Value Then lngData(1) = i Exit For End If Next Select Case lngData(2) '←次のUserForm Case 1 Unload Me UserForm2.Show ・・・・ End Select End Sub でまた別form上で呼び出しているのですが、 この時にオプションコマンドcaptionを格納するにはどういったコードになるのでしょうか? またそれに際してコードに変更がある場合も教えてください。 素人質問ですので、そもそもオプションボタンのcaptionは格納なんてできないのなら諦めます。 では、よろしくお願い致します。 以上

  • Access 1つのイベントに複数のVBA

    こんにちは! Accessについて、質問です!! あるフォームの『修正』というボタンのクリック時プロパティに、以下のVBAが組み込まれています。 Private Sub 修正_Click() CopyRec End Sub ここに新たに、 『メッセージボックス』『ウインドウを閉じる』VBAを加えたいのです。 現状として…… (1)Private Sub 修正_Click() CopyRec MsgBox "修正が完了しました" End Sub (2)Option Compare Database (下線) Private Sub 修正_Click() CopyRec End Sub Option Compare Database (下線) MsgBox "修正が完了しました" End Sub 上記(1)(2)は、失敗しています。 質問は2つあります。 (1)1つのプロパティに、複数のVBAを設定するのは可能ですか?可能なら、どのようにVBAを入力すれば正常作動するのでしょうか? (2)『ウインドウを閉じる』VBAの書き方が調べても分かりませんでした……。どのように入力するのですか? どちらか1つが分かる方でもかまいません。 回答よろしくお願いします!

  • エクセルのVBAについて教えてください。

    以前に下記のような内容のプログラムを作成したいと投稿致しましたら dim row as Integer for row = 1 to 65535 if (selectSheet.Cells(1, row) = "") then selectSheet.Cells(1, row) = "#####" EndIf をアレンジしたいのです。 上記のプログラムが構築されているコマンドボタンと同じuserformにオプションボタンを5個、コンボボックスを一つ作りました。 オプションボタン1を選択するとコンボボックスにはあ行が。 オプションボタン2を選択するとコンボボックスにはか行が。 オプションボタン3を選択するとコンボボックスにはさ行が。 オプションボタン4を選択するとコンボボックスにはた行が。 オプションボタン5を選択するとコンボボックスにはな行が。 選択できるようにしたいのです。 次に選んだオプションボタンと同名前のシートに上記の#####が入力されるようにしたいのですが、どのようにすればいいのですか? このように教えて頂きました。 Public myop As Integer 'オプション選択保持用 Private Sub CommandButton1_Click() Dim row As Integer Dim mykey As String '比較キー '選択したオプションボタンにより '比較キーと選択保持用変数に各値を代入 Select Case True Case OptionButton1: mykey = "[あ-お]*": myop = 1 Case OptionButton2: mykey = "[か-こ]*": myop = 2 Case OptionButton3: mykey = "[さ-そ]*": myop = 3 Case OptionButton4: mykey = "[た-と]*": myop = 4 Case OptionButton5: mykey = "[な-ほ]*": myop = 5 Case Else: myop = 0 End Select If myop = 0 Then Exit Sub For row = 1 To 65535 If ActiveSheet.Cells(1, row).Value Like mykey Then ActiveSheet.Cells(1, row) = "#####" End If Next row End Sub これを流用して自分でいじりたいのですが、私が未熟ですので、コードの意味、役割がさっぱりわかりません。 わがままな質問ではございますが、どなたか上記のコードの意味を教えて頂けませんか? よろしくお願い致します。

  • VBA EXCEL optionbuttonの選択

    現在オプションボタンにて設定下記のようにしています。 オプションボタンをいくつか設置しており、どれか選択すると下記のコードへ飛んできます。 どれか選択すると、enabledをtrueにし、OKボタンをクリックできる。そしてどのオプション ボタンを選択したのか他のモジュールから確認する為tagにその痕跡を残すように設定しています。 Public Sub OptionButton1_Click() 'オプションボタン選択動作。OKボタンを有効へ Cmd_ok.Enabled = True OptionButton1.Tag = True End Sub Public Sub OptionButton2_Click() 'オプションボタン選択動作。OKボタンを有効へ Cmd_ok.Enabled = True OptionButton2.Tag = True End Sub Public Sub OptionButton3_Click() 'オプションボタン選択動作。OKボタンを有効へ Cmd_ok.Enabled = True OptionButton3.Tag = True End Sub ****************** そして下記のコードでどのオプションボタンが選択されたのか確認しています。 For i = 1 To 3 If UserForm1.Controls("OptionButton" & i).Tag = True Then xxx = i End If Next i ******************** 一番上にある『OptionButton1.Tag = True』と設定しているものを選択されたオプションボタン からみて相対的な表現に変更できないでしょうか? 意味としては『現在選択されているオプションボタンのtag = true』といった表現です。 現状でも目的は果たせますが、これからボタンが複数になった場合、オプションボタンのオブジェクト名を変更しなくなった時に手間がしないようにする事が目的です。 もしくはもっとスマートなコードがあれば歓迎です。 ご指導お願いします。

専門家に質問してみよう