代码目标
我在名为picCompanyLogo的“控制表”上有一个公司徽标的图像对象。我有几个工作表,每个工作表都在Worksheet_Activate事件中具有相同的代码,以从“控制表”中复制公司徽标并将其粘贴到A1中的标题中。我正在计算我的行的大小和公司徽标图像的大小,以确保它始终放在工作表的右侧。
代码问题
对于32Bit和64Bit版本,代码在所有版本的Excel上都运行良好。我有一个运行Excel 2013的用户,代码以错误1004终止 - 将对象粘贴到“Range.A1”时,Worksheet类的粘贴方法失败。
当我单步执行代码(F8)时,没有问题,但是如果我在执行代码之前设置了Stop,然后是F5,则会产生相同的错误。
If Sheets("ControlSheet").Shapes("picCompanyLogo").Name <> "picCompanyLogo" Then
MsgBox "[MODULE: Worksheet Change(Header):Worksheet_Activate]" & vbCrLf & _
"The CompanyLogo (picCompanyLogo) is missing from the Control worksheet (ControlSheet)." & vbCrLf & vbCrLf & _
"The application will continue but please contact IT Support to correct the issue.", _
vbOKOnly, _
"MISSING COMPANY LOGO"
Else
Application.EnableEvents = False
ThisWorkbook.Sheets("ControlSheet").Shapes("picCompanyLogo").Copy
ThisWorkbook.ActiveSheet.Paste Range("A1")
Application.CutCopyMode = False
lngCompanyLogoWidth = Sheets("ControlSheet").Shapes("picCompanyLogo").Width
With ThisWorkbook.ActiveSheet.Shapes("picCompanyLogo")
.Left = lngShapeWidth - lngCompanyLogoWidth - 2
.Top = ActiveSheet.Range("B:" & strLastColLetter).Top + 2
End With
Application.EnableEvents = True
结束如果
我已插入以下行:
Application.EnableEvent
Application.CutCopyMode
两者都对Office 2013中的错误没有影响,并且该过程在其他版本的Excel中继续按预期工作。
当单步执行代码时,如果我在F8上太快,则粘贴似乎工作,即没有报告错误,但该过程随后失败:
With ThisWorkbook.ActiveSheet.Shapes("picCompanyLogo")
.Left = lngShapeWidth - lngMulberyLogoWidth - 2
.Top = ActiveSheet.Range("B:" & strLastColLetter).Top + 2
End With
错误表明形状无法位于工作表上,这导致我认为粘贴不符合我的预期。
答案 0 :(得分:0)
我在其他用户PC上试过这个,同时运行Office 2013,我没有遇到同样的问题。我只能对Office 2013的原始用户实现提出一些疑问。