2017-01-12 5 views
0

私はそれに必要なものを並べ替える小さなスクリプトを持っていますが、ある時点ではセルに4文字以上あり、削除したくありません。セルに1つ(またはそれ以上)のChr(10)文字が含まれていて他の文字が含まれていない場合は、そのセルを削除するにはどうすればよいですか?

BB1:BB10のいずれかのセルにChr(10)だけが含まれている場合は、下のセルの内容を1つ上に移動します。このような何か

Public Sub CheckHisMethod() 
    Dim i As Integer 
    i = 1 
    For i = 10 To 1 Step -1 
     If Excel.ActiveSheet.Range("BB" & i).Value = Chr(10) Then  ' or =vblf or =chr$(10) 
      Excel.ActiveSheet.Range("BB" & i).Delete Shift:=xlUp 
     End If 
    Next i 
    MsgBox "Done" 
End Sub 

しかし...私は私が唯一のセルを削除する、各セルからのChr(10)を削除すると、セルならば、一つのセルまで下のセルを移動しないでくださいChr(10)のみを含む。どうやってやるの?

+4

あなたの解決策の問題は何ですか? – wdosanjos

+0

ええ、説明するのは少し難しいです。私は、1、2、3、4、またはそれ以上のChr(10)文字を持つ配列のセルを持っています。私はテキストとChr(10)文字のセルを持っています。 1、2、3、4、またはそれ以上のChr(10)文字のみを含むセルを削除したい。それは理にかなっていますか? – ryguy7272

+1

恐らくスクリーンショットのペアが役に立ちます。例えば。入力と期待される出力。 – Vityata

答えて

3

以下を試してください。 CHR(10)をすべて削除し、結果の文字列の長さが0であることを確認します。これは、セル内のすべての文字がCHR(10)であることを意味します。

Public Sub CheckHisMethod() 
    Dim i As Integer 
    i = 1 
    For i = 10 To 1 Step -1 
     If Len(Replace(Excel.ActiveSheet.Range("BB" & i).Value,Chr(10),"")) = 0 Then  ' or =vblf or =chr$(10) 
      Excel.ActiveSheet.Range("BB" & i).Delete Shift:=xlUp 
     End If 
    Next i 
    MsgBox "Done" 
End Sub 
1

私は個人的には、このために正規表現を使用したい - それはおそらく他の文字列操作よりもはるかに高速になります。

'Add a reference to Microsoft VBScript Regular Expressions 5.5 
Public Sub CheckHisMethod() 
    Dim i As Integer 
    With New RegExp 
     .Pattern = "^[\n]+$" 
     .MultiLine = True 
     For i = 10 To 1 Step -1 
      If .Test(Excel.ActiveSheet.Range("BB" & i).Value) Then 
       Excel.ActiveSheet.Range("BB" & i).Delete Shift:=xlUp 
      End If 
     Next i 
    End With 
    MsgBox "Done" 
End Sub 
+0

デフォルトでは、Excel VBAでは 'RegExp'は利用できません。 http://stackoverflow.com/questions/22542834/how-to-use-regular-expressions-regex-in-microsoft-excel-both-in-cell-and-loops – wdosanjos

+1

@ wdosanjos - コメントには、 Microsoft VBScript Regular Expressions 5.5への参照が必要です。何らかの理由でそれを後でバインドしたい場合、 'New RegExp'呼び出しを' CreateObject( "VBScript.RegExp") 'の呼び出しで置き換えることができます。 – Comintern

関連する問題