Excel VBA启用/禁用图片上的功能

时间:2018-08-19 20:59:10

标签: excel excel-vba

我下面有10张图片,我在每张图片上分配了一个宏(用于打开另一个看不见的特定图纸)。

第一个问题: 当我打开工作簿时,我只想激活第一张图片,然后激活接下来的9张图片,例如无法激活(单击)。因此,用户可以仅单击第一个,而其他按钮则不活动。

第二个问题: 但是,当我/用户单击第一张图片时,它会打开另一个特定的工作表(已由

解决
Sheets("Example1").Visible = True
Sheets("Example1").Select

),然后它还会激活第二张图片上的可能性以将其打开。

图片的工作方式类似于其他纸张的“打开按钮”,不幸的是,它必须是图片。

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

使用全局变量或隐藏工作表上的单元格来存储标志值。

例如,当打开工作簿时,将标志值设置为1。单击第一张图片时,将标志设置为2。

当单击第二张图片时,首先具有检查标志值的代码。如果它是1,退出子,所以什么也没有发生。如果该标志> = 2,则运行图片2的代码并将该标志设置为3。依此类推。

答案 1 :(得分:0)

我有一个稍微不同的建议。

  1. 为您的图片命名,例如“ Pic01,Pic02,Pic03 ...等等”
  2. 下一步在模块中创建一个过程。称为Sub ExecuteImgClick

粘贴此代码

Public imgName As String

Sub ExecuteImgClick()
    Dim img As String

    On Error Resume Next
    img = Application.Caller
    On Error GoTo 0

    If img = imgName And img = "Pic01" Then
        '~~> Do something
        imgName = "Pic02" '?????? Activate next pic
    ElseIf img = imgName And img = "Pic02" Then
        '~~> Do something
        imgName = "Pic03" '??????
    ElseIf img = imgName And img = "Pic03" Then
        '~~> Do something
        imgName = "Pic04" '??????
    ElseIf img = imgName And img = "Pic04" Then
        '~~> Do something
        imgName = "Pic05" '??????

        '
        ' And so on
        '
    End If
End Sub
    左击图像,将
  1. Assign Macro添加到所有图片,并将其附加到上述过程中
  2. 接下来传递您想成为active的图像的名称。

例如

Private Sub Workbook_Open()
    imgName = "Pic01"
End Sub

这样,无论您如何设置imgName,该图片点击都将do something