循环删除最后一个字符

时间:2014-09-16 11:17:53

标签: excel vba loops excel-vba for-loop

在VBA中,我试图遍历一个范围并删除每个单元格文本的最后一个字符。

我理解删除单元格中文本的最后一个字符的代码如下:     myString = Left(myString,Len(myString) - 1)

但是我试图让它在for循环中工作,我只需要获取错误消息对象。它可能是我想念的东西。

这是我的代码与For循环:

Dim rngh As Range, cellh As Range
Dim myString As String
Set rngh = Range("H1:H500")
For Each cellh In rngh
    myString = cellh.Text
    myString = Left(myString, Len(myString) - 1)
Next cellh

感谢。

3 个答案:

答案 0 :(得分:2)

我不会一次使用.Text或循环一个单元格,因为它会更慢 - 使用数组:

Dim vData
Dim n                     As Long
vData = Range("H1:H500").Value
For n = 1 To UBound(vData, 1)
    If Len(vData(n, 1)) <> 0 Then vData(n, 1) = Left$(vData(n, 1), Len(vData(n, 1)) - 1)
Next n
Range("H1:H500").Value = vData

例如。

答案 1 :(得分:0)

您在设定行中遇到错误。我认为应该是

Set rngh = Range("H1:H500")

但是当你试图缩短空字符串时会有例外。您必须检查是否可以这样做......类似

myString = cellh.Text
If Len(myString) > 0 Then
    myString = Left(myString, Len(myString) - 1)
End If

答案 2 :(得分:0)

尝试以下代码

Private Sub Workbook_Open()
    Dim rngh As Range, cellh As Range
    Dim myString As String
    Set rngh = Range("H1:H500")
    For Each cellh In rngh
        If Not IsEmpty(cellh) Then
            myString = cellh.Text
            myString = Left(myString, Len(myString) - 1)
            cellh.Value = myString
        End If
    Next cellh