Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


3866 / 13646 ツリー ←次へ | 前へ→

【59784】ユーザーボックスについて ハム 09/1/8(木) 12:24 質問[未読]
【59785】Re:ユーザーボックスについて にぃ 09/1/8(木) 13:47 発言[未読]
【59794】Re:ユーザーボックスについて Panko 09/1/8(木) 20:38 回答[未読]

【59784】ユーザーボックスについて
質問  ハム  - 09/1/8(木) 12:24 -

引用なし
パスワード
   現在、VBAを勉強していますが、非常に困っていますので
教えてください。

フォームを押したら、Userform1がたちあがるようにしたいです。
userform1はoptionボタンで5つの中から1つ選び、msgboxで「***でいいですか?」
と確認をとります。
ここで「はい」、「いいえ」の分岐をつけ、「はい」ならマクロBを実行
「いいえ」なら再度、このuserformを実行するものです。
よろしくお願いいたします。


なお、userformのなかでfor〜next文はつかえないものでしょうか。

Private Sub CommandButton1_Click()
  If OptionButton1.Value = True Then MsgBox OptionButton1.Caption & " でいいですか"
  If OptionButton2.Value = True Then MsgBox OptionButton2.Caption & " でいいですか"
  If OptionButton3.Value = True Then MsgBox OptionButton3.Caption & " でいいですか"
  If OptionButton4.Value = True Then MsgBox OptionButton4.Caption & " でいいですか"
  If OptionButton5.Value = True Then MsgBox OptionButton5.Caption & " でいいですか"
End Sub

【59785】Re:ユーザーボックスについて
発言  にぃ  - 09/1/8(木) 13:47 -

引用なし
パスワード
   ▼ハム さん:
こんにちは!

OptionButtonで選択された名前のUserFormを起動しようとしてる感じでしょうか?

>ここで「はい」、「いいえ」の分岐をつけ、「はい」ならマクロBを実行
>「いいえ」なら再度、このuserformを実行するものです。
これを参考に自由に変えてみてください^^

サンプル
Private Sub CommandButton2_Click()
  Dim str_vb As String
  
  str_vb = MsgBox("マクロを起動しますか?", vbYesNo + vbQuestion)
  
  If str_vb = vbYes Then
    MsgBox "起動!", vbInformation
  ElseIf str_vb = vbNo Then
    MsgBox "起動されませんでした。", vbCritical
  End If
End Sub

>なお、userformのなかでfor〜next文はつかえないものでしょうか。
もちろん使えますが、どのような目的でしょうか?

【59794】Re:ユーザーボックスについて
回答  Panko  - 09/1/8(木) 20:38 -

引用なし
パスワード
   ハムさん
今晩は。Pankoです

こんな感じと思いますが…

1.UserForm1(ユーザーフォーム1)に
OpptionButton 1〜5 を作成する
CommandButton を1ヶ作る

次のコードをCommandButtonをダブルクリックして出てきた「CommandButton1」右に「Click」と書かれたコードを書くシートに、貼り付けてください

'===============================
Private Sub CommandButton1_Click()
  Dim i As Long
  For i = 1 To Controls.Count - 1
   If Controls("OptionButton" & i).Value Then
      Run "test" & i
      Controls("OptionButton" & i).Value = False
     Exit For
   End If
  Next
End Sub

2.標準モジュール
module1に次の2ヶのコードを貼り付けてください
'================
Sub UserForm1Show()
 UserForm1.Show 0
End Sub
'====================
Sub test1()
Dim str_vb As String
  str_vb = MsgBox("test1を実行しますか?", vbYesNo + vbQuestion)
  If str_vb = vbYes Then
    MsgBox "1を実行!", vbInformation
  ElseIf str_vb = vbNo Then
    MsgBox "1を中止", vbCritical
  End If
End Sub
Sub test2()
Dim str_vb As String
  str_vb = MsgBox("test2を実行しますか?", vbYesNo + vbQuestion)
  If str_vb = vbYes Then
    MsgBox "2を実行!", vbInformation
  ElseIf str_vb = vbNo Then
    MsgBox "2を中止", vbCritical
  End If
End Sub
Sub test3()
Dim str_vb As String
  str_vb = MsgBox("test3を実行しますか?", vbYesNo + vbQuestion)
  If str_vb = vbYes Then
    MsgBox "3を実行!", vbInformation
  ElseIf str_vb = vbNo Then
    MsgBox "3を中止", vbCritical
  End If
End Sub
'test3まで同じ事を書きました、それゆえOpptionButton1〜3まで正常に
動作します。test4・5はこれと同じように書けば出来ます。

動作は、UserForm1Showから動かしてください。

※test1〜3まで…にぃ様のコードを拝借しました。ご了承ください。m( )m

3866 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free