教えてください。
1)フォームでテキストボックス2つ、ボタンで新しい入力フォーム表示
2)入力フォームでチェックボックス6個、コンボボックス6個を作ります。
3)チェックボックスにチェック(1個のみ)したら、1)のフォームのテキストボックスにチェックされた、項目とコンボボックスで選択された内容が転記したい。
例)果物にチェック、コンボでブドウと選択
テキストボックス→果物 ブドウ
というようにフォームに転記させたい。
以前、シートでのマクロを教えていただきましたが、フォームだと頭が混乱してしまいました。
簡単で良いので、マクロの記述を教えてください。
No.6ベストアンサー
- 回答日時:
遅くなりました、takachan7272です。
会社にOffice2000のPCが有るので試してみました。
問題なく動きました。
1つ伝えていなかった事がありました。
Form2にはオプションボタンは6つ無いとダメです。
コンボボックスは3つしか使っていませんが・・・
私のサンプルコードは、For~Nextで6回ループさせて、チェックが入っているオプションボックスを確認しています。
6個無いと・・・見付かるはずがないですね・・・
For i = 1 To 6 Step 1
↑の6を設置したオプションボタンの数に減らせば解決すると思います。
チェックボックスの方法ですが、ただ配置しただけだと全部選択できてしまいます。
下記コードで対応できます(チェックボックス1をクリックした場合)
Private Sub CheckBox1_Click()
If CheckBox1 = True Then
CheckBox2.Enabled = False
CheckBox3.Enabled = False
CheckBox4.Enabled = False
Else
CheckBox2.Enabled = True
CheckBox3.Enabled = True
CheckBox4.Enabled = True
End If
End Sub
CheckBox1がTrueを返した場合、他のチェックボックスのEnableのプロパティをFalseにします。
使用不可に擦るということです。
チェックボックスの数だけ、それぞれに書かなければいけません。
チェックボックスのNo.に気を付けて下さい。
オプションボタンなら、これを書く必要は無いのですが・・・
最初のサンプルコードのOptionButtonをCheckBoxに置き換えるだけでOKだと思います。
動作するか検証はしていませんけど。
帰りが遅かったもので、また明日見に来ます。
継続して、分かる範囲で回答したいと思います。
忙しいところありがとうございました。ループ数を変えるだけで、上手く作動出来ました。自分は読み取る基礎がないのですいませんでした。確かに、オプションボタンの方が記述は楽だとかんじました。しかし、自分が既に作成しているのは、チェックボックスなのでこれからやってみようと思います。本当にありがとうございます。
No.5
- 回答日時:
#2です。
#3さんのサンプルは Excel2000でも問題ありません。
提示された回答をご自分で読み解こうという意識はおありですか?
「指定されたオブジェクト名がないとエラー表示されます。」ってそのものずばり、試している環境で UserForm2 に OptionButton1~6 や ComboBox1~6 と言う名前のオブジェクトが無いだけだと思いますけど、、、
> 選択制で、1個だけ選択させたいです。それらの項目と内容だけをフォーム1に記録させたいです。
> それは可能でしょうか?
可能かって話なら可能だと思いますが、1個だけ選択させる制御のために余計なコードを書かなきゃなりません。
OptionButtonなら勝手にやってくれます。
ベタですが、新規ブックで UserForm に CheckBox を6つ置いて、UserFormモジュールにコピペします。
Sub CheckBox_Check(chCnt As Control)
Dim cnt As Control
For Each cnt In Me.Controls
Debug.Print TypeName(cnt)
If TypeName(cnt) = "CheckBox" Then
If cnt.Name <> chCnt.Name Then cnt.Value = False
End If
Next cnt
End Sub
Private Sub CheckBox1_AfterUpdate()
CheckBox_Check CheckBox1
End Sub
Private Sub CheckBox2_AfterUpdate()
CheckBox_Check CheckBox2
End Sub
Private Sub CheckBox3_AfterUpdate()
CheckBox_Check CheckBox3
End Sub
Private Sub CheckBox4_AfterUpdate()
CheckBox_Check CheckBox4
End Sub
Private Sub CheckBox5_AfterUpdate()
CheckBox_Check CheckBox5
End Sub
Private Sub CheckBox6_AfterUpdate()
CheckBox_Check CheckBox6
End Sub
この回答への補足
ループ数を6から3に変化しただけで上手く機動しました。自分は読み取る基礎がないです。すいませんでした。上記の記述早速試してみます。必ず報告します。それとオプションボタンの方が良いと皆さんが言われていた意味が良く理解出来ました。実は今、フォームの中に簡単に誰でも記入出来るように、作成しております。その項目は、いっぱいあって頭の中でも整理出来ていません。papayukaさんにはいつも感謝しております。出来れば、今後もアドバイスお願いします。
補足日時:2007/09/19 07:08ありがとうございました。試した結果上手くいきました。やはり余分な記述が多いですね。本当困ったもんです。でも参考にして作り上げていきます。
No.4
- 回答日時:
takachan7272です。
自宅のOffice環境が2003の為、2000で動作するかは未確認です。
申し訳ありませんが、明日、会社のPCで試してみます。
実行時にエラーでしょうか?
それとも、コードを書いている時にエラーでしょうか?
書いている時なら、スペースやピリオド〔.〕は大丈夫でしょうか。
s1 = Me.Controls("OptionButton" & i).Caption
見辛いですが、Captionの前にピリオドがあります。
明日の夜に検証結果を書き込みますね。
ありがとうございます。ピリオドも記入しています。そのままコピーしただけです。実行時エラー -2147024809(80070057) 指定されたオブジェクトはは見つかりませんと書かれていました。出来ればチェック式の記述も教えていただきたいです。お待ちしています。
No.3
- 回答日時:
補足を待っている間に回答が付きましたね。
私も同感で、オプションボタン(ラジオボタンと一緒)とループの使用を考えました。
私も転記するタイミングに悩みまして、勝手にフォーム2にもコマンドボタンを設置してみました。
それらしいものを作ってみましたので、ご自分で試してみて下さい。
---------------------------------
UserForm1
---------------------------------
Private Sub CommandButton1_Click()
TextBox1.Value = ""
TextBox2.Value = ""
UserForm2.Show
End Sub
---------------------------------
UserForm2
---------------------------------
Private Sub UserForm_Initialize()
With ComboBox1
.AddItem "ぶどう"
.AddItem "桃"
.AddItem "バナナ"
End With
With ComboBox2
.AddItem "きゅうり"
.AddItem "キャベツ"
.AddItem "にんじん"
End With
With ComboBox3
.AddItem "ビール"
.AddItem "サワー"
.AddItem "日本酒"
End With
End Sub
Private Sub CommandButton1_Click()
Dim i As Integer
Dim s1, s2 As String
For i = 1 To 6 Step 1
s1 = Me.Controls("OptionButton" & i).Caption
s2 = Me.Controls("combobox" & i).Value
If Me.Controls("optionbutton" & i) = True Then
With UserForm1
.TextBox1.Value = s1
.TextBox2.Value = s2
End With
End If
Next i
Unload UserForm2
End Sub
---------------------------------
・フォーム1のボタンを押したらフォーム2を表示して2つのTextBoxを空白にする。
・フォーム2のボタンを押したら、チェックされているOptionBox#の
Captionをフォーム1のTextbox1に書込み。
同時にOptionBoxの#と同じ番号のComboBoxの値をTextbox2に書き込みます。
選択されていなければ空白が入ります。
・最後にフォーム2を閉じてフォーム1の表示を残します。
★フォームの閉じる〔X〕でも終われますが、終了ボタンを作っておくと良いでしょう。
1つ意見ですが、フォーム1のボタンを押してと言うのは必要無いのでは?
フォーム2で選択してボタンを押したらフォーム1を表示するとか。
この回答への補足
フォーム1は全体の項目を把握するもので、フォーム1には他に入力ボタンがいくつもあります。やはりオプションボタンの方が操作しやすいでしょうか?自分はチェックボタンを作ってしまいました。やってみてまた、報告させてください。
補足日時:2007/09/17 13:05s1 = Me.Controls("OptionButton" & i).Caption←黄色表示
指定されたオブジェクト名がないとエラー表示されます。
コンボボックスの前にはオプションボタンで良いですよね?
どうしてですか?教えてください。自分は2000のエクセルです。
No.2
- 回答日時:
チェックボックスは複数選択出来るものなので、仕様としてどうかと思います。
また「チェックボックスにチェックしたら」のタイミングで「コンボボックス」が既に選択されているとは限らず、転記に行くタイミングとしては適切で無いようにも思います。
どちらを先に操作するかはユーザーによって異なるのでは無いでしょうか?
コマンドボタンのクリックで転記を行うにしても、チェックボックスもコンボボックスも複数選択した状態で行う事が可能なわけで、その場合はどれを転記したら良いのかって話になります。
強引にやるなら、ループで最初に見つけた物もしくは最後に残った物って事かな?
ループでチェックボックスの Value を判断して、Caption を代入
ループでコンボボックスの Value を判断して代入
ってところでしょうか、、、
ちなみに用途的にはラジオボタンを使う方が排他制御は楽だと感じます。
この回答への補足
ありがとうございました。選択制で、1個だけ選択させたいです。それらの項目と内容だけをフォーム1に記録させたいです。それは可能でしょうか?
補足日時:2007/09/17 12:39お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) チェックボックスにチェックが入った後の挙動 1 2022/08/21 12:39
- Access(アクセス) Accessにインポートした複数のテーブルを表示させる方法が分かりません。 1 2023/01/30 20:22
- Access(アクセス) Accessの参照フィールドの列がずれてしまいます 1 2023/07/19 15:00
- Access(アクセス) アクセスで、androidのスマホサイズのフォームは作れますか?テキストとチェックボックスだけのフォ 1 2023/05/31 00:53
- JavaScript ラジオボタンによるフォームの開閉を行いたい 3 2022/03/31 21:30
- Visual Basic(VBA) 検索のユーザーフォームの表示について 1 2023/03/27 23:31
- Visual Basic(VBA) VB.net フォーム 親子 1 2022/07/04 19:00
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- JavaScript ソースコードは下の共有コードサイト「張り紙」にあります。 入力フォームの javascript で 1 2022/05/11 11:01
- Access(アクセス) アクセス 意図せずサブプロシージャを移動してしまうのを止めたい 1 2022/09/02 09:19
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCEL VBAのユーザーフォームに...
-
エクセルVBA オプションボタ...
-
Notesでアンケートをとりたい
-
JW-CADのAutoモードの解除はで...
-
コマンドプロンプト使用時に「'...
-
Accessでエラーメッセージの表...
-
ACCESS カンマをスペースに置...
-
標準モジュールだとエラーにな...
-
ExcelVBAでセルをクリックして...
-
プロシージャの実行方法
-
ACCESS フォームでの、データ...
-
エクセルVBA ユーザーフォーム...
-
アクセスで「モジュールがあり...
-
tarコマンドをウインドウズ環境...
-
【EXCEL】UserFormで入力して ...
-
Access レポート印刷するときに...
-
データベースのINT型項目にNULL...
-
passwordが入れられません・・・・
-
YahooのIDがロックされてしまい...
-
アクセスでテキストボックスの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBA オプションボタ...
-
EXCEL VBAのユーザーフォームに...
-
ExcelVBAでセルをクリックして...
-
アクセスで「モジュールがあり...
-
コマンドプロンプト使用時に「'...
-
ACCESS フォームでの、データ...
-
標準モジュールだとエラーにな...
-
Accessでaccdeへ変換で機能しない
-
Notesでアンケートをとりたい
-
JW-CADのAutoモードの解除はで...
-
エクセルVBAからアクセスフ...
-
Accessでエラーメッセージの表...
-
Autocad LT 引き出し線の上に文...
-
ACCESS カンマをスペースに置...
-
ExcelVBAで指定外のUserFormを...
-
ユーザーフォームのスクロール...
-
access の 閉じるボタンを無効...
-
ACCESS フォームで、ボタンの...
-
USBメモリを丸ごと仮想イメージ...
-
エクセルVBA ユーザーフォーム...
おすすめ情報