excel - 无效的过程调用或参数(错误 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", Cells(.Rows.Count, "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, 1), 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") = Left(.Cells(i, "B").Value, Len(.Cells(i, "B").Value) - 3)
Next i
End With
End Sub
解决方案
这可能是 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
推荐阅读
- javascript - 如何让我的垫片在固定头中工作?
- ansible - 解包 ansible 结果变量
- oop - Groovy:Class.forName().newInstance() 错误
- python - Numpy数组:如何在不复制数组的情况下撤消零填充?
- string - 在 Visual Studio 2017 (Visual Basic) 中删除字符串左侧直到某个字符的所有内容
- c - 链表中的双指针
- python - Sqlalchemy 多对多关系的一侧不为空
- java - Myfaces ServletContext 'null' 已初始化
- spring - Spring Web MVC:使用 DeferredResult 执行 FORWARD
- rest - Nexus 3 API 缺少 Maven 组更新