Excel VBA質問箱 IV

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

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


12722 / 76734 ←次へ | 前へ→

【69527】Re:別シートの項目を削除するには?
発言  Yuki  - 11/7/28(木) 15:34 -

引用なし
パスワード
   ▼gin さん:
こんにちは。
1行目はタイトル行として(AutoFilter使用のため)
又使用していない列があるものとして(作業列として使用)
下記の方法ではどうでしょう。

Sub TESTc()
  Dim v1 As Variant
  Dim v2 As Variant
  Dim i  As Long
  Dim j  As Long
  Dim Dic As Object
  v1 = Worksheets("Sheet2").Range("A1").CurrentRegion.Resize(, 1).Value
  v2 = Worksheets("Sheet1").Range("A1").CurrentRegion.Resize(, 1).Value
’Sheet2をディクショナリに登録
  Set Dic = CreateObject("Scripting.Dictionary")
  For i = 1 To UBound(v1)
    Dic(v1(i, 1)) = Empty
  Next
' 存在チェック
  For i = 1 To UBound(v2)
    If Dic.Exists(v2(i, 1)) Then
' 合ったら "DeleteRow" に置き換え(Sheet1の値と重複しなければなんでもOK)
      v2(i, 1) = "DeleteRow"
    End If
  Next
  With Worksheets("Sheet1")
    .AutoFilterMode = False
' 空いている列(作業列)にチェックした値を貼付け 
    .Range("D1").Resize(UBound(v2)).Value = v2
' AutoFilterをかける
    With .Range("D1").CurrentRegion.Resize(, 1)
      .AutoFilter Field:=1, Criteria1:="DeleteRow"
' 可視行を削除
      .Offset(1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
    End With
    .AutoFilterMode = False
    .Columns(4).ClearContents
  End With
End Sub

5 hits

【69526】別シートの項目を削除するには? gin 11/7/28(木) 13:11 質問
【69527】Re:別シートの項目を削除するには? Yuki 11/7/28(木) 15:34 発言
【69531】Re:別シートの項目を削除するには? gin 11/7/28(木) 21:41 質問
【69540】Re:別シートの項目を削除するには? Yuki 11/7/29(金) 18:27 発言
【69532】Re:別シートの項目を削除するには? yuto 11/7/28(木) 22:21 発言
【69534】Re:別シートの項目を削除するには? gin 11/7/29(金) 10:04 質問
【69535】Re:別シートの項目を削除するには? gin 11/7/29(金) 10:06 お礼
【69541】Re:別シートの項目を削除するには? kanabun 11/7/30(土) 9:37 発言

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