2017-07-30 18 views
0

列Bに特定のテキスト(「ACK-」が含まれている場合は行全体をコピーするコードがありますが、特定のテキストを含む行の上に行全体を直接コピーする必要があります。?。しかし、特定のテキストを含む行の上に行をコピーする

rngCells.Offset(-1).EntireRow.Copy wsDest.Range("A" & DestNoRows) 
'  ^^^^^^^^^^^^ 

:( "ACK-は" これはさえ可能な任意のヘルプは理解されるであろう

Sub HEA_Filter() 
Dim strArray As Variant 
Dim wsSource As Worksheet 
Dim wsDest As Worksheet 
Dim NoRows As Long 
Dim DestNoRows As Long 
Dim I As Long 
Dim J As Integer 
Dim rngCells As Range 
Dim rngFind As Range 
Dim Found As Boolean 

strArray = Array("ack-") 

Set wsSource = ActiveSheet 

NoRows = wsSource.Range("A65536").End(xlUp).Row 
DestNoRows = 1 
Set wsDest = Sheets("Real Alarms") 

For I = 1 To NoRows 

Set rngCells = wsSource.Range("B" & I) 
Found = False 
For J = 0 To UBound(strArray) 
Found = Found Or Not (rngCells.Find(strArray(J)) Is Nothing) 
Next J 

If Found Then 
rngCells.EntireRow.Copy wsDest.Range("A" & DestNoRows) 

DestNoRows = DestNoRows + 1 
End If 
Next I 
End Sub 
+0

)ありがとう!今私は別の問題を抱えています... "A"から "F"にペーストカラムを変更しようとすると、セルが同じサイズではないというエラーが表示されます...どうすれば修正できますか? –

答えて

1

を "上行" を参照するには、Range.Offsetメソッドを使用することができます範囲がであれば、これは実行時エラーを発生させることに注意してください行1、row 0が存在しないためです。小切手を追加することができます(例:

If rngCells.Row > 1 Then rngCells.Offset(-1).EntireRow.Copy ... 
+0

すごくうまくいった!ありがとう!今私は別の問題があります... "A"から "F"にペーストカラムを変更しようとすると、セルが同じサイズではないというエラーが表示されます... –

+0

@JimmyVoあなたは 'wsDestだけを使用しましたか?範囲( "A"&DestNoRows) '?そうであれば、おそらくいくつかのマージされたセルや、あまりにも多くの行のデータ、idkを持っていない限り、そのエラーを出すべきではありません。 –

+1

'If rngCells.Row> 1 Then'を避けるために、ループは' For I = 2 To NoRows'に変更することができます。 – YowE3K

関連する問題