• ベストアンサー

ユーザーフォームにあるチェックボックスやオプションボタンなどの選択結果保存

VBA初心者で恐縮です・・・ ユーザーフォームにあるチェックボックスやオプションボタンなどの選択して作業を終えファイルやユーザーフォームを閉じると、次にファイルやユーザーフォームを開いたら、前回にチェックボックスやオプションボタンにチャックをいれたものが外れています。 このように、チェックボックスやオプションボタンにチェックをいれたのを、次回ユーザーフォームを開いたときに残しておくことは可能でしょうか? 可能なら、その方法をお教えください。 よろしく、お願いいたします。

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

  • ベストアンサー
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1

コントロールの状態を、シートに保存しておく方法はいかがでしょうか フォームを閉じる時にシート(dataという名前をつけています)に保存し、フォームを開く時に、値を読み込みます。(チェックボックス、オプションボタン、トグルボタン、テキストボックスで動作を確認しました。思いつきで作成したもので、普段使い込んでいるコードではありませんので、誤動作したら悪しからず。当方XL2000です) '☆標準モジュール Sub test() UserForm1.Show End Sub '☆ UserForm1のモジュール Private Sub UserForm_Initialize() Dim srcRange As Range Dim myCell As Range Set srcRange = ThisWorkbook.Sheets("data").Range("A1").CurrentRegion For Each myCell In srcRange.Columns(1).Cells Me.Controls(myCell.Value).Value = myCell.Offset(0, 1).Value Next myCell End Sub Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) Dim myCtrl As Control Dim destRange As Range Set destRange = ThisWorkbook.Sheets("data").Range("A1") destRange.Parent.Cells.Clear For Each myCtrl In Me.Controls With destRange .Value = myCtrl.Name .Offset(0, 1).Value = myCtrl.Object.Value End With Set destRange = destRange.Offset(1, 0) Next myCtrl End Sub

silverstac
質問者

お礼

mitarashiさん ありがとうございました。 お教えいただいたコードで問題は解決しそうなのですが、このコードを使用するとファイルに保存ができなくなってしまい途方にくてます・・ このコードのどこをどう直せば保存可能になるのか、いろいろとやってみましたが、どうもわかりません・・ 大変、何度もお手数をおかけして誠に申し訳ございませんが、どこを直せば、保存できるようになるかお教えいただきたく思います。。。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

たとえば次のように処理してはいかがでしょう。 UserForm1.Hide

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 続)ユーザーフォームにあるチェックボックスやオプションボタンなどの選択結果保存

     以前に,エクセルファイルを閉じても,再度ファイルを開いたときに,閉じる前のユーザーフォームにあるチェックボックスやオプションボタンなどの選択結果を再表示させる方法をお教えいただき,そのご指導のもとコントロールの状態を、シートに保存しておく方法で作業を進めていました。 しかし,次の2点の問題が新たに出てきました(><)。いろいろと自分なりに考えて見ましたが,解決できず再度投稿させていただきました。 問題1.ユーザーフォームに「ラベル」・「イメージ」・「マルチページ」等があると,エラーが発生します。 問題2.「コンボボックス」は,保存したコントロール状態は再表示するのですが,リストを読み込まず,コンボボックスでほかのものが選択できない事になってしまいます。 大変、恐縮なのですが、どなたか解決策をお教えください。 何卒、よろしくお願いいたします。 例)UserForm1にチェックボックス、オプションボタン、トグルボタン、テキストボックス、「ラベル」・「イメージ」・「マルチページ」「コンボボックス」を作る。SHEET2のセル(E1:E5)にコンボボックスのリストを作る。こうしたユーザーフォームの結果をフォームを閉じる時にシート(dataという名前をつけています)に保存し、フォームを開く時に、値を読み込みこませるようにしました。(、「ラベル」・「イメージ」・「マルチページ」「コンボボックス」を省くと以下のコードで問題なく作動します。) '☆標準モジュール Sub test() UserForm1.Show UserForm1.ComboBox1.List = Sheets("sheet2").range("E1:E5").Value End Sub '☆ UserForm1のモジュール Private Sub UserForm_Initialize() Dim srcRange As Range Dim myCell As Range Set srcRange = ThisWorkbook.Sheets("data").Range("A1").CurrentRegion For Each myCell In srcRange.Columns(1).Cells Me.Controls(myCell.Value).Value = myCell.Offset(0, 1).Value Next myCell End Sub Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) Dim myCtrl As Control Dim destRange As Range Set destRange = ThisWorkbook.Sheets("data").Range("A1") destRange.Parent.Cells.Clear For Each myCtrl In Me.Controls With destRange .Value = myCtrl.Name .Offset(0, 1).Value = myCtrl.Object.Value End With Set destRange = destRange.Offset(1, 0) Next myCtrl End Sub

  • VBA ユーザーフォームのオプションボタンについて

    VBA初心者です。宜しくお願い致します。 ユーザーフォームのオプションボタンをONにした時に、 楕円が入力されるようにしたいのですが、可能でしょうか?

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

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

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

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

  • ユーザーフォームのチェックボックスIndex

    Excel 2002を使用しています ユーザーフォームのVBAを教えてください ユーザーフォームにチェックボックスをつけたリストを表示しました .ListStyle = fmListStyleOption リストボックスは5列ですが チェックしたリストボックスの1列の値は ListBox1.List(ListBox1.ListIndex)でとりだせましたが 2列目以降の他の列の値はどうとりだせばいいのでしょうか? また、リストボックスを選択するとチェックボックスにチェックが入り文字が反転され もう一度チェックするとチェックボックスのチェックが外れますが チェックボックスにチェックが入っている状態かどうかを判別する方法を教えてください チェックボックスのIndexも取得したいのですが。

  • オプションボタンでリストボックスの表示を切り替え

    VBAの初心者です。 知恵をお貸しください。 ユーザーフォーム内にオプションボタンを2つ、リストボックスが1つ配置してあります。オプションボタン1でデータ1がリストボックス内に表示。オプションボタン2でデータ2がリストボックスに表示されてます。この時、2つのデータが同時に表示されてしまいます。オプションボタン1の時は1のデータ、オプションボタン2の時は2のデータだけを表示させるにはコードをどのように書けばいいかご教授ください。宜しくお願い致します。

  • 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にチェックが入るようにしたいのですが。 どなたかご教授をお願いします。

  • EXCEL:フォームで作成したチェックボックス選択したのものみ表示

    EXCELのフォームのチェックボックスやグループ化したオプションボタンを多数使用したシートがあります。 チェックや選択したオプションボタンに応じて結果が同じシートに表示されるようIF関数を使用してます。 例)チェックボックス(1)「植物」にチェックがあり   グループ(1)はオプションボタン「赤」を選択   グループ(2)はオプションボタン「水」を選択   →『花』と表示   グループ(2)のオプションボタン「緑」を選択した場合は   →『木』と表示 選択した項目をペーパーで確認のために、選択した項目だけ別のシートに表示させ印刷したいのですが何か良い方法はないでしょうか。 チェックボックス一つに対してグループ約5つ というものが10個ほどあります。 チェックボックス(1)をチェックしたら、チェックボックス(1)とグループ(1)~(5)を別シートへ表示するといったようにしたいのですが・・・

  • BVAユーザーフォーム上でのオプションボタンについて

    BVAを3時間前から勉強しだした超初心者です。よろしくおねがいします。 エクセルVBAのユーザーフォーム上でオプションボタンをA・B・Cと3つ、コマンドボタンを1つ作成します。 A・B・Cのどれかを選択した状態でコマンドボタンをクリックしたときに、シート1のA列2行目から下に順番にデータとして、Aをクリックしたときにはa、Bをクリックしたときにはb、Cをクリックしたときにはcが入力されるようにコードを作りたいです。 今試行錯誤して作ったものは、オプションボタンをクリックした時点でシート1に入力されてしまうため困っています。

  • チェックボックスについて

    Excelでフォームにチェックボックスを使用してアンケートを作成しています。 ある質問に対してチェックボックスが3つある場合、どれか1つしか選択できないようにするには、どうすればいいのでしょうか? これはオプションボタンでしかできないのでしょうか?

専門家に質問してみよう