ユーザーフォームからの入力で下記のコードなんですが・・・
色々とこちらで質問して教えて頂いたものを継ぎ足し変更しで何とか作りました。
ですが、二重登録防止の所で「No」を選択した場合に処理を中断は出来るのですが、入力データがそのまま残ってしまいます。
処理を中断した場合に入力データをクリアしてTextBox1にセットフォーカスし、新たに入力を開始するには何が足りませんか?訂正箇所等ありますか?
特にエラーにならないので自分では探せずに困っています。
詳しい方、お教え下さい。
Dim Ar As Variant
Private cmbFlg As Boolean
Option Explicit
Private Sub UserForm_Initialize()
'オプションボタンの内容の設定
Ar = Array("外注", "仕入", "未払")
End Sub
Private Sub CommandButton1_Click()
Dim Ctl As Control, rng As Range, i As Long
With Worksheets("sheet1")
'二重登録の防止
Dim rc As VbMsgBoxResult
rc = MsgBox("次の入力をしますか?", vbYesNo + vbQuestion)
If rc = vbYes Then
Else
MsgBox "処理を中止します", vbCritical
Exit Sub
End If
Set rng = Range("A" & Rows.Count).End(xlUp).Offset(1).Cells
rng.Value = Me.TextBox1.Text
rng.Offset(, 1) = Me.TextBox2.Text
rng.Offset(, 2) = Me.TextBox3.Text
If OptionButton1 = True Then
rng.Offset(, 3).Value = OptionButton1.Caption
ElseIf OptionButton2 = True Then
rng.Offset(, 3).Value = OptionButton2.Caption
ElseIf OptionButton3 = True Then
rng.Offset(, 3).Value = OptionButton3.Caption
End If
rng.Offset(, 4) = Me.TextBox4.Text
rng.Offset(, 5) = Me.TextBox5.Text
For Each Ctl In Controls
If TypeName(Ctl) = "TextBox" Then
Ctl.Value = ""
End If
UserForm1.TextBox1.SetFocus
Next Ctl
End With
End Sub
Private Sub OptionButton1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
'テンキー入力: 1外注, 2仕入,3未払
Dim flg As Boolean
Dim i As Long, j As Long
If ActiveControl.Name <> "Frame1" Then Exit Sub
If KeyCode = 97 Then OptionButton1.Value = True: j = 1
If KeyCode = 98 Then OptionButton2.Value = True: j = 2
If KeyCode = 99 Then OptionButton3.Value = True: j = 3
If KeyCode = 13 And flg Then TextBox4.SetFocus
End Sub
Private Sub optionbutton1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
'Enterで次のフォーカスに移動
If KeyCode = vbKeyReturn Then
Me.TextBox4.SetFocus
End If
End Sub
Private Sub CommandButton2_Click()
'終了ボタン
If MsgBox("終了しますか?", vbQuestion + vbOKCancel) = vbOK Then
Unload Me
End If
End Sub
No.1ベストアンサー
- 回答日時:
前の質問の流れも今回のコードも全部精読していないので間違ってたら恐縮ですが、以下ではどうでしょうか。
Else節に追記しています。
---------------------------------------------------------------------------
'二重登録の防止
Dim rc As VbMsgBoxResult
rc = MsgBox("次の入力をしますか?", vbYesNo + vbQuestion)
If rc = vbYes Then
Else
MsgBox "処理を中止します", vbCritical
For k=1 To 5
Controls("TextBox" & k).Value=""
Next k
TextBox1.SetFocus
Exit Sub
End If
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) エクセル マクロ(A1:A10)までの中で一番多く出た数字をB10に表示 6 2023/04/25 17:01
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
エクセルで、日付を入力すると...
-
【Excel】特定の文字を含むセル...
-
メルカリのメルカードで買い物...
-
VBAでループ内で使う変数名を可...
-
switch の範囲指定
-
EXCEL VBA マクロ 実行する度に...
-
DoEventsがやはり分からない
-
VBA SaveChanges 上書きされない
-
VBの質問#if 0 then ってどう...
-
C言語 b += a ? 1 : 0; の意味
-
UMLでの例外処理
-
リョウ・・・量?料?
-
月度は何て読みますか?
-
iD
-
findは動くがfindnextがマクロ...
-
VBAでGetAsynckeyStatekのエラー
-
TextBoxに日付を自動的に入れる
-
ビープ音を連続して鳴らす
-
VB.NET Excelを読み込んでDataT...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
メルカリのメルカードで買い物...
-
エクセルで、日付を入力すると...
-
VBAでループ内で使う変数名を可...
-
【Excel】特定の文字を含むセル...
-
EXCEL VBA マクロ 実行する度に...
-
DoEventsがやはり分からない
-
UMLでの例外処理
-
月度は何て読みますか?
-
switch の範囲指定
-
VBの質問#if 0 then ってどう...
-
セルの値が0はクリアするマクロ
-
VB.NET Excelを読み込んでDataT...
-
Do~Loopした回数をカウントしたい
-
Loadイベント中にほかのイベン...
-
Select Case文でこのようなこと...
-
findは動くがfindnextがマクロ...
-
緊急です。 知り合いから50kgの...
-
リョウ・・・量?料?
-
理不尽、行き場のないイライラ...
おすすめ情報