システムwiki

Office:行を削除

AmanaSi 受付中 最終更新日:2022-05-27 06:46

以下のマクロを変更して、Sheet1 A2の内容に基づいてSheet2の列Aを検索した後、一致する行を削除することはできますか?

はいの場合、あなたは助けることができますか?さまざまな方法を試しましたが、どれもうまくいきませんでした.

Sub SubSearch()

SearchRowAsRangeを暗くする

文字列としての薄暗いSearchValue

ws1 As Worksheet、ws2 As Worksheet

を暗くします.

ws1= ThisWorkbook.Worksheets( "Sheet1")

を設定します

ws2= ThisWorkbook.Worksheets( "Sheet2")

を設定します

SearchValue= ws1.Range( "A2").Value

SearchRow= ws2.Range( "A:A").Find(What:= SearchValue)

を設定します

ws1.Range( "E5").Value= ws2.Range( "G"&SearchRow.Row).Value

ws1.Range( "L7").Value= ws2.Range( "I"&SearchRow.Row).Value

サブの終了

返信リスト(回答:2)

1 #
OssieMa

検索をコーディングするときは、Excelがコードモードかインタラクティブモードかに関係なく、最後に使用されたすべての引数を保持し、必要な引数が以前の使用と一致しない場合に誤った結果を返す可能性があるため、すべての引数を含めることが不可欠です.検索.

私のコメントによると、行を削除した後、最後の2行で何を達成しようとしているのかわからないため、これらの行は必要に応じて実行される場合と実行されない場合があります.

見つからないを処理するコードも含めました.

特にコードが行を削除している場合に、望ましくない結果が発生した場合に備えて、コードを実行する前にワークブックのバックアップがあることを確認してください.

Sub SubSearch()

Dim ws1 As Worksheet

Dim ws2 As Worksheet

Dim SearchRow As Range

Dim SearchValue As Range

Dim lngRow As Long

Set ws1= ThisWorkbook.Worksheets( "Sheet1")

Set ws2= ThisWorkbook.Worksheets( "Sheet2")

Set SearchValue= ws1.Range( "A2") '範囲オブジェクトである必要があります.そうでない場合、最後の2行でエラーが発生します

Set SearchRow= ws2.Range( "A:A").Find(What:= SearchValue.Value、_

LookIn:= xlValues、_

LookAt:= xlWhole、_

SearchOrder:= xlByRows、_

SearchDirection:= xlNext、_

MatchCase:= False、_

SearchFormat:= False)

SearchRowが何もない場合

lngRow= SearchRow.Row

SearchRow.EntireRow.Delete

その他 'オプションのコード

MsgBox SearchValue.Value&"見つかりません." 'オプションのコード

Exit Sub 'オプションのコード

End If

'何をしようとしているのかわからない

'行を削除した後.

ws1.Range( "E5").Value= ws2.Range( "G"&lngRow).Value

ws1.Range( "L7").Value= ws2.Range( "I"&lngRow).Value

End Sub

2 #
VijayA.

簡単な答えは、この行をSetSearchRow行の下に配置することです.

ws2.Rows(SearchRow.Row).EntireRow.Delete

必要に応じて、エラー処理を構築することをお勧めします.