我正在编写一个宏,该宏将基本上将数据从一张纸复制并粘贴到另一张纸。该代码将执行并正常运行,直到我需要从指定列中的每个单元格中删除最后三个字符的最后一位为止。
代码可以做到这一点,但是之后我总是会出错
无效的过程调用或参数(错误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