
下記のプログラムでユーザーフォームを作成しました。
まったく同じ記述で、他のブックでは、最終処理として、所定の箇所に選択した記号が表示(コピー)されるのですが、このブックでは表示されません。
しかし、エラーは出ていないので文法的には合っているようにおもいます。
それだけに、どこが違うのか尚更わかりません。
なお、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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAコンボボックスの内容が反映...
-
VBAでアクセスDBからデータの取...
-
VB2010で、選択した系列を最前...
-
エクセルのCSV読み込みについて
-
Excel VBAでフォルダ内の全テキ...
-
『列名 '担当者CD' があいま...
-
VBA 変数名に変数を使用したい。
-
INT64対応のprintf系関数はあり...
-
vba フィルター 複数条件 3つ以...
-
EXCELのVBAでLenB関数について
-
accessでフィールド追加のあと...
-
動的配列VBAについて
-
AccessからExcelへエクスポート...
-
エクセルでメールヘッダーを解...
-
VB6からの移行したいけど、VB.N...
-
ASP.NET 2.0(C#) GridViewのソ...
-
対数変換のついて
-
エクセルのテーブルを解除する...
-
オートナンバー型を変換したい
-
名前'dbOpenDynaset'は宣言され...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C# DataTableに最後に追加した...
-
【VB.NET】Excelの最終行までの...
-
【ExcelVBA】値を変更しながら...
-
VBAコンボボックスの内容が反映...
-
COBOL数値転記の仕様
-
XMLでデータとして画像を指定す...
-
VBAでアクセスDBからデータの取...
-
アクセスでウェブ上のデータを...
-
「Nullの使い方が不正です」の...
-
エクセルのCSV読み込みについて
-
【C#】textBoxの指定行のデータ...
-
Excel VBAで1週間毎にカテゴリ...
-
クリスタルレポートでレコード...
-
非同期のプロセス間通信(パイプ...
-
VB2010で、選択した系列を最前...
-
Excel VBAでフォルダ内の全テキ...
-
VB.Net ResetBindings リクエリ
-
エクセル・グラフの 横軸に値を...
-
ListViewで表示されたデータの...
-
フォームからのデータの受け渡...
おすすめ情報