Excel 尝试粘贴到添加的ListRow时,Range类的PasteSpecial方法失败

Excel 尝试粘贴到添加的ListRow时,Range类的PasteSpecial方法失败,excel,Excel,我想将活动工作表中的A1:A61数据复制/粘贴到包含格式化表的“客户信息”工作表的第2列“B”到第62列“BJ”。我在“ClientInfo表”的第68列“BP”中搜索客户名称和电话。如果找到,这就是我要更新的行,否则添加新行并粘贴到其中。更新找到的记录时,PasteSpecial可以正常工作,但只有在尝试将Special粘贴到添加的行时,PasteSpecial才会失败。错误:范围类的特殊方法失败 子SaveToMaster(clientfirstname作为字符串,clientlastnam

我想将活动工作表中的A1:A61数据复制/粘贴到包含格式化表的“客户信息”工作表的第2列“B”到第62列“BJ”。我在“ClientInfo表”的第68列“BP”中搜索客户名称和电话。如果找到,这就是我要更新的行,否则添加新行并粘贴到其中。更新找到的记录时,PasteSpecial可以正常工作,但只有在尝试将Special粘贴到添加的行时,PasteSpecial才会失败。错误:范围类的特殊方法失败

子SaveToMaster(clientfirstname作为字符串,clientlastname作为字符串,clientphone作为字符串)


End Sub

我找到了原因:当添加列表行时,它显然会清除复制的范围。我通过返回源工作簿(添加listrow后)并复制源范围来更正它

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