dポイントプレゼントキャンペーン実施中!

今、VBAの本とインターネットで調べながら初めてユーザーフォームを作成中ですが、
どうしてもわからないことがあり、ご質問させていただきました。
初歩的なことかも知れませんが、ご教授よろしくお願い致します。

1.オプションボタンを二つ作成しました。
 一方を選択した場合、フレーム全体をグレーアウトに
 することはできますか。
 例)ユーザーフォーム上のオプションボタン
 A:住所登録   (郵便番号・所在地等を入力)
 B:電話番号登録 (電話番号を入力)
※Bをオプションボタンで選択した場合、Aのフレーム全体を
 グレーアウト(入力禁止)にすることはできますか。

2.ComboBoxで"年"、"月"、"日"それぞれプルダウンで選択できるように
 したのですが、ワークシートに反映する時、同一セルに入力するか、
 それらの数字を認識して日付として一つのセルに表示することはできますか。
 例)ユーザーフォーム上
   2007▼年   4▼月  19▼日
 ※一つのセルに“2007年4月19日”と表示することはできますか。

3.2.の続きで、"年"、"月"、"日"すべて選択している場合、
 チェックボックスにチェックが入り、どれか一つでも空白の場合は
 チェックボックスがグレーアウトしている、という状態はできますか。

4.ユーザーフォームで入力した内容がExcel上にどんどん
  追加していく時のマクロはどのように記述したらいいのですか。
 (ユーザーフォームに入力した内容を、セルを指定せずにどんどん
 追記していく方法)

質問が多くて申し訳ございませんが、よろしくお願い致します。

A 回答 (4件)

解りやすく簡単に書きました。

(初心者用です。)

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
    • good
    • 0
この回答へのお礼

詳しい手順を記載してくださって、ありがとうございます。
早速、上記内容を参考にして取り組ませていただきます。
ありがとうございました。

お礼日時:2007/04/21 20:49

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
    • good
    • 0
この回答へのお礼

お返事が遅くなり、大変申し訳ございません。
詳細を書いていただき、ありがとうございます。

同一セルに日付を挿入し、オプションボタンの設定も
できました!
ありがとうございました。

お礼日時:2007/05/06 18:46

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.の通りセルを固定し、答えをセルに書き込んだ後や途中でも
行追加できますか。

お手数ですが、再度よろしくお願い致します。

補足日時:2007/04/19 01:18
    • good
    • 0

エクセルの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.ともに、“コンボボックスの変更のイベントで連結してセルに出す”や
“イベントで入力状態をチェックしてチェックボックスの状態を変える”
とはどのような操作になるのでしょうか。

インターネットでキーワード検索等をしてみたのですが、
わかりませんでした。
申し訳ございませんが、ご教授いただけますでしょうか。

補足日時:2007/04/19 01:34
    • good
    • 0

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