![](/img/trans.png)
[英]VBA for moving file from one Sharepoint folder to another in Excel
[英]Moving Rows from One Table to Another (Excel VBA)
我希望在工作簿中实现某种剪切和粘贴功能的自动化,以将退还的贷款详细信息从未偿还的贷款表转移到“ 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
要调试它,您可以很容易地看到崩溃的地方,方法是在代码中放置一个断点并逐步执行。
单击代码区域旁边的左栏,直到代码行变为红色,或者仅在代码中添加一个Stop
命令。
另外,暂时将两个Application.ScreenUpdating =
命令注释掉。 在调试时,这些只会阻碍您。 如果它们之间发生错误,那么您将很难使屏幕恢复到最新状态。 您可以在调试窗口(Ctrl + G)中运行后者以将其重新打开。 现在,只需要打开屏幕即可。
遇到断点后,可以按F8键一次继续执行一个代码命令,直到找到出现错误的行。 尝试一下,当您碰到这样的绊脚石时,它确实会有所帮助。
我不太喜欢这部分代码。不过, .Range("A" & J + 1)
尝试将J + 1放在额外的括号中。 .Range("A" & (J + 1))
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.