我希望在工作簿中实现某种剪切和粘贴功能的自动化,以将退还的贷款详细信息从未偿还的贷款表转移到“ LoansHistory”表。我在网上找到了此代码,并一直在尝试对其进行修改,以根据相应的“列K”单元格中的日期(或当前任何文本)将行内容添加到现有表中。
从本质上讲,我通常是编码方面的新手,我很难修改下面的代码以使用ListObjects.ListRows
而不是下一个空行来查找行并将行粘贴到现有表中(就像现在一样) 。
我了解还有其他一些帖子可以解决此问题,但是由于我对VBA的了解非常有限,因此我仍在努力应用适当的更改。
在尝试使用ListObjects.ListRows
函数时,我经常收到诸如“子脚本超出范围”或“对象不支持此函数”之类的错误代码。
我们将不胜感激。
Sub Cheezy()
Dim xRg As Range
Dim xCell As Range
Dim i As Long
Dim J As Long
Dim K As Long
i = Worksheets("Loans").UsedRange.Rows.count
J = Worksheets("LoansHistory").Cells(Rows.count, 1).End(xlUp).Row
If J = 1 Then
If Application.WorksheetFunction.CountA(Worksheets("LoansHistory").ListObjects("History")) = 0 Then J = 0
End If
Set xRg = Worksheets("Loans").Range("K4:K" & i)
On Error Resume Next
Application.ScreenUpdating = False
For K = 1 To xRg.count
If Len(xRg(K).Value) > 0 Then
xRg(K).EntireRow.Copy Destination:=Worksheets("LoansHistory").Range("A" & (J + 1))
xRg(K).EntireRow.Delete
If Len(xRg(K).Value) > 0 Then
K = K - 1
End If
End If
Next
Application.ScreenUpdating = True
End Sub
答案 0 :(得分:0)
要调试它,您可以很容易地看到崩溃的地方,方法是在代码中放置一个断点并逐步执行。
要么单击代码区域旁边的左栏,直到代码行变为红色,要么在代码中添加一个Stop
命令。
此外,暂时注释掉两个Application.ScreenUpdating =
命令。在调试时,这些只会阻碍您。如果它们之间发生错误,那么您将很难使屏幕恢复到最新状态。您可以在调试窗口(Ctrl + G)中运行后者以将其重新打开。现在,只需打开屏幕即可。
一旦遇到断点,您可以按F8键一次继续执行一个代码命令,直到找到出现错误的行。尝试一下,当您碰到这样的绊脚石时,它确实会有所帮助。
尽管我一眼不喜欢这部分代码.Range("A" & J + 1)
,但尝试将J + 1放在额外的括号中。 .Range("A" & (J + 1))
。