![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_02.png?e8efa67)
エクセルVBA初心者です。
Sheet1に売上データが記載されているものがあります。
セルB列(B3から下、B1,B2は項目があります)に伝票番号が記載されており、UserForm1のTextBox1に削除したい伝票番号を入れ、CommandButton1をクリックすると削除されるようにしています。
2点、追加したい事があるのですが、どのような構文になるのか色々を試しているのですが、全くうまくいきません。
1.番号が存在しなかった場合に「該当の伝票番号がありません」とメッセージを出したい。
2.CommandButton1をクリックすると「Yes,No」が表示され、「Yes」は削除、「No」は、Unloadとしたい。
です。
現在の構文です。
Private Sub CommandButton1_Click()
Dim i As Long, x As Long
Dim 番号 As Long
If UserFrom1.TextBox1.Text = "" Then
MsgBox "伝票番号を入力してください。"
Exit Sub
End If
With Sheets("Sheet1")
x = .Cells(Rows.Count, "B").End(xlUp).Row
番号 = UserForm1.TextBox1.Text
For i = x To 3 Step -1
If Cells(i, 2) = 番号 Then
Cells(i, 2).EntireRow.Delete
TextBox1.Text = ""
End If
Next i
End With
End Sub
どうぞ宜しくお願い致します。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_14.png?e8efa67)
No.1ベストアンサー
- 回答日時:
以下のようにしてください。
追加、修正を行った箇所は、追加、修正のコメントを入れています。
-------------------------------------------------------
Private Sub CommandButton1_Click()
Dim i As Long, x As Long
Dim 番号 As Long
Dim ans As Long '追加
ans = MsgBox("削除を行いますか", vbYesNo) '追加
If ans = vbNo Then '追加
Unload Me '追加
Exit Sub '追加
End If '追加
If UserForm1.TextBox1.Text = "" Then '修正 UserFrom1-->UserForm1
MsgBox "伝票番号を入力してください。"
Exit Sub
End If
With Sheets("Sheet1")
x = .Cells(Rows.Count, "B").End(xlUp).Row
番号 = UserForm1.TextBox1.Text
For i = x To 3 Step -1
If Cells(i, 2) = 番号 Then
Cells(i, 2).EntireRow.Delete
TextBox1.Text = ""
Exit Sub '追加
End If
Next i
End With
MsgBox ("該当の伝票番号がありません") '追加
End Sub
---------------------------------
No.3
- 回答日時:
こんにちは。
オーソドックスな方法や、関数を使った方法など、人により得意不得意にもより、いろんな方法があります。今回は、そのままにしましたが、Find メソッドや、MATCH関数などを使った方法などもあります。
ご質問者さんは、正統派で、もうその辺りはマスターされているようです。ただ、ExcelのVBAの面白さは、そのコードのイレギュラーな部分にあります。そういうことは、掲示板だけでしか覚えられないことです。
ところどころ、.Cells と「.(コンマ)」が抜けていますから、それは修正しました。ただ、この場合には、必要不可欠というものではありませんが。
'//
Private Sub CommandButton1_Click()
Dim i As Long
Dim x As Long
Dim 番号 As Long
If Me.TextBox1.Text = "" Then
MsgBox "伝票番号を入力してください。"
Exit Sub
End If
With Sheets("Sheet1")
x = .Cells(Rows.Count, "B").End(xlUp).Row
番号 = Me.TextBox1.Text
For i = x To 3 Step -1
If .Cells(i, 2) = 番号 Then
If MsgBox("実行しますか、やめますか? Y=削除, N=中止", vbYesNo) = vbYes Then
.Cells(i, 2).EntireRow.Delete
Me.TextBox1.Text = ""
Else
Unload Me
Exit Sub
End If
End If
Next i
If i < 3 Then
MsgBox 番号 & "は見つかりませんでした", vbExclamation
Me.TextBox1.Text = ""
End If
End With
End Sub
Me というのは、「ミー」と呼び、そのモジュールの親オブジェクトのことを指します。したがって、ここでは、UserForm1 のことです。
なお、#1さんと質問の解釈に違いがあるようです。
No.2
- 回答日時:
こんなのはいかがでしょうか?
-----------------------------------------------------------------------------
Private Sub CommandButton1_Click()
Dim 行 As Long
Dim 終 As Long
Dim 番号 As Long
Dim 有 As Boolean
If MsgBox("削除しますか?" & Chr(13) & "(「いいえ」で終了)", vbYesNo) = vbNo Then
Unload Me
Exit Sub
End If
If TextBox1.Text = "" Then
MsgBox "伝票番号を入力してください。"
Exit Sub
End If
With Sheets("Sheet1")
終 = .Cells(Rows.Count, "B").End(xlUp).Row
番号 = TextBox1.Text
For 行 = 終 To 3 Step -1
If Cells(行, 2) = 番号 Then
Cells(行, 2).EntireRow.Delete
有 = True
End If
Next 行
TextBox1.Text = ""
TextBox1.SetFocus
End With
If 有 = False Then MsgBox ("該当の伝票番号がありません")
End Sub
-----------------------------------------------------------------------------
お探しの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で質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) VBA 請求書自動作成 3 2022/04/24 01:58
- Visual Basic(VBA) 数字が「0」の列を削除するため、下記のコードを実行しましたが、コンパイルエラーSubまたはFunct 3 2022/12/04 00:00
- Visual Basic(VBA) VBAコードが作動せず、どこに問題があるのか教えて下さい。 3 2023/06/13 13:20
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Excel(エクセル) マクロで最終行から上に検索を逆にしたい 1 2022/05/17 18:27
- Visual Basic(VBA) 【VBA】特定のワードが入っている行全体を塗りつぶしたい 4 2022/04/20 15:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
郵便局 web再配達依頼で番号入...
-
皇女 和宮が詠んだ和歌を教えて...
-
現金書留は本人でなくても(代理...
-
置き配で頼んだ商品が 盗難に会...
-
国際郵便での本の送り方について
-
郵便物を相手に自分の住所知ら...
-
ゆうパケットプラスが郵便局か...
-
日本郵便は何年後かに潰れると...
-
キャリーバッグが届く時間帯が...
-
宅配便到着について。「1週間...
-
WOWOWプログラムガイドの発送停...
-
発送方法について詳しい方教え...
-
国際郵便でストリート名書き忘...
-
キャットフードは海外へ送れま...
-
ライフカードの発送完了メール...
-
定額小為替 払い戻しは、ゆうゆ...
-
ローソンでメルカリ発送したら...
-
JCBカードwの発送準備完了から...
-
クロネコヤマトで、仕分け発送...
-
意味 教えて下さい。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
運送会社の送り状の問合せ伝票...
-
エクセル 関数 伝票番号を毎...
-
速やかな車番連絡サイトを作るには
-
代引きで購入した商品の住所変...
-
アマゾンの流れについて教えて...
-
郵便局 web再配達依頼で番号入...
-
アマゾンで買い物をしたのです...
-
エクセルVBA For ~ Nextステ...
-
King&Princeの口座番号わかるか...
-
物品の配送について
-
アマゾンのコンビニ受け取りの...
-
日本郵便は何年後かに潰れると...
-
宅配便到着について。「1週間...
-
置き配で頼んだ商品が 盗難に会...
-
ライフカードの発送完了メール...
-
ゆうパケットプラスが郵便局か...
-
現金書留は本人でなくても(代理...
-
ヤフオクの発送について質問で...
-
発送予定日は2017/06/30頃より...
-
普通郵便を着払いにする方法
おすすめ情報