プロが教える店舗&オフィスのセキュリティ対策術

いろいろ手探りでVBAでユーザーフォームを作成し
コマンドボックスによりテキストボックスを指定のセルへ転記し
ユーザーフォームを終了させるという簡単ですがプログラミングをしました。

さらに、下記のことができたらと思ってるのですがどうしたら良いのかわかりません。

1.2種類のユーザーフォームを作成し、ファイルを開くと
 選択肢ウィンドウが現れ選択したほうのユーザーフォームが開く

2.チェックボックスまたはラジオボタンで選択された項目を
 指定のセルへ○を反映させたい。

以上のことを加えたいのですが、できますでしょうか。
つたない説明ですが御回答の程宜しくお願い致します。

A 回答 (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 を受け取り、その値に応じて "○" か空文字を返します。
    • good
    • 0

Private Sub CheckBox1_Click()


Range("A1") = "○"
End Sub

ですか?
ユーザーフォームに載せたチェックボックスをダブルクリックすると記述できます。

ただ、CheckBox1にチェックが入ると○を表示しますが、消すのは出来ません。
必要ならCheckBox2_Click()とかでRange("A1")=""として下さい。
    • good
    • 0

お礼1.は質問でしょうか?


ThisWorkBookモジュールのWorkBook_Openを使用すれば可能です。

2.はごめんなさい、まだ理解できないのですが・・・
シートモジュールの
OptionButton1_Click()

OptionButton1_Change()
で対応できませんか?

この回答への補足

2.
ユーザーフォーム内に
チェックボックスを3つ設けたとします。
『□A □B □C』ってな感じです。
例えば
Aにチェックが入ったときは『a1』に○と表記させる
Bにチェックが入ったときは『b1』に○と表記させる
って感じでコマンドボタンが押されたときに
チェックが入っている指定のセルに"○"と表記されるようにしたのですが
これで、うまく伝わるでしょうか。
説明が悪くて申し訳ありませんが
何卒宜しくお願い致します。

補足日時:2008/01/09 15:59
    • good
    • 0

1.選択肢ウインドウはもうひとつのユーザーフォームにしてボタンを2個つけて、押されたほうの(選択したほう)ユーザーフォームを開いて、選択肢ウインドウのユーザーフォームを消す。



2.は質問の意味が解らないので補足を頂いたほうがいいと思います。

この回答への補足

2.ですが例えば
 A,B,Cというセル項目があります。
 ラジオボタンでBが選択された場合
 Bのセルの下に『○』とコマンドボタンを押した際
 表記されるようにしたいのですが
 そんなこと出来ますでしょうか。

補足日時:2008/01/09 15:06
    • good
    • 0
この回答へのお礼

1.ファイルを開くと選択肢ウィンドウが自動(?)で呼び出す方法があ りますか。
 単純なことでしたね^^;
 ありがとうございます。

お礼日時:2008/01/09 15:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!