我有一个图像,我已经绑定了宏" 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
答案 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