- 締切済み
ユーザーフォームいろいろについて
いろいろ手探りでVBAでユーザーフォームを作成し コマンドボックスによりテキストボックスを指定のセルへ転記し ユーザーフォームを終了させるという簡単ですがプログラミングをしました。 さらに、下記のことができたらと思ってるのですがどうしたら良いのかわかりません。 1.2種類のユーザーフォームを作成し、ファイルを開くと 選択肢ウィンドウが現れ選択したほうのユーザーフォームが開く 2.チェックボックスまたはラジオボタンで選択された項目を 指定のセルへ○を反映させたい。 以上のことを加えたいのですが、できますでしょうか。 つたない説明ですが御回答の程宜しくお願い致します。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- temtecomai2
- ベストアンサー率61% (656/1071)
(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 を受け取り、その値に応じて "○" か空文字を返します。
- pbforce
- ベストアンサー率22% (379/1719)
Private Sub CheckBox1_Click() Range("A1") = "○" End Sub ですか? ユーザーフォームに載せたチェックボックスをダブルクリックすると記述できます。 ただ、CheckBox1にチェックが入ると○を表示しますが、消すのは出来ません。 必要ならCheckBox2_Click()とかでRange("A1")=""として下さい。
- pbforce
- ベストアンサー率22% (379/1719)
お礼1.は質問でしょうか? ThisWorkBookモジュールのWorkBook_Openを使用すれば可能です。 2.はごめんなさい、まだ理解できないのですが・・・ シートモジュールの OptionButton1_Click() か OptionButton1_Change() で対応できませんか?
- pbforce
- ベストアンサー率22% (379/1719)
1.選択肢ウインドウはもうひとつのユーザーフォームにしてボタンを2個つけて、押されたほうの(選択したほう)ユーザーフォームを開いて、選択肢ウインドウのユーザーフォームを消す。 2.は質問の意味が解らないので補足を頂いたほうがいいと思います。
お礼
1.ファイルを開くと選択肢ウィンドウが自動(?)で呼び出す方法があ りますか。 単純なことでしたね^^; ありがとうございます。
補足
2.ですが例えば A,B,Cというセル項目があります。 ラジオボタンでBが選択された場合 Bのセルの下に『○』とコマンドボタンを押した際 表記されるようにしたいのですが そんなこと出来ますでしょうか。
補足
2. ユーザーフォーム内に チェックボックスを3つ設けたとします。 『□A □B □C』ってな感じです。 例えば Aにチェックが入ったときは『a1』に○と表記させる Bにチェックが入ったときは『b1』に○と表記させる って感じでコマンドボタンが押されたときに チェックが入っている指定のセルに"○"と表記されるようにしたのですが これで、うまく伝わるでしょうか。 説明が悪くて申し訳ありませんが 何卒宜しくお願い致します。