2016-04-19 16 views
1

私は、列をループするマクロを持っていて、不要な配列内のものはすべて削除します。問題は、「削除可能な文字列」を含む特定のセルを保持するだけでなく、他の情報も保持したいということです。文字列を含む代わりに文字列全体を一致させる

E.G:削除する配列の中に「VARO」がある場合。私は "VARO - summary"でセルを削除したくないので、 "VARO"だけを含むセルを削除したいだけです。これを達成するために私のコードで何を変更するべきかわからない!私はまだ

Dim tDelete As Variant 
Dim sKeep As String, x As Long 
Dim rngSearch As Range, c As Range 
Dim i As Long, j As Long 

tDelete = Array("ABEL", "VARO") 
Dim delCell As Boolean 
    For x = Range("A" & Rows.Count).End(xlUp).Row To 5 Step -1 
     Set c = Range("A" & x).Cells 
     delCell = False 
     For j = LBound(tDelete) To UBound(tDelete) 
      If InStr(c.value, tDelete(j)) Then 
       delCell = True 
      End If 
     Next j 
     If deleteCell Then c.EntireRow.Delete shift:=xlShiftUp 
    Next x 

:)学んでいるような構文でも効率上の任意のヘルプは素晴らしいことだ私の勘では、問題がInStr関数であるが、私はこれを変更する方法を知っているではないだろうということです!

EDIT: StrCompを使用することを考えていますが、適切な構文が不明です。その場合にはその後、私は

If StrComp(c.value, tDelete(j))=0 Then 

答えて

2

あなたはほぼそこにいます!使用している場合

IF StrComp(c.value, dontDelete(j),vbtextcompare) = 0 Then 

正確なセルの一致が見つかります。

1
Sub check_this() 
    Dim tDelete As Variant 
    Dim sKeep As String, x As Long 
    Dim rngSearch As Range, c As Range 
    Dim i As Long, j As Long 
    tDelete = Array("ABEL", "VARO") 
    Dim delCell As Boolean 
     For x = Range("A" & Rows.Count).End(xlUp).Row To 5 Step -1 
      Set c = Range("A" & x).Cells 
      delCell = False 
      For j = LBound(tDelete) To UBound(tDelete) 
       If c.Value = tDelete(j) Then 
        c.EntireRow.Delete shift:=xlShiftUp 
       End If 
      Next j 
     Next x 
End Sub 
0

を持つことができますまた、「バロ」真と「バロ」(バロの後にスペース)はFalseが、その後削除することとステートメントは、作ることができます。

逆に、文字列に "Varo"が含まれ、文字列の長さも "Varo"の長さと同じであることを確認できます。

0

EDIT方法については、単に書く:

If c.value = tDelete(j) Then 
    ' delete the cell 

これはまさに「VARO」を持つ細胞が削除されますので、それは、完全に一致することをテストしますが....「VAROを含む細胞。 .. "ではない。

+0

完全一致であることを確認できれば、なぜ部分一致を確認する必要がありますか?私がここで逃しているものを疑問に思ったり、おそらく私はあなたが完全一致で何を意味するのか誤解していました。 –

+0

@ Forward-ed、最初のテストは、一致が正確である場合にのみ真です。 2つ目はそれが含まれているときです。しかし、私は今、彼がそれを逆に望んでいるのを見る。これにより、さらに簡単になります。正確な一致をテストして削除するだけです。 –

関連する問題