[[20170524183812]] 『Textboxにデータが無いとき警告』(yama) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『Textboxにデータが無いとき警告』(yama)

よろしくお願いします。
ユーザーフォームのTextbox1にデータが無いとき警告を発しマクロを中止するには
どのように修正すれば可能でしょうか?

Private Sub appendDateToSheet()
With Worksheets("表紙")
.Range("CT1").Value = Format(TextBox1.Text, "yyyy/m/d")
.Range("CT2").Value = Format(TextBox4.Text, "yyyy/m/d")
.Range("CT3").Value = Format(TextBox6.Text, "yyyy/m/d")
.Range("CT4").Value = Format(TextBox8.Text, "yyyy/m/d")
.Range("CU1").Value = TextBox2.Value
.Range("CU2").Value = TextBox3.Value
.Range("CU3").Value = TextBox5.Value
.Range("CU4").Value = TextBox7.Value
End With
End Sub

Private Sub CommandButton1_Click()

    If MsgBox("データをシートに記録します。よろしいですか?", vbYesNo) = vbNo Then Exit Sub
    appendDateToSheet
    MsgBox "記録完了。", vbInformation
  Unload Me
End Sub

< 使用 Excel:Excel2016、使用 OS:Windows10 >


条件を満たした時だけ実行

 If 条件 = True Then Aを実行

条件を満たしたらA、満たさなかったらB

 If 条件 = True Then
    Aを実行
 Else
    Bを実行
 End If

条件Aを満たしたらA、Bを満たしたらB、それ以外はC

 If 条件A = True Then
    Aを実行
 ElseIf 条件b = True Then
    Bを実行
 Else
    Cを実行
 End If

TextBoxの値の取得は

TextBox1.Value

のように取得できます。
(カリーニン) 2017/05/24(水) 18:53


マクロを中止するには

これは

Exit Sub

でプロシージャから抜けます。

 If 条件 = True Then

     Aを実行
  Else
     Exit Sub
  End If

あるいは

 If 条件 = False Then Exit Sub
(カリーニン) 2017/05/24(水) 18:56

(カリーニン)さん
早々にありがとうございます。
 >If 条件 = False Then Exit Sub
この条件部分の書き方がよく分からないのですが
よろしくお願いします。
(yama) 2017/05/24(水) 19:00

 今回の場合は

 If Me.TextBox1.Value = "" Then Exit Sub

 という感じになります。
(カリーニン) 2017/05/24(水) 19:02

(カリーニン)さん
すみません。以下のようにしてみたのですが"データが有りません"が
表示しません。違いますか??

    If MsgBox("データをシートに記録します。よろしいですか?", vbYesNo) = vbNo Then Exit Sub
    If Me.TextBox1.Value = "" Then Exit Sub
      MsgBox "データが有りません"
    appendDateToSheet
    MsgBox "記録完了。", vbInformation
  Unload Me
(yama) 2017/05/24(水) 19:07

 > If Me.TextBox1.Value = "" Then Exit Sub

 Exit Sub
でプロシージャを抜けますので、
 条件を満たしたらそれ以降の処理は行われません。

 VBA If文
 でネット検索したら参考HPが見つかると思います。

 以下は参考です。

 標準モジュール等のユーザーフォーム以外から実行する場合は

 Me.TextBox1
 を
 UserForm1.TextBox1
 または
 UserForm1.Controls("TextBox" & 1)
 とします。

 シートに配置したActiveXコントロールの場合は
 ↓のようにします。

 If Worksheets(1).OLEObjects("TextBox" & 1).Object.Value = "" Then
    MsgBox "aa"
    Exit Sub
 Else
    MsgBox "BB"
 End If

 ※これから30分〜1時間ほどネットを見られません。
(カリーニン) 2017/05/24(水) 19:13

(カリーニン)さん
ありがとうございました。
出来ました。素人なので以下のように
記入しましたがOKでしょうか?

    If MsgBox("データをシートに記録します。よろしいですか?", vbYesNo) = vbNo Then Exit Sub
    If Me.TextBox1.Value = "" Then
      MsgBox "データが有りません", vbInformation
Else
    appendDateToSheet
    MsgBox "記録完了。", vbInformation
  Unload Me
End If

(yama) 2017/05/24(水) 19:27


 一部順番を入れ替えた方がいいかもしれないですね。

 Private Sub CommandButton1_Click()
     If Me.TextBox1.Value = "" Then
        MsgBox "データが有りません", vbInformation
     Else
       If MsgBox("データをシートに記録します。よろしいですか?", vbYesNo) = vbNo Then Exit Sub
       appendDateToSheet
       MsgBox "記録完了。", vbInformation
       Unload Me
     End If
 End Sub

 参考過去ログもリンクして置きます。

[[20170221201539]] 『未入力を除外するには(TextBox)』(さとし)
(カリーニン) 2017/05/24(水) 20:23


(カリーニン)さん
ありがとうございました。
入れ替えました。

(yama) 2017/05/25(木) 00:31


 >MsgBox "記録完了。", vbInformation

 これは、PopUpでもいいですね。

 参考HPです。
http://officetanaka.net/excel/vba/tips/tips21.htm
(カリーニン) 2017/05/25(木) 09:07

(カリーニン)さん
ポップアップ面白いです。
利用させていただきます。
ありがとうございました。

(yama) 2017/05/25(木) 18:27


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.