簡體   English   中英

如果一個單元格包含一個(或多個)Chr(10)字符但不包含其他字符,如何刪除?

[英]How to delete a cell if it contains one (or more) Chr(10) characters, but no other characters?

我有一個小的腳本,可以完成我需要做的事情,但是恐怕在某個時候,一個單元格中會有超過4個字符,並且我不想刪除它。 我要采用的邏輯如下:

如果BB1:BB10中的任何單元格僅包含Chr(10),則將單元格的內容向下移動一個單元格。 像這樣

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),則將其移動到一個單元格下方。 我怎樣才能做到這一點?

請嘗試以下方法。 它刪除所有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

我個人為此使用正則表達式-它可能比其他字符串操作要快得多:

'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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM