いろいろ手探りでVBAでユーザーフォームを作成し
コマンドボックスによりテキストボックスを指定のセルへ転記し
ユーザーフォームを終了させるという簡単ですがプログラミングをしました。
さらに、下記のことができたらと思ってるのですがどうしたら良いのかわかりません。
1.2種類のユーザーフォームを作成し、ファイルを開くと
選択肢ウィンドウが現れ選択したほうのユーザーフォームが開く
2.チェックボックスまたはラジオボタンで選択された項目を
指定のセルへ○を反映させたい。
以上のことを加えたいのですが、できますでしょうか。
つたない説明ですが御回答の程宜しくお願い致します。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
(2) の方ですが CheckBox の Change イベントでやると良いです。
Change イベントはチェックボックスの値が変化した時に発生するイベントです。
んで質問文には入ってないのですが、チェックボックスのチェックを外すとセルをクリアする仕様で。
---- サンプル 1 ----
Private Sub CheckBox1_Change()
If CheckBox1.Value Then
Cells(1, 1).Value = "○"
Else
Cells(1, 1).Value = ""
End If
End Sub
Private Sub CheckBox2_Change()
If CheckBox2.Value Then
Cells(1, 2).Value = "○"
Else
Cells(1, 2).Value = ""
End If
End Sub
Private Sub CheckBox3_Change()
If CheckBox3.Value Then
Cells(1, 3).Value = "○"
Else
Cells(1, 3).Value = ""
End If
End Sub
If 文の書き方が変に感じますか?
CheckBox の Value は True/False なので、If 文の条件判断にそのまま使えます。
上記のコードが何とも泥臭くダラダラしてると感じますか?
なら下記のパターンではどうでしょうか。
---- サンプル 2 ----
Private Sub CheckBox1_Change()
Cells(1, 1).Value = GetStringValue(CheckBox1.Value)
End Sub
Private Sub CheckBox2_Change()
Cells(1, 2).Value = GetStringValue(CheckBox2.Value)
End Sub
Private Sub CheckBox3_Change()
Cells(1, 3).Value = GetStringValue(CheckBox3.Value)
End Sub
Private Function GetStringValue(aValue As Boolean) As String
If aValue Then
GetStringValue = "○"
Else
GetStringValue = ""
End If
End Function
これは GetStringValue という関数を作り、3つのチェックボックスの Change イベントから使いまわすパターンです。
GetStringValue は True/False を受け取り、その値に応じて "○" か空文字を返します。
No.3
- 回答日時:
Private Sub CheckBox1_Click()
Range("A1") = "○"
End Sub
ですか?
ユーザーフォームに載せたチェックボックスをダブルクリックすると記述できます。
ただ、CheckBox1にチェックが入ると○を表示しますが、消すのは出来ません。
必要ならCheckBox2_Click()とかでRange("A1")=""として下さい。
No.2
- 回答日時:
お礼1.は質問でしょうか?
ThisWorkBookモジュールのWorkBook_Openを使用すれば可能です。
2.はごめんなさい、まだ理解できないのですが・・・
シートモジュールの
OptionButton1_Click()
か
OptionButton1_Change()
で対応できませんか?
この回答への補足
2.
ユーザーフォーム内に
チェックボックスを3つ設けたとします。
『□A □B □C』ってな感じです。
例えば
Aにチェックが入ったときは『a1』に○と表記させる
Bにチェックが入ったときは『b1』に○と表記させる
って感じでコマンドボタンが押されたときに
チェックが入っている指定のセルに"○"と表記されるようにしたのですが
これで、うまく伝わるでしょうか。
説明が悪くて申し訳ありませんが
何卒宜しくお願い致します。
No.1
- 回答日時:
1.選択肢ウインドウはもうひとつのユーザーフォームにしてボタンを2個つけて、押されたほうの(選択したほう)ユーザーフォームを開いて、選択肢ウインドウのユーザーフォームを消す。
2.は質問の意味が解らないので補足を頂いたほうがいいと思います。
この回答への補足
2.ですが例えば
A,B,Cというセル項目があります。
ラジオボタンでBが選択された場合
Bのセルの下に『○』とコマンドボタンを押した際
表記されるようにしたいのですが
そんなこと出来ますでしょうか。
1.ファイルを開くと選択肢ウィンドウが自動(?)で呼び出す方法があ りますか。
単純なことでしたね^^;
ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Excel(エクセル) ユーザー定義について質問です。 2 2023/06/28 13:21
- Visual Basic(VBA) 複数ファイルのデータの統合について 12 2022/05/14 12:03
- Chrome(クローム) 入力フォームの履歴を消したい 2 2023/06/29 13:02
- HTML・CSS HTMLのフォームについてお尋ねします 1 2022/12/03 21:47
- iCloud バックアップが完了したあと、機種変更前のスマホ、リセットしていい?? 1 2023/02/07 14:44
- Access(アクセス) Accessで独自メニューバーまたはリボンを作成したい 1 2022/12/02 14:31
- Windows 10 サブアカウントの名前変更 1 2023/02/11 01:27
- Visual Basic(VBA) VB.net フォーム 親子 1 2022/07/04 19:00
- Excel(エクセル) Excel VBAについてです。 少しだけ知識はあるのですが、 うまくいかなかったので 質問させてい 3 2022/09/13 18:40
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ユーザーフォームを表示中にシ...
-
Hideについて(.NET)
-
Form_Load と Form_Activate の...
-
エクセルVBA フォーム上でOnkey...
-
【VBAユーザーフォームで閉じる...
-
'ユーザーフォーム右上隅の[×...
-
ユーザーフォームのコピー?
-
MSGBOXのフォント大きさ変更
-
Excel VBAでユーザーフォームだ...
-
モーダルフォームとモードレス...
-
ユーザーフォーム上に現在日時...
-
コントロールの存在確認
-
C#で起動時のフォームを非表示...
-
VB.NETでフォームロード中のエ...
-
Microsoft Formsの「個人情報や...
-
ユーザーフォームのテキストボ...
-
検索のユーザーフォームの表示...
-
VBE ユーザーフォーム重複・空...
-
エクセルVBAのフォームを最...
-
フォームの二重起動の阻止
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ユーザーフォームを表示中にシ...
-
ExcelVBAのユーザーフォームの...
-
クリックイベントなのに、2回ク...
-
Microsoft Formsの「個人情報や...
-
ユーザーフォームのテキストボ...
-
【VBAユーザーフォームで閉じる...
-
モーダルフォームとモードレス...
-
VBAでユーザーフォームを再表示...
-
エクセルVBAのフォームを最...
-
MSGBOXのフォント大きさ変更
-
Form_Load と Form_Activate の...
-
ユーザーフォーム上に現在日時...
-
Excelにて、ユーザーフォームで...
-
Hideについて(.NET)
-
フォームウィンドウを最前面に...
-
コントロールの存在確認
-
VBA(エクセル)のユーザー...
-
'ユーザーフォーム右上隅の[×...
-
エクセルVBA フォーム上でOnkey...
-
ブックをCloseまたはQuitで閉じ...
おすすめ情報