gpt4 book ai didi

vba - 在动态创建的工作表上运行代码时出现运行时错误 1004

转载 作者:行者123 更新时间:2023-12-03 09:05:57 24 4
gpt4 key购买 nike

我正在使用 excel 2010,我在一个工作簿中编写了这段代码:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim flname As Variant, n As Variant

If Selection.Count = 1 Then
If Not Intersect(Target, Range("D5:H20")) Is Nothing Then
flname = Application.GetOpenFilename
If flname <> False Then
If Right(flname, 3) = "jpg" Then

Set n = ActiveSheet.Pictures.Insert(flname)
n.Name = "Picture 1"
ActiveSheet.Shapes("Picture 1").Left = ActiveSheet.Cells(5, 4).Left
ActiveSheet.Shapes("Picture 1").Top = ActiveSheet.Cells(5, 4).Top
n.Width = 270
ActiveSheet.Shapes.Range(Array("Picture 1")).Select
Selection.ShapeRange.IncrementLeft 10
Selection.ShapeRange.IncrementTop 2

Else

MsgBox "Das Bild muss ein JPEG-Format sein"

End If
End If
End If
End If

End Sub

它在任何工作表或其他工作簿上都可以正常工作,但是当我尝试在动态创建的工作表上运行它时,VBA 会返回一个错误(1004)并突出显示这一行:
Set n = ActiveSheet.Pictures.Insert(flname)

我在互联网上搜索,但可以在动态创建的表格上找到有关 1004 错误的任何主题。

对不起我的英语,并提前感谢您的帮助!

亲切的问候,
雨果。

最佳答案

问题是我用来生成表格的代码也锁定了它们。我认为解锁与代码关联的范围会使其工作,问题是当您插入图像时,它不包含在单元格或单元格范围中,它基本上“ float ”在工作表上,因此图像可以没有被插入,因为工作表被锁定,这就是我收到错误 1004 的原因,突出显示的行是

Set n = ActiveSheet.Pictures.Insert(flname)

因为那是在工作表中插入图像的 Action 。

解决方案非常简单,您只需要在代码开头(或插入图像的行上方)使用以下行解锁工作表:
ActiveSheet.Unprotect "Your Passoword"

最后,如果您想再次锁定它,请添加以下行:
ActiveSheet.Protect Password:="Your Password", DrawingObjects:=True, Contents:=True, Scenarios:=True

我希望我的回答足够清楚。
感谢所有试图帮助我的人。

亲切的问候,
雨果。

关于vba - 在动态创建的工作表上运行代码时出现运行时错误 1004,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31052247/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com