下記のプログラムでユーザーフォームを作成しました。
まったく同じ記述で、他のブックでは、最終処理として、所定の箇所に選択した記号が表示(コピー)されるのですが、このブックでは表示されません。
しかし、エラーは出ていないので文法的には合っているようにおもいます。
それだけに、どこが違うのか尚更わかりません。
なお、Unload UserForm1 を Unload UserForm にした場合、
Sheets("基本データ作成").Range("C3") = UserForm1.ComboBox1.Value の UserForm1 を
UserForm にした場合、
「実行時エラー424、オブジェクトが必要です。」のエラーが出ます。
どこが悪いのかわかりません。
どなたか、教えてください。
なお、エクセルは2003、OSはXPです。
Private Sub ComboBox1_Change()
End Sub
Private Sub ComboBox2_Change()
End Sub
Private Sub ComboBox3_Change()
End Sub
Private Sub CommandButton1_Click()
Unload UserForm1
Sheets("基本データ作成").Range("C3") = UserForm1.ComboBox1.Value
Unload UserForm1
Sheets("基本データ作成").Range("C4") = UserForm1.ComboBox2.Value
Unload UserForm1
Sheets("基本データ作成").Range("C5") = UserForm1.ComboBox3.Value
End Sub
Private Sub UserForm_initialize()
With ComboBox1
.AddItem "U"
.AddItem "K"
.AddItem "E"
End With
With ComboBox2
.AddItem "A"
.AddItem "B"
.AddItem "C"
End With
With ComboBox3
.AddItem "D"
.AddItem "E"
.AddItem "F"
End With
End Sub
No.3ベストアンサー
- 回答日時:
#1です。
エラーも出ないで、思った動作にもならないとは思えませんが、、、
質問に書いたコード以外にも記述があるのかな?
> 最終処理として、所定の箇所に選択した記号が表示(コピー)される
ここでいう「最終処理」とはCommandButton1をクリックする事で、「所定の箇所」とは基本データ作成シートのセルC3~C5の事で、「記号」とは各ComboBox1~3の値(AとかKとか)ですよね?
> 一度閉じてしまったユーザーフォームの画面を開けるには
Show メソッドを呼ぶだけです。
ユーザーフォームのオブジェクト名が UserForm1 なら
UserForm1.Show
何度もすみません。^^
ちゃんと最後まで動きました。
ご教示いただいた方法でユーザーフォームを開けて、正常に動いていたブックのユーザーシートと、異常のあるものとを対比したところ、異常のある方には、以前に作ったユーザーフォーム1という名前のユーザーフォームが別にありまして、その後に新規データ入力という名前のユーザーフォームをつくっていたために、選択した記号を代入したときに、動かしていないユーザーフォーム1の記号を代入していたと思われます。そこでユーザーフォーム1の記述を新規データ入力に変えると、正常に記号が表示されました。ちゃんと動くようになったので、まず間違いないと思います。どうもお手数をおかけしました。
No.2
- 回答日時:
#1です。
> 結論から申しますと、同じ結果でした。
同じ結果というのは、#1で書いたコードでも上手く動かなかったって事?
この回答への補足
こんばんわ
残念ながら、そういうことです。
うまく動かなかったです。
どうしてよいのやら。。。
ちょっと違う話ですが、一度閉じてしまったユーザーフォームの画面を開けるにはどうしたらよいのでしょうか?
No.1
- 回答日時:
書き方が変です。
上手く動くとは思えませんが、上手く動く事があるなら、何らかの偶然が作用しているのでは無いでしょうか?
親のForm1をUnloadしてからではComboBoxの値は不定だと思います。
Private Sub CommandButton1_Click()
Sheets("基本データ作成").Range("C3") = UserForm1.ComboBox1.Value
Sheets("基本データ作成").Range("C4") = UserForm1.ComboBox2.Value
Sheets("基本データ作成").Range("C5") = UserForm1.ComboBox3.Value
Unload UserForm1
End Sub
この回答への補足
こんばんわ
お世話になります。
結論から申しますと、同じ結果でした。
ちょっと間違えていたのですが、動いているほうは、
UserForm.ComboBox1.Value となっており、(1)がありませんでした。
おっしゃるとおり、偶然が作用していたと思われます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) ListBox1をClickしたときのイベント 5 2022/12/11 19:45
- Excel(エクセル) vba userformで漢字を全角カタカナに 2 2022/07/24 15:38
- Visual Basic(VBA) リストボックス セルの値を取得する 1 2022/05/21 20:47
- Visual Basic(VBA) ユーザーフォームに2つのコンボボックス銀行名「ConboBox1」支店名を「ConboBox2」とし 4 2022/08/03 17:34
- Visual Basic(VBA) 2つ目のコンボボックスが動作しません。 3 2023/03/25 12:29
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) VBAユーザーフォームの複数のコンボボックスについて。 1 2022/04/25 08:13
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) userformでSheetを選択して開くコード 1 2023/05/15 16:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
富士通(汎用機)のAIMについて
-
「Nullの使い方が不正です」の...
-
VBAでアクセスDBからデータの取...
-
VBAコンボボックスの内容が反映...
-
ActiveReportでデータが0件の場...
-
【C#】textBoxの指定行のデータ...
-
COBOL数値転記の仕様
-
MSFlexGrid 行選択状態
-
事務処理ソフトの開発に使用す...
-
AccessVBAでのExcelメモリ解放
-
VBAでメモ帳からの文字列を所定...
-
矩形グラフ(オシロやロジアナ...
-
クリスタルレポートでレコード...
-
access vba 『○○件づつ表示』を...
-
VBA 変数名に変数を使用したい。
-
【VB】コンボボックスにデータ...
-
Accessで別mdbのテーブルをコピー
-
vba フィルター 複数条件 3つ以...
-
VBとアクセスでSQL文に変...
-
Accessのフィールド名に半角括...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
XMLでデータとして画像を指定す...
-
【C#】textBoxの指定行のデータ...
-
VBAでアクセスDBからデータの取...
-
Excel VBAでフォルダ内の全テキ...
-
【VB.NET】Excelの最終行までの...
-
C# DataTableに最後に追加した...
-
「Nullの使い方が不正です」の...
-
VBAコンボボックスの内容が反映...
-
COBOL数値転記の仕様
-
クリスタルレポートでレコード...
-
VB2010で、選択した系列を最前...
-
アクセスでウェブ上のデータを...
-
Excel VBAで1週間毎にカテゴリ...
-
非同期のプロセス間通信(パイプ...
-
エクセルのセル最終行取得
-
ActiveReportのdetailをデータ...
-
富士通(汎用機)のAIMについて
-
Excel VBAでグループ毎に集計す...
-
エクセルのCSV読み込みについて
-
AccessVBAでのExcelメモリ解放
おすすめ情報