
以前に,エクセルファイルを閉じても,再度ファイルを開いたときに,閉じる前のユーザーフォームにあるチェックボックスやオプションボタンなどの選択結果を再表示させる方法をお教えいただき,そのご指導のもとコントロールの状態を、シートに保存しておく方法で作業を進めていました。
しかし,次の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
No.1ベストアンサー
- 回答日時:
回答がついてないようなので。
。。(^^;;;----------------------------------------------------
>問題2.「コンボボックス」は,保存したコントロール状態は
再表示するのですが,リストを読み込まず
>Sub test()
>UserForm1.Show
>UserForm1.ComboBox1.List = Sheets("sheet2").range("E1:E5").Value
>End Sub
これではリストを読み込むことはできません。
>UserForm1.ComboBox1.List = Sheets("sheet2").range("E1:E5").Value
これは、UserForm_Initializeイベントのところに書かないといけません。
--------------------------------------------------------
>問題1.ユーザーフォームに「ラベル」・「イメージ」・「マルチページ」等があると,エラーが発生します。
>「ラベル」・「イメージ」・「マルチページ」「コンボボックス」を
省くと以下のコードで問題なく作動します
>UserForm1にチェックボックス、オプションボタン、トグルボタン
テキストボックス、「ラベル」・「イメージ」・「マルチページ」「コンボボックス」
何でもかんでもVALUEプロパティを使えばいいというものではありません。
「ラベル」・「イメージ」には、VALUEプロパティがありませんよね。
だから、エラーが出るわけです。
------------------------------------------------------------
コントロールの何を保存したいのかによって
使用するプロパティなどが変るわけですから、
コントロールを●区別●する必要があるわけです。
例えば、
ラベルに表示されている文字列を保存したければ
Captionプロパティを使用
チェックボックスのOn,Offを保存したければ
Valueプロパティを使用
以上です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
iphoneのフルスクリーンの解除方法
-
ACCESSでコントロールソースの変更
-
ACCESSのフォームからハイパー...
-
Accessでフィールド名を変数(...
-
コントロールソースって
-
アクセスフォームで2つを結合テ...
-
【ACCESS】フォーム名/コントロ...
-
コントロール名にnameを使った...
-
Excel ユーザーフォーム呼び出...
-
ACCESS2000で カレンダコントロ...
-
AutoCAD 画層管理コントロール...
-
Access レポート印刷するときに...
-
アクセスで数値型のフィールド...
-
passwordが入れられません・・・・
-
データベースのINT型項目にNULL...
-
新規レコード行を非表示にしたい
-
Excelで入力したデータを自動的...
-
レコードを保存するコード ア...
-
エクセルをACCESSのレポ...
-
ExcelVBAでセルをクリックして...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESSでコントロールソースの変更
-
iphoneのフルスクリーンの解除方法
-
Accessのフォームにて、詳細行...
-
Accessでフィールド名を変数(...
-
【ACCESS】フォーム名/コントロ...
-
Excel 入力規則 リスト 複数...
-
ACCESSのフォームからハイパー...
-
アクセスフォームで2つを結合テ...
-
アクセスで、チェックボックス...
-
Excel ユーザーフォーム呼び出...
-
access 改ページコントロール
-
Access・VBAで、Controlsを使用...
-
ACCESS テキストボック...
-
FlashPlayerのインストールにつ...
-
アクセスのフォームの区切り線...
-
access setfocusについて
-
コントロールソースって
-
Accessの連結、非連結とは何?
-
【Access】サブフォームの項目...
-
Excelのコントロールツールボッ...
おすすめ情報