我可以使用VBA中的For / Next循环来减少它吗

时间:2019-01-04 03:49:07

标签: excel vba excel-vba

我觉得应该有一个方法可以通过for next loop来增加它。我想基于C36中的单元格值使形状可见。有没有办法增加每次迭代的形状名称和值?我想使用100个这样的椭圆形形状,所以我希望这样的方法能起作用。或者,当然还有其他想法。

大量的代码:

Me.Shapes("OVAL 1").Visible = Range("C36").Value > 0 Me.Shapes("OVAL 2").Visible = Range("C36").Value > 1 Me.Shapes("OVAL 3").Visible = Range("C36").Value > 3 等等...

希望这样:

Private Sub Worksheet_Calculate()

Dim i as Integer, x as Integer
 For i = 1 to 100
  For x - 0 to 99
     Me.Shapes("OVAL " & i).Visible = Range("C36").Value > x
  Next x
 Next i
End Sub`

1 个答案:

答案 0 :(得分:0)

我认为您正在尝试仅显示C36处的值大于其数字后缀减一的那些形状。如果是这样,您可以遵循以下原则:

Option Explicit

Private Sub Worksheet_Calculate()
    Dim i As Integer

    For i = 1 To 100
        'Shape will be visible if a value at C36 on this worksheet is larger
        'than (the shape's index suffix minus one).
        Me.Shapes("OVAL " & i).Visible = Me.Range("C36").Value > (i - 1)
    Next
End Sub

要获得更高的性能,请将C36的值读入类型double的变量中,在循环之前,然后在循环中使用它。