アプリ版:「スタンプのみでお礼する」機能のリリースについて

https://oshiete.goo.ne.jp/qa/11496859.html
No.1 に対して補足です。

ご指導を早くいただきながら返事が遅くなり失礼しました。
下記の構文は、
No.1のご指導を反映したものです。

結果は
1 メッセージは出ます
2 手動で textTEL.Text をクリックし入力後、エンターにて
  登録ボタン迄進みクリックするとシートに転記します
3 メッセージが再度表示されます

希望は
 メッセージをOKするとtextTEL.Textに自動で戻りメッセージは表示しない
再ご指導をお願いします。


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

n = Cells(Rows.Count, 1).End(xlUp).Row + 1

Cells(n, 1) = textKaisha.Text
Cells(n, 4) = textYomi.Text
Cells(n, 3) = textKatakana.Text
Cells(n, 5) = textYubin.Text
Cells(n, 8) = textJusho2.Text
Cells(n, 9) = textTEL.Text
Cells(n, 10) = textFAX.Text
Cells(n, 11) = textEmail.Text
Cells(n, 12) = textTantou.Text
Cells(n, 15) = textBiko.Text
Cells(n, 16) = textNyuryoku.Text

dim errmsg As String
If textTEL.Text = "" Then errmsg = errmsg & "必須の電話番号が入力されていません。" + vbNewLine
End If

textKaisha.Text = ""
textYomi.Text = ""
textKatakana.Text = ""
textYubin.Text = ""
textJusho2.Text = ""
textTEL.Text = ""
textFAX.Text = ""
textEmail.Text = ""
textTantou.Text = ""
textBiko.Text = ""
textNyuryoku.Text = ""

If Len(Trim(errmsg)) <> 0 Then
MsgBox errmsg
End Sub   ’GoTo endoutput
End If
textKaisha.SetFocus

For Each Ctrl In Me.Controls
If Ctrl.Name Like "text*" Then
Ctrl.Value = ""
End If
Next Ctrl

End Sub

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

  • どう思う?

    ありがとうございます。
    上手く行きました。

    再お願いですが、

    "必須の電話番号が入力されていません。"

    のメッセージが表示され "OK" をクリックすると

    自動的に textTEL.Text  戻すことは可能でしょうか。

    もし可能ならばご指導いただけませんか。

    No.1の回答に寄せられた補足コメントです。 補足日時:2020/02/21 20:29
  • うれしい

    了解です

    No.3の回答に寄せられた補足コメントです。 補足日時:2020/02/21 20:36

A 回答 (4件)

あれ?textTEL.SetFocusで戻りませんか?


#2の纏めたコードでtextTEL.Textに戻ると思います。検証してください。

ところで、同様の質問がされる形になりマルチスレッド状態かと思います。
(質問をした事が無いのでどのようにする方法があるか、知りませんので)
判断は、お任せいたしますが、どちらかを削除するなど対応した方がよろしかと思います。
    • good
    • 0
この回答へのお礼

おはようございます
マルチスレッドに関してはNo.4の前に締め切らさせていただいと思いますがそのつもりはなかったです
誤解を与えたらお詫び申しあげます

ご指導のおかげさまでうまくできました
丁寧なご指導には心より感謝しています

ありがとうございました

お礼日時:2020/02/22 07:47

抜けまし


Dim Ctrl As Object

Dim n As Long ’行の変数 下に書き加えてください。
この回答への補足あり
    • good
    • 0

先にも記しましたが、


textKaisha.Text = ""
textYomi.Text = ""
textKatakana.Text = ""
textYubin.Text = ""
textJusho2.Text = ""
textTEL.Text = ""
textFAX.Text = ""
textEmail.Text = ""
textTantou.Text = ""
textBiko.Text = ""
textNyuryoku.Text = ""
も不要と思われますが、いかがでしょう?

なので、纏めると

Private Sub cmdTouroku_Click()
Dim Sh As Worksheet ’対象シートの変数
Dim n As Long ’行の変数
  If textTEL.Value = "" Then
    MsgBox ("必須の電話番号が入力されていません。")
    textTEL.SetFocus
    Exit Sub
  End If
  '  Set Sh = ActiveSheet ’対象シートが表示されているシートの場合
  Set Sh = Worksheets("対象のシート名") ’実際の作業対象シート名を入れてください。 複数あり表示されているシートに実行する場合は上の行の構文を差し替える。

  With Sh ’UserFormからの実行のようなので操作シートを明示した方が良いです。
    n = .Cells(Rows.Count, 1).End(xlUp).Row + 1
    .Cells(n, 1) = textKaisha.Text
    .Cells(n, 4) = textYomi.Text
    .Cells(n, 3) = textKatakana.Text
    .Cells(n, 5) = textYubin.Text
    .Cells(n, 8) = textJusho2.Text
    .Cells(n, 9) = textTEL.Text
    .Cells(n, 10) = textFAX.Text
    .Cells(n, 11) = textEmail.Text
    .Cells(n, 12) = textTantou.Text
    .Cells(n, 15) = textBiko.Text
    .Cells(n, 16) = textNyuryoku.Text
  End With

  For Each Ctrl In Me.Controls
    If Ctrl.Name Like "text*" Then
      Ctrl.Value = ""
    End If
  Next Ctrl
  textKaisha.SetFocus

End Sub
    • good
    • 0

前回の#1です。


上手く伝わらず、すみません。

>3 メッセージが再度表示されます
入力されたのに再度チェックする必要は、ないと思いますので
dim errmsg As String
If textTEL.Text = "" Then errmsg = errmsg & "必須の電話番号が入力されていません。" + vbNewLine
End If
If Len(Trim(errmsg)) <> 0 Then
MsgBox errmsg
End Sub   ’GoTo endoutput
End If
textKaisha.SetFocus

は、不要に思います。


>メッセージをOKするとtextTEL.Textに自動で戻り

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

のみでいかがでしょう。

本ご質問において、下記は忘れてください。

dim errmsg As String
If textTEL.Text = "" Then errmsg = errmsg & "必須の電話番号が入力されていません。" + vbNewLine
End If
If Len(Trim(errmsg)) <> 0 Then
MsgBox errmsg
End Sub   ’GoTo endoutput
End If
のやり方は、考え方は、#2に記しましたが、チェック項目を増やす場合で
いずれも、メイン処理前に実施する項目です。
この回答への補足あり
    • good
    • 0

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