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
No.4ベストアンサー
- 回答日時:
あれ?textTEL.SetFocusで戻りませんか?
#2の纏めたコードでtextTEL.Textに戻ると思います。検証してください。
ところで、同様の質問がされる形になりマルチスレッド状態かと思います。
(質問をした事が無いのでどのようにする方法があるか、知りませんので)
判断は、お任せいたしますが、どちらかを削除するなど対応した方がよろしかと思います。
おはようございます
マルチスレッドに関してはNo.4の前に締め切らさせていただいと思いますがそのつもりはなかったです
誤解を与えたらお詫び申しあげます
ご指導のおかげさまでうまくできました
丁寧なご指導には心より感謝しています
ありがとうございました
No.2
- 回答日時:
先にも記しましたが、
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
No.1
- 回答日時:
前回の#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に記しましたが、チェック項目を増やす場合で
いずれも、メイン処理前に実施する項目です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) VBA 重複チェック後に値をワークシートに転記する方法を教えてください。 1 2023/03/19 12:43
- Excel(エクセル) マクロでテキストファイルを読み込んだ際の最終セルにデータと改行が含まれる問題の改善方法 2 2022/03/25 16:50
- Excel(エクセル) VBA 同日で2回目(午後)の体温を登録するときのコード 3 2022/08/28 20:29
- Visual Basic(VBA) 【VBA】特定のワードが入っている行全体を塗りつぶしたい 4 2022/04/20 15:22
- Visual Basic(VBA) ユーザーフォームの書き出しで追加のご相談 ユーザーフォームの値をシートに書き出す際、コードが表示され 2 2022/08/05 10:58
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) フレーム内のオプションボタンの選択結果をセルに書き出したい。 図のような預金種目というフレームにオプ 2 2022/07/29 11:12
- Visual Basic(VBA) VBA チェックボックスで 5 2023/05/31 17:10
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
括弧があるとHYPERLINKで飛べな...
-
エクセルで複数のシートをフォ...
-
建築模型、カーブの作り方
-
Excel複数シートから日付と文字...
-
マグネットシートって・・・
-
Excel VBA シート名変更時、重...
-
マグナ250とマグナ50でパーツの...
-
車のシートがへたってきました...
-
XR250BAJAのシートのはずし方を...
-
バイクのシートを取り替えても...
-
リアシート無しで運転してたら...
-
原付 レッツシート開け方
-
エクセルVBA:他シートを選択す...
-
車のシートでおもらし
-
ドライブレコーダーのSDカード...
-
エクセルVBA 4行飛ばしで転記す...
-
XJR400 のシートを替えようと思...
-
芝生が根付かず苔ばかり生えて...
-
体育館フロアに敷くシートを教...
-
原付きを駐輪場に置いてると、...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで複数のシートをフォ...
-
括弧があるとHYPERLINKで飛べな...
-
電車のシートって何でこんな暑...
-
原付 レッツシート開け方
-
水の染み込んだバイクのシート...
-
シートベルトの固定解除
-
Excel複数シートから日付と文字...
-
ポップコーンの捨て方
-
BRIDEのシート張り替えってでき...
-
車のシートでおもらし
-
リアシート無しで運転してたら...
-
ポケットにミシンでワッペンを...
-
エクセルVBA 4行飛ばしで転記す...
-
メルセデスベンツ
-
【Excel Online】Excelデータの...
-
癒着してしまったテレビの液晶...
-
【Excel Online】特定シートの...
-
フォルツァ バッテリーを外して...
-
クルマのこのシートは走りのイ...
-
アルファード 7人乗りから8人...
おすすめ情報
ありがとうございます。
上手く行きました。
再お願いですが、
"必須の電話番号が入力されていません。"
のメッセージが表示され "OK" をクリックすると
自動的に textTEL.Text 戻すことは可能でしょうか。
もし可能ならばご指導いただけませんか。
了解です