在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
感谢。
答案 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