当 VBA 复制粘贴范围从工作表到工作表时,调用的对象已与其客户端断开连接



这是我第一次在这里发帖。我尝试搜索修复程序无济于事。我不是 VBA 的专家,所以我确信我的代码看起来很草率。

基本上,我正在尝试将数据从一张工作表复制并粘贴到同一工作簿中的另一张工作表。要复制的数据像表格一样布局。我要粘贴到的范围是一家公司的单行。

Sub Save()
Application.ScreenUpdating = False
Dim x As Integer
x = Worksheets("Insurance Tower Template").Range("B37").Value
'date
Worksheets("Data").Range("A" & x) = Date
'policy number
Worksheets("Insurance Tower Template").Range("L5").Copy
Worksheets("Data").Range("H" & x).PasteSpecial Paste:=xlPasteValues
Worksheets("Data").Range("H" & x).PasteSpecial Paste:=xlPasteFormats
'status
Worksheets("Insurance Tower Template").Range("L6").Copy
Worksheets("Data").Range("G" & x).PasteSpecial Paste:=xlPasteValues
Worksheets("Data").Range("G" & x).PasteSpecial Paste:=xlPasteFormats
'producer
Worksheets("Insurance Tower Template").Range("L7").Copy
Worksheets("Data").Range("EX" & x).PasteSpecial Paste:=xlPasteValues
Worksheets("Data").Range("EX" & x).PasteSpecial Paste:=xlPasteFormats
'primary
Worksheets("Insurance Tower Template").Range("D10:L10").Copy
Worksheets("Data").Range("I" & x).PasteSpecial Paste:=xlPasteValues
Worksheets("Data").Range("I" & x).PasteSpecial Paste:=xlPasteFormats
'1xs
Worksheets("Insurance Tower Template").Range("D11:L11").Copy
Worksheets("Data").Range("R" & x).PasteSpecial Paste:=xlPasteValues
Worksheets("Data").Range("R" & x).PasteSpecial Paste:=xlPasteFormats
'2xs
Worksheets("Insurance Tower Template").Range("D12:L12").Copy
Worksheets("Data").Range("AA" & x).PasteSpecial Paste:=xlPasteValues
Worksheets("Data").Range("AA" & x).PasteSpecial Paste:=xlPasteFormats
'3xs
Worksheets("Insurance Tower Template").Range("D13:L13").Copy
Worksheets("Data").Range("AJ" & x).PasteSpecial Paste:=xlPasteValues
Worksheets("Data").Range("AJ" & x).PasteSpecial Paste:=xlPasteFormats
'4xs
Worksheets("Insurance Tower Template").Range("D14:L14").Copy
Worksheets("Data").Range("AS" & x).PasteSpecial Paste:=xlPasteValues
Worksheets("Data").Range("AS" & x).PasteSpecial Paste:=xlPasteFormats
'5xs
Worksheets("Insurance Tower Template").Range("D15:L15").Copy
Worksheets("Data").Range("BB" & x).PasteSpecial Paste:=xlPasteValues
Worksheets("Data").Range("BB" & x).PasteSpecial Paste:=xlPasteFormats
'6xs
Worksheets("Insurance Tower Template").Range("D16:L16").Copy
Worksheets("Data").Range("BK" & x).PasteSpecial Paste:=xlPasteValues
Worksheets("Data").Range("BK" & x).PasteSpecial Paste:=xlPasteFormats
'7xs
Worksheets("Insurance Tower Template").Range("D17:L17").Copy
Worksheets("Data").Range("BT" & x).PasteSpecial Paste:=xlPasteValues
Worksheets("Data").Range("BT" & x).PasteSpecial Paste:=xlPasteFormats
'8xs
Worksheets("Insurance Tower Template").Range("D18:L18").Copy
Worksheets("Data").Range("CC" & x).PasteSpecial Paste:=xlPasteValues
Worksheets("Data").Range("CC" & x).PasteSpecial Paste:=xlPasteFormats
'9xs
Worksheets("Insurance Tower Template").Range("D19:L19").Copy
Worksheets("Data").Range("CL" & x).PasteSpecial Paste:=xlPasteValues
Worksheets("Data").Range("CL" & x).PasteSpecial Paste:=xlPasteFormats
'10xs
Worksheets("Insurance Tower Template").Range("D20:L20").Copy
Worksheets("Data").Range("CU" & x).PasteSpecial Paste:=xlPasteValues
Worksheets("Data").Range("CU" & x).PasteSpecial Paste:=xlPasteFormats
'11xs
Worksheets("Insurance Tower Template").Range("D21:L21").Copy
Worksheets("Data").Range("DD" & x).PasteSpecial Paste:=xlPasteValues
Worksheets("Data").Range("DD" & x).PasteSpecial Paste:=xlPasteFormats
'12xs
Worksheets("Insurance Tower Template").Range("D22:L22").Copy
Worksheets("Data").Range("DM" & x).PasteSpecial Paste:=xlPasteValues
Worksheets("Data").Range("DM" & x).PasteSpecial Paste:=xlPasteFormats
'13xs
Worksheets("Insurance Tower Template").Range("D23:L23").Copy
Worksheets("Data").Range("DV" & x).PasteSpecial Paste:=xlPasteValues
Worksheets("Data").Range("DV" & x).PasteSpecial Paste:=xlPasteFormats
'14xs
Worksheets("Insurance Tower Template").Range("D24:L24").Copy
Worksheets("Data").Range("EE" & x).PasteSpecial Paste:=xlPasteValues
Worksheets("Data").Range("EE" & x).PasteSpecial Paste:=xlPasteFormats
'15xs
Worksheets("Insurance Tower Template").Range("D25:L25").Copy
Worksheets("Data").Range("EN" & x).PasteSpecial Paste:=xlPasteValues
Worksheets("Data").Range("EN" & x).PasteSpecial Paste:=xlPasteFormats
'clearborders
Sheets("Data").Activate
Range("A1:EX5000").Select
Selection.Borders.LineStyle = xlNone
Range("A1").Select
'reformula below
'date
Worksheets("Reformula").Range("L27").Copy
Worksheets("Insurance Tower Template").Range("L27").PasteSpecial Paste:=xlPasteFormulas
'policy number
Worksheets("Reformula").Range("L5").Copy
Worksheets("Insurance Tower Template").Range("L5").PasteSpecial Paste:=xlPasteFormulas
'status
Worksheets("Reformula").Range("L6").Copy
Worksheets("Insurance Tower Template").Range("L6").PasteSpecial Paste:=xlPasteFormulas
'producer
Worksheets("Reformula").Range("L7").Copy
Worksheets("Insurance Tower Template").Range("L7").PasteSpecial Paste:=xlPasteFormulas
'primary
Worksheets("Reformula").Range("D10:L10").Copy
Worksheets("Insurance Tower Template").Range("D10").PasteSpecial Paste:=xlPasteFormulas
'1XS
Worksheets("Reformula").Range("D11:L11").Copy
Worksheets("Insurance Tower Template").Range("D11").PasteSpecial Paste:=xlPasteFormulas
'2XS
Worksheets("Reformula").Range("D12:L12").Copy
Worksheets("Insurance Tower Template").Range("D12").PasteSpecial Paste:=xlPasteFormulas
'3XS
Worksheets("Reformula").Range("D13:L13").Copy
Worksheets("Insurance Tower Template").Range("D13").PasteSpecial Paste:=xlPasteFormulas
'4XS
Worksheets("Reformula").Range("D14:L14").Copy
Worksheets("Insurance Tower Template").Range("D14").PasteSpecial Paste:=xlPasteFormulas
'5XS
Worksheets("Reformula").Range("D15:L15").Copy
Worksheets("Insurance Tower Template").Range("D15").PasteSpecial Paste:=xlPasteFormulas
'6XS
Worksheets("Reformula").Range("D16:L16").Copy
Worksheets("Insurance Tower Template").Range("D16").PasteSpecial Paste:=xlPasteFormulas
'7XS
Worksheets("Reformula").Range("D17:L17").Copy
Worksheets("Insurance Tower Template").Range("D17").PasteSpecial Paste:=xlPasteFormulas
'8XS
Worksheets("Reformula").Range("D18:L18").Copy
Worksheets("Insurance Tower Template").Range("D18").PasteSpecial Paste:=xlPasteFormulas
'9XS
Worksheets("Reformula").Range("D19:L19").Copy
Worksheets("Insurance Tower Template").Range("D19").PasteSpecial Paste:=xlPasteFormulas
'10XS
Worksheets("Reformula").Range("D20:L20").Copy
Worksheets("Insurance Tower Template").Range("D20").PasteSpecial Paste:=xlPasteFormulas
'11XS
Worksheets("Reformula").Range("D21:L21").Copy
Worksheets("Insurance Tower Template").Range("D21").PasteSpecial Paste:=xlPasteFormulas
'12XS
Worksheets("Reformula").Range("D22:L22").Copy
Worksheets("Insurance Tower Template").Range("D22").PasteSpecial Paste:=xlPasteFormulas
'13XS
Worksheets("Reformula").Range("D23:L23").Copy
Worksheets("Insurance Tower Template").Range("D23").PasteSpecial Paste:=xlPasteFormulas
'14XS
Worksheets("Reformula").Range("D24:L24").Copy
Worksheets("Insurance Tower Template").Range("D24").PasteSpecial Paste:=xlPasteFormulas
'15XS
Worksheets("Reformula").Range("D25:L25").Copy
Worksheets("Insurance Tower Template").Range("D25").PasteSpecial 
Paste:=xlPasteFormulas
Application.CutCopyMode = False
End Sub

这段代码工作了一段时间,但我添加了"状态"列,那时一切似乎都分崩离析了。宏挂起,然后吐出错误。调试时,黄色突出显示始终位于"粘贴:=xl粘贴格式"行上。

我将不胜感激对此的任何见解。谢谢!

Paste:=xlPasteFormats移动到行Worksheets("Insurance Tower Template").Range("D25").PasteSpecial,使其显示为

Worksheets("Insurance Tower Template").Range("D25").PasteSpecial Paste:=xlPasteFormulas 

话虽如此,您也可以替换所有这些复制粘贴操作,然后执行

Worksheets("Data").Range("H" & x) = Worksheets("Insurance Tower Template").Range("L5")

并对要复制的每个范围重复此操作。

对于公式

Worksheets("Insurance Tower Template").Range("L27") = Worksheets("Reformula").Range("L27").Formula

对要复制的每个公式重复此操作,只是为了稍微清理代码并减少性能繁重的Copy-Paste操作。

最新更新