2014-10-02 116 views
1

我已經寫了一些代碼來通過一個循環,如果它發現「單元格」在單元格中我想刪除該單元格中的最後兩個字符。刪除最後兩個字符

這裏是環

Sub RemoveUnits() 
    Dim r As Range 
    Dim x As Long 
    For Each r In ActiveSheet.UsedRange 
     w = r.Value 
     If InStr(w, "gb") > 0 Then 
      [INSERT CODE HERE] 
     End If 
    Next r 
End Sub 

我堅持上的一點是,刪除最後兩個字符的代碼。我知道它應該在這個如果陳述中,但我在網上找到的所有答案似乎並沒有工作。

感謝任何幫助!謝謝。

回答

2

你可以使用一個簡單的Mid()功能

r = Mid$(r, 1, len(r)-2) 

Left()

r = Left$(r, len(r)-2) 
0

至於建議的vba4all但小檢查。它採用中等或子檢查長度:)

r = IIf(Len(r) > 2, Mid(r, 1, Len(r) - 2), r) 
+1

如果它發現'gb'那麼長度至少是2 .. – 2014-10-02 09:59:31

+0

你是深深的... – 2014-10-02 11:47:51

0

你會發現,使用AutoFilterFind或變體,將大大加快與範圍內工作時,總是一個很好的做法。像下面的東西。

Sub RemoveUnits() 
    Dim X 
    Dim lngRow As Long 
    Dim lngCol As Long 
    X = ActiveSheet.UsedRange.Value2 
    For lngRow = 1 To UBound(X) 
     For lngCol = 1 To UBound(X, 2) 
      If InStr(X(lngRow, lngCol), "gb", vbBinaryCompare) <> 0 Then X(lngRow, lngCol) = Left$(X(lngRow, lngCol), Len(X(lngRow, lngCol)) - 2) 
     Next 
    Next 
    ActiveSheet.UsedRange.Value2 = X 
    End Sub 
相關問題