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

いつもお世話になります。

OSはWin10、Office365 です。

VBAの勉強中でオプションボタンにトライしています。

下記の構文を作成7したのですが「入力」コマンドボタンをクリックしても作動できません。

ご指導いただけませんでしょうか。



参考
Private Sub UserForm_Initialize()
TextBox1.Text = Format(Date, "mm/dd")
End Sub
'[登録]ボタンクリック時の処理
Private Sub CommandButton1_Click()
If TextBox2.Value = "" Then
MsgBox ("必須の電話番号が入力されていません。")
TextBox7.SetFocus
End If
Exit Sub


Dim コントロール1 As Control
For Each コントロール1 In Frame1.Controls
If コントロール1.Value = True Then Exit For

Dim n As Long '行の変数
n = 2
Do While Cells(n, 8) <> ""
n = n + 1
Loop
Next
Cells(n, 2) = TextBox1.Text '入力日
Cells(n, 3) = TextBox2.Text '電話番号
Dim errmsg As String
If TextBox2.Text = "" Then errmsg = errmsg & "必須の電話番号が入力されていません。" + vbNewLine
TextBox2.SetFocus

TextBox1.Text = Format(Date, "mm/dd")
TextBox2.Text = ""
コントロール1.Value = ""

TextBox1.SetFocus
End Sub


'*********************
'終了 YOKOHAMA CHABIN
'*********************
Private Sub CommandButton2_Click()
End
End Sub

「コマンドボタン(入力)をクリックしても作」の質問画像

質問者からの補足コメント

  • どう思う?

    ご指導ありがとうごさいます。

    上手くできませんでした

    よく理解できないまま※1にしました。
    そうしたら※2に黄色の反転が。


    Private Sub CommandButton1_Click()
    If TextBox2.Value = "" Then

    Exit Sub '※1

    MsgBox ("必須の電話番号が入力されていません。")
    TextBox7.SetFocus
    End If


    Cells(n, 2) = TextBox1.Text '入力日 '※2

    未熟な私にお手数かけます。

    No.2の回答に寄せられた補足コメントです。 補足日時:2020/05/04 15:56
  • どう思う?

    誠に恐れ入りますが下記の意味が理解できず試行錯誤しています
    良ければ具体的にご指導いただければ幸甚の至りです。
    #2
    上記の様にExit SubをIF条件TRUE内に入れてください。

    コードのに関して整理に関してはここまでやっとこぎつけたところです。
    何とかしなければならないですね。
    ご指摘に感謝しています

    No.3の回答に寄せられた補足コメントです。 補足日時:2020/05/04 19:05

A 回答 (4件)

Private Sub CommandButton1_Click() ’CommandButton1が押されると実行する


If TextBox2.Value = "" Then      ’TextBox2の値が””(空白)ならば、
MsgBox ("必須の電話番号が入力されていません。") ’メッセージを出力
TextBox7.SetFocus  ’どこにあるか不明ですがTextBox7にフォーカスを設定(選択、入力モード)
End If        ’条件分岐終了
Exit Sub       ’Private Sub CommandButton1_Click()の実行が終了  (条件分岐終わって通常処理になったのに終了してはダメじゃん)

これは、End Ifの後にExit SubがあるのでPrivate Sub CommandButton1_Click()の実行が終了します。

なので条件 If TextBox2.Value = "" Then だった時に実行をやめるのでEnd Ifの直前に書きます。
従って、#2の回答の様にします。


ユーザーフォームがロードされる時に実行されます。
Private Sub UserForm_Initialize()
TextBox1.Text = Format(Date, "mm/dd")
End Sub
>Cells(n, 2) = TextBox1.Text '入力日 '※2
TextBox1には、05/04のような表示がされているはずですが

取り敢えずコード上からここまで
    • good
    • 0
この回答へのお礼

上手くできました。
丁寧なご指導で本当にありがとうございます。
先は遠いですがほんの少しずつ前に進んでいます。

参考に下記のようにしました。
Private Sub CommandButton1_Click()
If TextBox2.Value = "" Then
MsgBox ("必須の電話番号が入5力されていません。")

Exit Sub

TextBox2.SetFocus
End If

お礼日時:2020/05/04 20:58

>よく理解できないまま※1にしました。


#2の回答の様にしてください。

Cells(n, 2) = TextBox1.Text '入力日 '※2  エラー?
nは2以上が代入されTextBox1は空白でもエラーは出ないかと、、

何れにしても
ご質問のコードを整理したほうが良いですね。

>コマンドボタンをクリックしても作動できません。
につきましては、#2の様にしてください。

コードに登場するコントロールが配置されていれば実行できると思います。
この回答への補足あり
    • good
    • 0

#1


読み直し、すみません訂正します。

Private Sub CommandButton1_Click()
If TextBox2.Value = "" Then
MsgBox ("必須の電話番号が入力されていません。")
TextBox7.SetFocus
Exit Sub
End If

上記の様にExit SubをIF条件TRUE内に入れてください。
この回答への補足あり
    • good
    • 0

コードを整理する必要があるようにも思いますが


TextBox7.SetFocus
End If
Exit Sub  ここですべての場合に抜けています。
なので
Exit Sub  は不要ですので削除してみてください。
    • good
    • 0

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