宏成功完成后隐藏图像

时间:2017-01-04 08:26:16

标签: vba excel-vba excel

我有一个图像,我已经绑定了宏" Zadat2"。我想在宏成功完成后隐藏图像,但是如果我更改单元格C3中的值,则图像再次可见。

done.visible = False无效。

我的代码:

Sub zadat2()

    Dim reg, check1 As String
    Dim i, j, done As Integer
    reg = Cells(2, 3).Value
    check1 = Range("C4").Value

    If check1 = "PRAVDA" Then

        i = 2
        j = 1
        done = 0
        Do While Sheets("data").Cells(i, j) <> ""
            If Sheets("data").Cells(i, j) = reg Then
                vytisteno = ZkontrolovatAVytiskoutSoubor()
                cekej = Wait()
                done = Sheets("data").Cells(i, j + 3)
                Sheets("data").Cells(i, j + 3) = done
                done.Visible = False
                Exit Do
            End If
            i = i + 1

        Loop
    Else
        MsgBox ("Opravit, špatný štítek!!!")
    End If

    Cells(3, 3) = ""

    Cells(3, 3).Select
    ActiveWindow.ScrollRow = Cells(1, 1).Row

End Sub

2 个答案:

答案 0 :(得分:2)

如果你想隐藏Image,我认为你必须使用对象Shape。我不确定是否有一个函数可以从Cell获得Shape,但是有一个函数可以从一个形状中给出左上角的单元格。你将不得不略微改变你的方法,但我认为这些功能中的一些可能是有用的。

Sheets("data").Shapes("Picture 1").Visible = True

Sheets("data").Shapes("Picture 1").TopLeftCell.Row 
Sheets("data").Shapes("Picture 1").TopLeftCell.Column

For Each s In ActiveSheet.Shapes
    With s
    .Visible = False
    End With
Next s

答案 1 :(得分:1)

假设您的图片以“ZadatShape”命名

  • 在证明“宏成功完成”的语句之后,立即在Sub zadat2()中放置以下语句:

    ActiveSheet.Shapes("ZadatShape").Visible = False '<--| change "ZadatShape" to your actual shape name
    
  • 将以下代码放在工作表的代码窗格中,其形状为:

    Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Address = "$C$3" Then ActiveSheet.Shapes("ZadatShape").Visible = True '<--| change "ZadatShape" to your actual shape name
    End Sub