运行 动态创建 sheet 上的代码时出现运行时错误 1004
Runtime Error 1004 when running a code on a sheet created dynamically
我正在使用 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
并且它在任何 Sheet 或其他工作簿上工作得很好,但是当我尝试 运行 它在动态创建的 Sheet 上 VBA returns 给我一个错误 (1004) 并突出显示这一行:
Set n = ActiveSheet.Pictures.Insert(flname)
我在互联网上进行了搜索,但在动态创建的 Sheet 上找不到任何关于 1004 错误的主题。
抱歉我的英语不好,在此先感谢您的帮助!
亲切的问候,
雨果.
问题是我用来生成 Sheets 的代码也锁定了它们。我认为解锁与代码关联的范围会使其工作,问题是当您插入图像时,它不包含在单元格或单元格范围内,它基本上 "floats" 在 Sheet 所以无法插入图像,因为 Sheet 被锁定,这就是我收到错误 1004 并且突出显示的行是
的原因
Set n = ActiveSheet.Pictures.Insert(flname)
因为那是在 Sheet 中插入图像的操作。
解决方案非常简单,您只需要使用以下行解锁代码开头的 Sheet(或刚好插入图像的行上方):
ActiveSheet.Unprotect "Your Passoword"
最后,如果你想再次锁定它,你添加这一行:
ActiveSheet.Protect Password:="Your Password", DrawingObjects:=True, Contents:=True, Scenarios:=True
希望我的回答足够清楚。
感谢所有试图帮助我解决这个问题的人。
亲切的问候,
雨果.
我正在使用 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
并且它在任何 Sheet 或其他工作簿上工作得很好,但是当我尝试 运行 它在动态创建的 Sheet 上 VBA returns 给我一个错误 (1004) 并突出显示这一行:
Set n = ActiveSheet.Pictures.Insert(flname)
我在互联网上进行了搜索,但在动态创建的 Sheet 上找不到任何关于 1004 错误的主题。
抱歉我的英语不好,在此先感谢您的帮助!
亲切的问候, 雨果.
问题是我用来生成 Sheets 的代码也锁定了它们。我认为解锁与代码关联的范围会使其工作,问题是当您插入图像时,它不包含在单元格或单元格范围内,它基本上 "floats" 在 Sheet 所以无法插入图像,因为 Sheet 被锁定,这就是我收到错误 1004 并且突出显示的行是
的原因Set n = ActiveSheet.Pictures.Insert(flname)
因为那是在 Sheet 中插入图像的操作。
解决方案非常简单,您只需要使用以下行解锁代码开头的 Sheet(或刚好插入图像的行上方):
ActiveSheet.Unprotect "Your Passoword"
最后,如果你想再次锁定它,你添加这一行:
ActiveSheet.Protect Password:="Your Password", DrawingObjects:=True, Contents:=True, Scenarios:=True
希望我的回答足够清楚。 感谢所有试图帮助我解决这个问题的人。
亲切的问候, 雨果.