今、VBAの本とインターネットで調べながら初めてユーザーフォームを作成中ですが、
どうしてもわからないことがあり、ご質問させていただきました。
初歩的なことかも知れませんが、ご教授よろしくお願い致します。
1.オプションボタンを二つ作成しました。
一方を選択した場合、フレーム全体をグレーアウトに
することはできますか。
例)ユーザーフォーム上のオプションボタン
A:住所登録 (郵便番号・所在地等を入力)
B:電話番号登録 (電話番号を入力)
※Bをオプションボタンで選択した場合、Aのフレーム全体を
グレーアウト(入力禁止)にすることはできますか。
2.ComboBoxで"年"、"月"、"日"それぞれプルダウンで選択できるように
したのですが、ワークシートに反映する時、同一セルに入力するか、
それらの数字を認識して日付として一つのセルに表示することはできますか。
例)ユーザーフォーム上
2007▼年 4▼月 19▼日
※一つのセルに“2007年4月19日”と表示することはできますか。
3.2.の続きで、"年"、"月"、"日"すべて選択している場合、
チェックボックスにチェックが入り、どれか一つでも空白の場合は
チェックボックスがグレーアウトしている、という状態はできますか。
4.ユーザーフォームで入力した内容がExcel上にどんどん
追加していく時のマクロはどのように記述したらいいのですか。
(ユーザーフォームに入力した内容を、セルを指定せずにどんどん
追記していく方法)
質問が多くて申し訳ございませんが、よろしくお願い致します。
No.3ベストアンサー
- 回答日時:
解りやすく簡単に書きました。
(初心者用です。)Dim N As Integer
Private Sub CommandButton1_Click()
NoData = 0
'ComboBox1の テキストは、簡単にするため 下記で、代用してます。
' コードは、考えて ください。
ComboBox1.Value =2007
ComboBox2.Value = 4
ComboBox3.Value = 20
If ComboBox1.Value = "" Then
NoData = NoData + 1
CheckBox1.Enabled = False
End If
If ComboBox2.Value = "" Then
NoData = NoData + 1
CheckBox2.Enabled = False
End If
If ComboBox3.Value = "" Then
NoData = NoData + 1
CheckBox3.Enabled = False
End If
If NoData = 0 Then
N = N + 1
Kotae = ComboBox1.Value & "/" & ComboBox2.Value & "/" & ComboBox3.Value
Kotae = Format(Kotae, "yyyy""年""m""月""d""日")
Range("A1").Offset(N, 0).Value = Kotae
End If
End Sub
Private Sub CommandButton2_Click()
OptionButton1.Enabled = True
CheckBox1.Enabled = True
CheckBox2.Enabled = True
End Sub
Private Sub OptionButton1_Click()
OptionButton2.Enabled = False
End Sub
Private Sub UserForm_Initialize()
N = 0
End Sub
詳しい手順を記載してくださって、ありがとうございます。
早速、上記内容を参考にして取り組ませていただきます。
ありがとうございました。
No.4
- 回答日時:
1. 住所登録のオプションボタンで解除する記述が必要だと思います。
Dim con As Control
For Each con In Frame1.Controls
con.Enabled = True
Next
2."コンボボックスの変更イベント"とは、Change()イベントのことで
Private Sub ComboBox1_Change()
End Sub
の中に記述します。ここで、コンボボックスの値でチェックボックス
にチャックを付けるかの判断を記述します。
If ComboBox1.Value <> "" _
And ComboBox2.Value <> "" _
And ComboBox3.Value <> "" Then
CheckBox1.Value = True
Else
CheckBox1.Value = False
End If
コンボボックスが3個あるので、それぞれのChange()イベントに記述します。
3.“コンボボックスの変更のイベントで連結"ついては、すべての項目の入力が終わってコマンドボタンのClick()イベントで処理すると良いと思います。
"セルに出す"には、Excelに登録されている件数を調べて件数+1(出力する場所)を探します。
Dim y As Integer
Dim YMD As String
'登録件数から最終行を調べます
y = Range("A1").CurrentRegion.Rows.COUNT + 1
'コンボボックスの連結処理
YMD = ComboBox1.Value & "/" & ComboBox2.Value & "/" _
& ComboBox3.Value
YMD = Format(YMD, "yyyy""年""m""月""d""日")
'最終行の1列目(A列)に出力します
Cells(y, 1).Value = YMD
お返事が遅くなり、大変申し訳ございません。
詳細を書いていただき、ありがとうございます。
同一セルに日付を挿入し、オプションボタンの設定も
できました!
ありがとうございました。
No.2
- 回答日時:
1.オプションボタンを二つ作成しました。
一方を選択した場合、フレーム全体をグレーアウトに
することはできますか。 *** はい 出来ます。
例)ユーザーフォーム上のオプションボタン
A:住所登録 (郵便番号・所在地等を入力)
B:電話番号登録 (電話番号を入力)
※Bをオプションボタンで選択した場合、Aのフレーム全体を
グレーアウト(入力禁止)にすることはできますか。
*** はい 出来ます。
2.ComboBoxで"年"、"月"、"日"それぞれプルダウンで選択できるように
したのですが、ワークシートに反映する時、同一セルに入力するか、
それらの数字を認識して日付として一つのセルに表示することはできますか。 *** はい 出来ます。
例)ユーザーフォーム上
2007▼年 4▼月 19▼日
※一つのセルに“2007年4月19日”と表示することはできますか。
*** はい 出来ます。
3.2.の続きで、"年"、"月"、"日"すべて選択している場合、
チェックボックスにチェックが入り、どれか一つでも空白の場合は
チェックボックスがグレーアウトしている、という状態はできますか。
*** はい 出来ます。
4.ユーザーフォームで入力した内容がExcel上にどんどん
追加していく時のマクロはどのように記述したらいいのですか。
(ユーザーフォームに入力した内容を、セルを指定せずにどんどん
追記していく方法)
基準となるセルを指定しないと出来ません。
例;
下記 コードをループで、囲います。
または、ボタンを押すごとに 行とか 列の係数を変化させ
答えをセルに、書きこむようにします。
Range("A1").Offset(行,列).Value=答え
この回答への補足
早速のお返事、ありがとうございます。
1.2.3.ともにVBAで処理できるのですね。
申し訳ございませんが、どのような記述をすれば出来るのか
簡単で結構ですので、ご教授いただけますでしょうか。
また、4.の通りセルを固定し、答えをセルに書き込んだ後や途中でも
行追加できますか。
お手数ですが、再度よろしくお願い致します。
No.1
- 回答日時:
エクセルのVBAを使っているということでしょうか?
1.こつこつすべてのコントロールの挙動を書くのが一般的ですね。
面倒ならば、
foreachでまわしてフレーム上のコントロールすべてに対して、
control.enabled = false
かな?
こんな感じ
Dim con As Control
For Each con In Frame1.Controls
con.Enabled = False
Next
2.単純に各コンボボックスの変更のイベントで(選択コンボならクリック?)
で連結してやってセルに出してやればよいと思います。
3.同じように各コンボボックスの変更のイベントで入力状態をチェック
してチェックボックスの状態を変えてやればよいと思います。
4.空白の行を先頭から探しいって、見つかった空白セルに書き込めばよ
いと思います。
この回答への補足
ご回答、ありがとうございます。
使用しているのは、仰る通りエクセルのVBAです。
早速、1.を試したところ、グレーアウトにすることができました。
しかし、一度グレーアウトにしてしまうと元に戻せなくなって
しまいました。
Next の後に、何か付け加えないといけなかったのでしょうか。
申し訳ございません。
2.3.ともに、“コンボボックスの変更のイベントで連結してセルに出す”や
“イベントで入力状態をチェックしてチェックボックスの状態を変える”
とはどのような操作になるのでしょうか。
インターネットでキーワード検索等をしてみたのですが、
わかりませんでした。
申し訳ございませんが、ご教授いただけますでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Excel(エクセル) ユーザー定義について質問です。 2 2023/06/28 13:21
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- JavaScript ラジオボタンによるフォームの開閉を行いたい 3 2022/03/31 21:30
- Excel(エクセル) Excel VBAについてです。 少しだけ知識はあるのですが、 うまくいかなかったので 質問させてい 3 2022/09/13 18:40
- Excel(エクセル) エクセルについて教えてください。 2 2023/06/14 11:11
- Visual Basic(VBA) 複数ファイルのデータの統合について 12 2022/05/14 12:03
- その他(プログラミング・Web制作) 入力フォームへ、データを自動的に入力するプログラム。どうやって作る? 4 2023/01/16 10:24
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
メッセージを1度だけ表示したい。
-
データが入力されている隣のセ...
-
ダブルクリックすると現在の時...
-
Excelのセル内にある図形を削除...
-
EXCELマクロ 保護されているシ...
-
Jtableの特定のセルの背景色や...
-
VBAで丸をつけたいです。
-
VBAで、貼り付け禁止命令を実現...
-
エクセルテキストボックスの文...
-
エクセルVBA(実行時エラー438...
-
エクセルVBA セル選択後にカレ...
-
VBA セルに合わせて移動するが...
-
[ExcelVBA] For Inputを使って...
-
【VBA】参照値を1ずつ増やして...
-
Excel VBA ダブルクリックで入...
-
ハイパーリンクされているファ...
-
GrapeCityのSpreadの複数セルの...
-
Excel VBA セルを指定個数ラン...
-
(VBA)アクティブセルを起点に...
-
エクセルのVBAでダブルクリック...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELマクロ 保護されているシ...
-
VBAで、貼り付け禁止命令を実現...
-
エクセルテキストボックスの文...
-
データが入力されている隣のセ...
-
VBAで丸をつけたいです。
-
ダブルクリックすると現在の時...
-
メッセージを1度だけ表示したい。
-
エクセルVBA セル選択後にカレ...
-
ハイパーリンクされているファ...
-
Excelについて
-
エクセルVBA(実行時エラー438...
-
Windowsで動くVBAがmacOSで動か...
-
Jtableの特定のセルの背景色や...
-
(VBA)アクティブセルを起点に...
-
VBAについて教えてください。 E...
-
VBA セルに合わせて移動するが...
-
セル色を5秒間隔で変える
-
Excel VBA ダブルクリックで入...
-
Excelのセル内にある図形を削除...
-
Excel VBA セルを指定個数ラン...
おすすめ情報