
ユーザーフォームにて以下の処理がしたいです。
1・登録を押す。
2・材料登録フォーム出る。
3・品目を入力しENTERすると数量欄をアクティブさせる。
4・数量を手入力後ENTERし、登録ボタンをアクティブさせる。
5・さらにENTERすると登録する。
登録はA列に品目、B列に数量を記載
登録は以前登録済みの場合、以前の列に数量を加算するのみ実施する。
新規品目時は品目数量を登録する。
ただし、A列の最下段に記載する。
品目は全角半角入力された場合、全て半角化し登録する。
数量が数量以外入力された場合エラーとする。
1.2.3.4までは出来ました。
それから半角エラーと数量以外エラーも出来ました。
しかし、5の登録にて最終行が更新されていないのか新規品目を最下段に書き込むことが出来ないのです。(既存部品に数量を増やすことは可能)
どなたかご教授お願いします。
※Ver.2010で作ってはいますが2007環境でも動かしたいとおもっています。
以下コード記載
ユーザーフォーム:材料登録
Option Explicit
Dim CNT1, Last, sh1,
Private Sub TextBox1_Change()
TextBox1 = StrConv(TextBox1.Value, vbNarrow)
End Sub
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode <> 13 Then Exit Sub
KeyCode = 0
If TextBox1 = "" Then
TextBox1.SetFocus
MsgBox "入力してください。", vbOKOnly + vbCritical, "エラーメッセージ"
Exit Sub
End If
TextBox2.SetFocus
End Sub
Private Sub TextBox2_Change()
TextBox2 = StrConv(TextBox2.Value, vbNarrow)
End Sub
Private Sub TextBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode <> 13 Then Exit Sub
KeyCode = 0
If TextBox2 = "" Then
TextBox2.SetFocus
MsgBox "入力してください。", vbOKOnly + vbCritical, "エラーメッセージ"
Exit Sub
Else
If Not IsNumeric(TextBox2.Value) Then
TextBox2 = ""
MsgBox "数量以外が入力されました。 " & vbCrLf & _
"入力しなおしてください。", vbOKOnly + vbCritical, "エラーメッセージ"
TextBox2.SetFocus
Exit Sub
Else
登録.SetFocus
End If
End If
End Sub
Private Sub 登録_Click()
Set sh1 = Sheet1
Last = sh1.Range("A65536").End(xlUp).Row
CNT1 = 4
For CNT1 = 4 To Last
If sh1.Cells(CNT1, 1).Value = TextBox1.Text Then
sh1.Cells(CNT1, 1).Select
sh1.Cells(CNT1, 2).Value = sh1.Cells(CNT1, 2).Value + TextBox2.Value
TextBox1 = ""
TextBox2 = ""
Else
sh1.Cells(Last + 1, 1).Value = TextBox1.Text
sh1.Cells(Last + 1, 2).Value = TextBox2.Value
sh1.Cells(CNT1, 1).Select
TextBox1 = ""
TextBox2 = ""
End If
Next CNT1
TextBox1.SetFocus
End Sub
Private Sub 閉じる_Click()
Unload 材料登録
End Sub

No.1ベストアンサー
- 回答日時:
登録_Click()を変えました。
以下のようににしてください。
品目があれば、そこに数量を追加後、ループ終了。
ループ終了時、品目なしなら、品目追加を行っています。
-------------------------------------
Private Sub 登録_Click()
Dim findFlag As Boolean
Set sh1 = Sheet1
Last = sh1.Range("A65536").End(xlUp).Row
CNT1 = 4
findFlag = False
For CNT1 = 4 To Last
If sh1.Cells(CNT1, 1).Value = TextBox1.Text Then
sh1.Cells(CNT1, 1).Select
sh1.Cells(CNT1, 2).Value = sh1.Cells(CNT1, 2).Value + TextBox2.Value
TextBox1 = ""
TextBox2 = ""
findFlag = True
Exit For
End If
Next CNT1
If findFlag = False Then
sh1.Cells(Last + 1, 1).Value = TextBox1.Text
sh1.Cells(Last + 1, 2).Value = TextBox2.Value
sh1.Cells(CNT1, 1).Select
TextBox1 = ""
TextBox2 = ""
End If
TextBox1.SetFocus
End Sub
フラグ判定によりForを抜けるという発想まではいたったんですがうまくいかなかったので助かりました。
しっかりと動作いたしました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) VBA 重複チェック後に値をワークシートに転記する方法を教えてください。 1 2023/03/19 12:43
- Visual Basic(VBA) Excel VBA ユーザーフォーム1のコンボボックスに別ブックの値を反映させたいです。 6 2023/03/21 16:12
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Visual Basic(VBA) VBAコードが作動せず、どこに問題があるのか教えて下さい。 3 2023/06/13 13:20
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ハイフンとマイナス
-
入力フォーム(電話番号)
-
VB.net テキストボックスの入力...
-
VBAのTextBoxに半角数字のみ入...
-
リッチテキストでIMEを動作させ...
-
scanf( )で日本語を入力する方...
-
VB2005 TextBoxに何も入力しな...
-
フォーム入力の際、電話番号等...
-
VS2010Exprsライセンスキー取得...
-
「FROM 句の構文エラーです」が...
-
海外 スマホ
-
至急です。Yahoo!IDを作りたく...
-
読み方教えてください
-
Amazonについてです。 アカウン...
-
第5人格の体験分割みたいなも...
-
agodaで現地決済にしたのにカー...
-
クレジットカードの名義人の入...
-
ネット内で「事後通販」という...
-
カードの請求でApple.combillみ...
-
アマゾン商品支払い
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ハイフンとマイナス
-
VBAのTextBoxに半角数字のみ入...
-
TextBoxに半角数字のみの入力し...
-
入力フォーム(電話番号)
-
テキストボックスの入力制限
-
VB2005 TextBoxに何も入力しな...
-
scanf( )で日本語を入力する方...
-
フォームの内容のチェック
-
「FROM 句の構文エラーです」が...
-
メールフォームのFAX番号で「記...
-
VS2010Exprsライセンスキー取得...
-
フォーム入力の際、電話番号等...
-
VBA ユーザーフォーム テキスト...
-
Eメールを一度で複数の人に送...
-
imode用の郵便番号検索CGI
-
JSPで、日本語入力のON/OFF
-
単純なコマンドプロンプトが動...
-
WinAPIで日本語入力モード(倍...
-
メールが送れません
-
リッチテキストでIMEを動作させ...
おすすめ情報