excel - Range 类的 PasteSpecial 方法在尝试粘贴到添加的 ListRow 时失败
问题描述
我想从活动工作表中复制/粘贴 w 转置数据 A1:A61 到包含格式化表格的“客户信息”工作表的第 2 列“B”到第 62 列“BJ”中。我在“ClientInfoTable”的第 68 列“BP”中搜索客户姓名和电话。如果找到,那就是我要更新的行,否则添加一个新行并粘贴到其中。PasteSpecial 在更新 FOUND 记录时工作正常,但仅在尝试将 PasteSpecial 放入添加的行时失败。错误: Range 类的 PasteSpecial 方法失败。
Sub SaveToMaster(clientfirstname as String, clientlastname as String, clientphone as String)
Dim addedrow As ListRow
Dim tbl As ListObject
Dim clientnamephone As String
Dim foundcell As Range
Dim updaterow As Long
clientnamephone = clientfirstname & " " & clientlastname & " " & clientphone
Range("A1:A61").Copy
Worksheets("Client Info").Activate
Set tbl = ActiveSheet.ListObjects("ClientInfoTable")
Set foundcell = tbl.DataBodyRange.Columns(68).Find(What:=clientnamephone, LookIn:=xlValues, LookAt:=xlWhole)
If foundcell Is Nothing Then
Set addedrow = tbl.ListRows.ADD
updaterow = addedrow.Index
Else
updaterow = tbl.ListRows(foundcell.Row - tbl.HeaderRowRange.Row).Index
End If
tbl.DataBodyRange(updaterow, 2).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
End Sub
解决方案
我明白了原因:当您添加 ListRow 时,它显然会清除复制的范围。我通过返回源工作簿(添加列表行之后)并复制源范围来纠正它。