我在excel上有两张纸,一张叫做Raw,另一张叫做Graphs。我想要做的是在Raw中包含一些单元格,这些单元格= TRUE,然后我想要一个形状出现在“图形”页面上。
我对VBA来说还很陌生,所以我还没有尝试很多:(
Private Sub Worksheet_Calculate()
With Worksheets("Graph")
If Me.Range("FK45").Value = True Then
.Shapes("Test1").Visible = True
Exit Sub
ElseIf Me.Range("FK45").Value = False Then
.Shapes("Test1").Visible = False
Exit Sub
End If
End With
End Sub
我可以使它工作,因此,如果FK45为TRUE,则图像显示,但如果FK45为FALSE,则图像不显示,但是我想做的就是为此添加更多内容。
Private Sub Worksheet_Calculate()
With Worksheets("Graph")
If Me.Range("FK45").Value = True Then
.Shapes("Test1").Visible = True
Exit Sub
ElseIf Me.Range("FK45").Value = False Then
.Shapes("Test1").Visible = False
Exit Sub
End If
End With
With Worksheets("Graph")
If Me.Range("FK46").Value = True Then
.Shapes("Test2").Visible = True
Exit Sub
ElseIf Me.Range("FK46").Value = False Then
.Shapes("Test2").Visible = False
Exit Sub
End If
End With
End Sub
我希望它们彼此独立,并在必要时添加更多内容
如果FK45为TRUE,则Image1显示 如果FK45为FALSE,则不会显示Image1 和/或 如果FK46为TRUE,则Image2显示 如果FK46为FALSE,则Image2不显示 和/或 如果FK47为TRUE,则Image3显示 如果FK47为FALSE,则Image3不显示
以此类推...
答案 0 :(得分:0)
在VB编辑器中找到您的 Worksheet 和 Shape 对象,然后在各自的属性窗口中将其系统名称重命名为直观的名称。
通过这种方法,您可以摆脱 With Worksheets("Graph")
的构造,而可以通过其系统名称(如 With Graph
)来调用它们。如果您想重命名工作表或形状,这也将派上用场。
请注意,您在每次单元格检查后 Exit Sub
,您的过程在第一个单元格后停止,并且不再继续进行。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngCell As Range
Dim shpImage As Shape
For Each rngCell In Target.Cells
' check if change was made in "FK"
If Not Intersect(rngCell, Me.Columns("FK")) Is Nothing Then
Select Case rngCell.Row
Case 45: Set shpImage = Graph.MyImage_1
Case 46: Set shpImage = Graph.MyImage_2
End Select
' if only boolean values present, no need for IF construction
shpImage.Visible = rngCell.Value : Set shpImage = Nothing
End If
Next
End Sub
如果图像名称具有单独的列,这会容易得多,您可以像这样进行检查(例如,形状名称位于“ FL”列中)
Graph.Shapes(rngCell.Offset(0, 1).Value).Visible = rngCell.Value