• 締切済み

VBAユーザーフォームの操作について

いつもお世話になっております。 VBAでユーザーフォームのチェックボックス使用したデータを作成しています。 ●ユーザーフォームの仕様  1.各県名ごとにフレームを作成し、フレーム内に市名と全選択のチェックボックスを配置  2.各フレームの全選択のチェックボックスにチェックを入れると、フレーム内の市名のチェックボックスにチェックが入る  3.フレーム外の全選択のチェックボックスにチェックを入れると、全チェックボックスにチェックが入る。 ●オブジェクト名 ・フレーム  Frame1:神奈川県 Frame2:茨城県 Frame3:栃木県 ・チェックボックス  CheckBox1:フレーム外の全選択  CheckBox2~4:各フレームの全選択  CheckBox5~11:市町村名(横浜市~小山市の順) ●プロシージャ 1つ1つの動作をIFステートメントを使って記述しています。 ※IFの中身については、チェックボックスの数がもっと多ければ For Nextなんかを使ってもっとスッキリできますが、今回は数か少ないので羅列しています。 以上に関して、貼付ファイルのようなコードを記述してみました 一応仕様を満足する動作はしてくれるようですが・・・ ご指摘がありましたら、よろしくお願いします。

みんなの回答

回答No.1

IF A=True Then  B=True  C=True Else  B=True  C=True End If  ↓ B=A C=A  ↓ Dim isTrue As Boolean isTrue=A B=isTrue C=isTrue 2番目の書き方もありでしょうが、私のお勧めは3番目。理由は、2番目は判定の都度にフォームを参照するからです。3番目の場合は、フォームの参照は一度だけ。加えて、isTrue はメモリに配置されずにスタックエリアに記憶されるかも知れません。まあ、大した違いはありませんが・・・。

genta1019boston
質問者

お礼

早速の回答ありがとうございます。

関連するQ&A

  • VBA ユーザーフォームの値の取得方法

    いつもお世話になっております。 以下のような仕様のVBAコードを作成したいと考えています。 (貼付資料も参照してください) ■仕様  (1)ユーザーフォーム   1.処理の対象となる市名をチェックボックスから選択   2.処理の対象となるシート名をコンボボックスから選択  (2)ユーザーフォームで選択した    選択したシートの対象市名のデータを配列に格納  (3)格納した配列を元に一覧、詳細の表を作成 ■オブジェクト  ●ユーザーフォーム  ・フレーム   Frame1:神奈川県 Frame2:茨城県 Frame3:栃木県 Frame4:対象年度  ・チェックボックス   CheckBox1:フレーム外の全選択   CheckBox2~4:各フレームの全選択   CheckBox5~11:市町村名(横浜市~小山市の順)  ・コンボボックス   ComboBox1:対象年度  ●ワークシート ■不明な事  (1)⇒(2)の処理(ユーザーフォームで選択した項目を他のプロシージャで使用する)  について質問させていただきます。  私の頭の中では、  I.パブリック変数を用意して、CheckBoxやComboBoxで選択した項目を格納  II.プロシージャ引数として・・・  の2つの方法が候補として浮かんでいます。  Iに関して  CheckBox1:対象年度については、オブジェクトが1つしかないので、  適当なパブリック変数(今回はmySh)を用意して、  mySh=Combobox1.Value  とすれば、仕様は満たせると思いますが、  CheckBoxに関しては、数が多いので,どのようにすれば良いのかイマイチ分かりません。  IIに関しては、全く見当が付きません。 ■質問  (1)上記の処理を行う場合は、I又はIIの方法で問題無いでしょうか?  (2)I又はIIの方法の優劣はあるのでしょうか?  (3)I、IIの方法を教えてください。 どうぞよろしくお願いします

  • VBAユーザーフォームのチェックボックスについて

    いつもお世話になっております。 VBAのチェックボックスについてお尋ねします。 貼付ファイルのようなユーザーフォームを作成しました。 フレーム1(TEST1)に 1.CheckBox1(全選択) 2.CheckBox2 3.CheckBox3 フレーム2(TEST2)に 4.CheckBox4(全選択) 4.CheckBox5 5.CheckBox6 フレーム外に 6.CheckBox7(全選択) があります。 フレーム1のCheckBox1にチェックを付けるとCheckBox2とCheckBox3にチェックが入り フレーム外のCheckBox7にチェックを付けると全てのCheckBoxにチェックが入るようにしたいのですが。 どなたかご教授をお願いします。

  • エクセルVBA ユーザーフォームのチェックボックス

    エクセルVBAのユーザーフォームのチェックボックスについて教えてください。 frame1の中にCheckbox1~5があるのですが、以下のように指示したいです。 Checkbox1~4は自由にチェックできるようにしておいて、Checkbox1~4の全てにチェックが入った場合に、Checkbox1~4の全てチェックを外し(False)、その代わりCheckbox5を自動的にチェックを入れたいです(True)。 CommandButtonなどをクリックして初めて変化するのではなく、ユーザーフォームにチェックを入れている間に自動的にチェックを入れたり外したいです。 特に「Checkbox1~4の全てにチェックが入った場合」というのを、どこに入力するのか分かりませんでした。 1箇所だけならPrivate Sub CheckBox1_Click()と始めたら良いんだとおもうのですが。。。 よろしくお願いします

  • ExcelVBA ユーザーフォームに関しての質問です。

    ExcelVBA ユーザーフォームに関しての質問です。 ユーザーフォームでフレームを使って、 フレーム内に複数のチェックボックスを配置したとします。 行いたい作業としては次の2点 ?フレーム内に配置したチェックボックスのうち、チェックが入っているものだけの数を調べる ?チェックが入っているボックスの値(caption)を取得して、変数に入れる 以上のことができるでしょうか?

  • マクロ VBA ユーザーフォーム 

    いつも大変御世話になっております。 WiindowsXP環境にある【D:\】フォルダ内に【マクロ.xls】があります。 その中にユーザーフォームがあり、そこにはチェックボックスとコマンドボタンがあります。 コマンドボタンを押すと、そのユーザーフォーム内でチェックされたチェックボックスの数を 取得して変数Check_Numberに格納する処理を入れたいのですが、取得方法がわかりません。 例:チェックボックスを2つチェックした状態でコマンドボタンを押すと、【2】が   変数Check_Numberに格納される。 コマンドボタン実行プログラムをこんな↓感じで書きましたが、 これではチェックボックス総数が変更する度に Check_Number_SUMの値を変更しなければいけない為、 汎用性に欠けます。 Private Sub CommandButton1_Click() Dim Check_Number_SUM As Long Dim Check_Number As Long Dim i As Long 'チェックボックス総数設定 Check_Number_SUM = 2 'チェックボックス総数取得 For i = 1 To Check_Number_SUM If Me.Controls("CheckBox" & i).Value = True Then Check_Number = Check_Number + 1 End If Next i MsgBox Check_Number End Sub もっと汎用性が高いコード設計は可能でしょうか? もしご存知の方がいらっしゃるようでしたら、お手数ですがご教授願いますでしょうか? 以上、何卒宜しくお願い致します。

  • EXCEL VBA ユーザーフォームについて

    仕事上システムを作り始めたVBA初心者です。すみませんが、ご教示下さい。 選択した「1の行」のC1をクリックしたときにユーザーフォームを起動させて入力しその行のセルに、数字の1を反映させたいと思っています。 その行は1で終了で今後足していきません。他の行に移ります。 フォームだけは作ってみたのですが反映の仕方がわかりません。 選択項目が多いので、2ページで作りました。 Page1 C1にテキストボックスで「#1」、D1に「#2」(記入ない場合有り)、F1に「#3」(記入ない場合有り)、H1にチェックボックス#4(選択ない場合有り)。 獲得コーナーのI1~Z1まで「Frame1」のグループどれか一組、チェックボックス(I1・J1・K1 3個ずつの連続)。3個中、左以外は記入ない場合有り。いずれかのグループに必ずチェック。 内訳の「Frame2」AA1~AK1のオプションボタン一つ必ず選択。 Page2 「Frame3」AL1、AM1、AN1で、オプションボタン一つ必ず選択。 「Frame4」チェックボックス複数選択「#11」AO1・PO1、 「#12」AQ1・AR1、「#13」AS1、AT1(記入ない場合有り) 「Frame5」AV1~AZ1複数選択 「Frame6」BA1~BC1複数選択 「Frame7」BD1~BE1複数選択 「Frame8」BF1~BI1オプションボタン一つ必ず選択。 選択後右下のコマンドボタンの「OK」ボタンで反映させたいと思っています。 選択セルが全てC列なのですが、複数選択する場所があるのと、シートが1日~31日と多いのです。(中身は全て一緒です。) 何を記入するとその行のセルに反映されるのかわからなかったのでご教示いただきたく思います。

  • Excel VBAのユーザーフォームについて

    Excel VBAでユーザーフォームを作成しています。 ユーザーフォームで出力したファイル 「出力ファイルA」 ユーザーフォームで使用するファイル 「ファイルB」 を、起動していると必ず「インデックスが範囲内にありません」 といった内容のエラーが表示されます。 ユーザーフォームで使用するファイルの表示中に そのようなエラー画面が出てきても仕方がないと思うのですが、 ユーザーフォームはマルチ画面を作成したので ファイルは「出力ファイルC」も出すことができる仕様です。 また、「出力ファイルA」「出力ファイルC」は コンボボックスで選択した西暦がファイルの先頭に付くので (例:2014_出力ファイルA.xls) 必ず同じファイル名が出力されるとは限りません。 なので、そのようなエラーが表示されないようにしたいのですが可能でしょうか? また、特別なコードは記述していないのですが、 なのでボタンとかコンボボックスのコードを書けばよいのか・・・という感じなのですが、 どのように対処すればよいかわかりません。 それと、出力したファイルの内容を確認するためにアクティブには、 ユーザーフォーム画面を終了させるしかならず、 そもそもそうゆう仕様なのかがわかりません。 ユーザーフォームを作成するのは初めてなので初心者丸出しで お恥ずかしい限りなのですが、 どなたかアドバイスいただけますと幸いです。 こんな抽象的ですが、どうお伝えすればよいのかがそもそもわからず困っていて、 それに時間もなく頭を抱えているので お手柔らかに願います。 よろしくお願い致します。

  • ユーザーフォームいろいろについて

    いろいろ手探りでVBAでユーザーフォームを作成し コマンドボックスによりテキストボックスを指定のセルへ転記し ユーザーフォームを終了させるという簡単ですがプログラミングをしました。 さらに、下記のことができたらと思ってるのですがどうしたら良いのかわかりません。 1.2種類のユーザーフォームを作成し、ファイルを開くと  選択肢ウィンドウが現れ選択したほうのユーザーフォームが開く 2.チェックボックスまたはラジオボタンで選択された項目を  指定のセルへ○を反映させたい。 以上のことを加えたいのですが、できますでしょうか。 つたない説明ですが御回答の程宜しくお願い致します。

  • エクセルVBAで

    お世話になります。 エクセルVBAで簡易プログラムを作成しています。 その中でユーザーフォームを作り、チェックボックスで 6項目からどれか一つ選択する様な仕組みを作っています。 利用者が二つ以上選択(チェック)出来ない様にしたいの ですが、どの様にすれば良いでしょうか。 ちなみに今の記述は下記の様になります。 ご教授下さいます様、宜しくお願い致します。         記 If CheckBox1 = False Then If CheckBox2 = False Then If CheckBox3 = False Then If CheckBox4 = False Then If CheckBox5 = False Then If CheckBox6 = False Then MsgBox "どれか選択して下さい!" GoTo err_jmp Else: mytoki = "3年前から" End If Else: mytoki = "2年前から" End If Else: mytoki = "1年前から" End If Else: mytoki = "半年前から" End If Else: mytoki = "1週間前から" End If Else: mytoki = "昨日から" End If

  • ユーザーフォーム上のボタンの使い方

    今、VBAの本とインターネットで調べながら初めてユーザーフォームを作成中ですが、 どうしてもわからないことがあり、ご質問させていただきました。 初歩的なことかも知れませんが、ご教授よろしくお願い致します。 1.オプションボタンを二つ作成しました。  一方を選択した場合、フレーム全体をグレーアウトに  することはできますか。  例)ユーザーフォーム上のオプションボタン  A:住所登録   (郵便番号・所在地等を入力)  B:電話番号登録 (電話番号を入力) ※Bをオプションボタンで選択した場合、Aのフレーム全体を  グレーアウト(入力禁止)にすることはできますか。 2.ComboBoxで"年"、"月"、"日"それぞれプルダウンで選択できるように  したのですが、ワークシートに反映する時、同一セルに入力するか、  それらの数字を認識して日付として一つのセルに表示することはできますか。  例)ユーザーフォーム上    2007▼年   4▼月  19▼日  ※一つのセルに“2007年4月19日”と表示することはできますか。 3.2.の続きで、"年"、"月"、"日"すべて選択している場合、  チェックボックスにチェックが入り、どれか一つでも空白の場合は  チェックボックスがグレーアウトしている、という状態はできますか。 4.ユーザーフォームで入力した内容がExcel上にどんどん   追加していく時のマクロはどのように記述したらいいのですか。  (ユーザーフォームに入力した内容を、セルを指定せずにどんどん  追記していく方法) 質問が多くて申し訳ございませんが、よろしくお願い致します。

専門家に質問してみよう