昏暗的多个潜艇

问题描述 投票:0回答:1

我有一个宏绑定到一个命令按钮,允许用户插入图像。

    Sub Insert_Image()

    ActiveSheet.Unprotect

    With Application.FileDialog(msoFileDialogFilePicker)
            .AllowMultiSelect = False
            .ButtonName = "Submit"
            .Title = "Select an image file"
            .Filters.Clear
            .Filters.Add "JPG", "*.JPG"
            .Filters.Add "JPEG File Interchange Format", "*.JPEG"
            .Filters.Add "Graphics Interchange Format", "*.GIF"
            .Filters.Add "Portable Network Graphics", "*.PNG"
            .Filters.Add "Tag Image File Format", "*.TIFF"
            .Filters.Add "All Pictures", "*.*"

        If .Show = -1 Then
            Dim img As Object
            Set img = ActiveSheet.Pictures.Insert(.SelectedItems(1))

            'Position Image
            img.Left = 598
            img.Top = 70

mbResult = MsgBox("Did you select the correct image?", vbYesNo)

    Select Case mbResult
        Case vbNo:
            img.Delete
    End Select

        End If
    End With

ThisWorkbook.Activate
ActiveSheet.Protect

End Sub


---------------------------------------------
Sub Delete_Image()

 img.Delete

End Sub

我正在尝试创建一个单独的命令按钮,允许用户删除图像,如果他们插入错误的图像。

当我将Dim img As Object更改为Public img As Object时,我在Sub或Function Error中得到一个无效属性,如果我将其保留为Dim img.delete为空。

我不确定如何跨多个潜艇跨越变量。

提前致谢。

excel vba excel-vba
1个回答
2
投票

把它放在你的Sub之外,在模块的顶部:

Option Explicit

Public img As Object

Public Sub CreateImg()
    Set img = ActiveSheet.Pictures.Insert(.SelectedItems(1))
End Sub

Public Sub DeleteImg()
    If Not (img Is Nothing) Then
        img.Delete
        Set img = Nothing
    End If
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.