Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


11607 / 13646 ツリー ←次へ | 前へ→

【15125】行削除の方法を教えて下さい hisao 04/6/16(水) 10:51 質問[未読]
【15126】Re:行削除の方法を教えて下さい Asaki 04/6/16(水) 11:15 回答[未読]
【15182】Re:行削除の方法を教えて下さい hisao 04/6/17(木) 11:04 お礼[未読]

【15125】行削除の方法を教えて下さい
質問  hisao E-MAIL  - 04/6/16(水) 10:51 -

引用なし
パスワード
   1行目はタイトルです。
C列がmynoの行をautofilterしてC列がmynoのデーターのみを削除したいのですが、
どうも 不確かで タイミングで必要なデーターも削除する恐れがあるようです。
下記2つのマクロを作ってみたのですが、どちらが確実でしょうか?
大切なデーターを削除してしまう恐れが有るので何かもっと確実な方法が有れば教えて頂きたいのですが。

Sub test()

myno = 2
Range("A2").AutoFilter Field:=3, Criteria1:=myno
Range("A2").CurrentRegion.Offset(1).Select
m = Range("A18").End(xlUp).Row
If m < 2 Then
ActiveSheet.ShowAllData
Exit Sub
End If
Selection.Columns("a:h").SpecialCells(xlCellTypeVisible).Select

Selection.EntireRow.Delete
ActiveSheet.ShowAllData


'Range("A2").CurrentRegion.Offset(5).Select
'  Selection.Resize(Selection.Rows.Count - 5).SpecialCells(xlCellTypeVisible).Select

End Sub

Sub test2()

myno = 2
Range("A2").AutoFilter Field:=3, Criteria1:=myno

m = Range("A18").End(xlUp).Row
If m < 2 Then
ActiveSheet.ShowAllData
Exit Sub
End If
Range("a2:h" & m).SpecialCells(xlCellTypeVisible).Select
Selection.EntireRow.Delete
ActiveSheet.ShowAllData

End Sub

【15126】Re:行削除の方法を教えて下さい
回答  Asaki  - 04/6/16(水) 11:15 -

引用なし
パスワード
   こんにちは。

>どうも 不確かで タイミングで必要なデーターも削除する恐れがあるようです。
そんなことはないと思いますが。
気になれば、どこかにブレークポイントを設定、F8キー押下でステップ実行して、
途中の処理が、実際にどのようになっているかを確かめて見られては?

↓こんなもんでどうでしょうか?
Sub test3()
  Dim myno  As Long
  myno = 2

  With ActiveSheet.AutoFilter.Range
    .AutoFilter Field:=3, Criteria1:=myno
    .Resize(.Rows.Count - 1).Offset(1).SpecialCells(xlCellTypeVisible) _
      .EntireRow.Delete Shift:=xlUp
  End With
  ActiveSheet.ShowAllData
End Sub

【15182】Re:行削除の方法を教えて下さい
お礼  hisao E-MAIL  - 04/6/17(木) 11:04 -

引用なし
パスワード
   ▼Asaki さん:
有り難う御座いました

>こんにちは。
>
>>どうも 不確かで タイミングで必要なデーターも削除する恐れがあるようです。
>そんなことはないと思いますが。
>気になれば、どこかにブレークポイントを設定、F8キー押下でステップ実行して、
>途中の処理が、実際にどのようになっているかを確かめて見られては?
>
>↓こんなもんでどうでしょうか?
>Sub test3()
>  Dim myno  As Long
>  myno = 2
>
>  With ActiveSheet.AutoFilter.Range
>    .AutoFilter Field:=3, Criteria1:=myno
>    .Resize(.Rows.Count - 1).Offset(1).SpecialCells(xlCellTypeVisible) _
>      .EntireRow.Delete Shift:=xlUp
>  End With
>  ActiveSheet.ShowAllData
>End Sub

11607 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free