首页 文章

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

提问于
浏览
2

我正在使用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错误的任何话题 .

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

亲切的问候,雨果 .

1 回答

  • 1

    问题是我用来生成表格的代码也锁定了它们 . 我认为解锁与代码相关联的Range会使它工作,问题是当你插入一个图像时,它不包含在单元格或单元格区域中,它基本上“漂浮”在工作表上,因此图像可以没有插入,因为工作表被锁定,这就是我得到错误1004和突出显示的行的原因

    Set n = ActiveSheet.Pictures.Insert(flname)
    

    因为那是在Sheet中插入图像的操作 .

    解决方案非常简单,只需要在代码的开头(或者在插入图像的行上方)使用以下行解锁Sheet:

    ActiveSheet.Unprotect "Your Passoword"
    

    最后,如果你想再次锁定它,你可以添加以下行:

    ActiveSheet.Protect Password:="Your Password", DrawingObjects:=True, Contents:=True, Scenarios:=True
    

    我希望我的回答很清楚 . 感谢所有试图帮助我的人 .

    亲切的问候,雨果 .

相关问题