无效的过程调用或参数(错误5),但代码正确执行

我正在编写一个宏,该宏将基本上将数据从一张纸复制并粘贴到另一张纸。该代码将执行并正常运行,直到我需要从指定列中的每个单元格中删除最后三个字符的最后一位为止。

代码可以做到这一点,但是之后我总是会出错

  

无效的过程调用或参数(错误5)

这是Excel能够识别错误的部分,即使它通过删除单元格值的最后三个字符来完成其工作。在更改单元格值之前,它们看起来像是000123.HK

我的代码应该在末尾删除.HK

希望对此有所帮助,也很高兴获得有关如何提高我的代码效率的提示!

With Worksheets("Earnings Final")
    For i = 1 To lastRow
        .Cells(i,"B") = Left(.Cells(i,"B").Value,Len(.Cells(i,"B").Value) - 3)
    Next i
End With

下面的完整代码:


Private Sub button_Click()

Dim ricRange As Range
Dim ricEveryNth As Range
Dim ricRow As Long

Dim sRange As Range
Dim sEveryNth As Range
Dim sRow As Long

Application.ScreenUpdating = False

Sheets("Sheeta").activate

With Worksheets("Sheeta")
    Set ricRange = .Range("A2",Cells(.Rows.Count,"A").End(xlUp))
End With

Worksheets("Sheeta").Range("A1").Cut
Worksheets("Sheeta").Range("B1").Select
activeSheet.Paste

For ricRow = 1 To ricRange.Rows.Count Step 3
If ricRow = 1 Then
    Set ricEveryNth = ricRange(ricRow,1)
Else
    Set ricEveryNth = Union(ricRange(ricRow,1),ricEveryNth)
End If
Next ricRow
Application.Goto ricEveryNth

Selection.Copy
Sheets("SheetB").activate
Worksheets("SheetB").Range("B1").PasteSpecial Paste:=xlPasteFormulas

With Worksheets("Sheeta")
    Set sRange = .Range("B1","B").End(xlUp))
End With

For sRow = 1 To sRange.Rows.Count Step 3
If sRow = 1 Then
    Set sEveryNth = sRange(sRow,1)
Else
    Set sEveryNth = Union(sRange(sRow,sEveryNth)
End If
Next sRow
Application.Goto sEveryNth

Selection.Copy
Sheets("SheetB").activate
Worksheets("SheetB").Range("A1").PasteSpecial Paste:=xlPasteFormulas

' Remove .HK from stock codes

Dim lastRow As Long
Dim i As Integer


Sheets("SheetB").activate
lastRow = Cells(Rows.Count,"B").End(xlUp).Row

With Worksheets("SheetB")
    For i = 1 To lastRow
        .Cells(i,"B").Value) - 3)
    Next i
End With

End Sub

liupp41 回答:无效的过程调用或参数(错误5),但代码正确执行

这可能是Left / Len方法失败。检查len是否大于3,因为您可能会得到Left(string,x),其中x可能为负:

With Worksheets("Earnings Final")
  For i = 1 To lastRow
    If Len(.Cells(i,"B")) >= 3 Then
      .Cells(i,"B") = Left(.Cells(i,"B").Value,Len(.Cells(i,"B").Value) - 3)
    End If
  Next i
End With
本文链接:https://www.f2er.com/3168839.html

大家都在问