2013-06-28 2 views
3
ActiveSheet.Shapes.Range(Array("Rounded Rectangle 2")).Visible = Not ActiveSheet.Shapes.Range(Array("Rounded Rectangle 2")).Visible 
ActiveSheet.Shapes.Range(Array("Rounded Rectangle 3")).Visible = Not ActiveSheet.Shapes.Range(Array("Rounded Rectangle 3")).Visible 
ActiveSheet.Shapes.Range(Array("Rounded Rectangle 4")).Visible = Not ActiveSheet.Shapes.Range(Array("Rounded Rectangle 4")).Visible 
ActiveSheet.Shapes.Range(Array("Rounded Rectangle 5")).Visible = Not ActiveSheet.Shapes.Range(Array("Rounded Rectangle 5")).Visible 

Это образец кода макроса, который я используюПоказать и Скрыть Формы в активном листе

я хочу знать, как мы можем на ходу этот код, чтобы скрыть только прямоугольник 1 линия

как

For i = 1 To ActiveSheet.Shapes.Count 
    ActiveSheet.Shapes.Range(Array("Rounded Rectangle *")).Visible = _ 
    Not ActiveSheet.Shapes.Range(Array("Rounded Rectangle *")).Visible 
Next i 

Я просто не знаю, как упростить правильно

ответ

2

Youre не за горами, это то, как использовать л OOP, чтобы пройти через все Rounded Rectangles

Dim i As Long 
For i = 1 To ActiveSheet.Shapes.Count 
    ActiveSheet.Shapes.Range(Array("Rounded Rectangle " & i)).Visible = _ 
    Not ActiveSheet.Shapes.Range(Array("Rounded Rectangle " & i)).Visible 
Next i 

примечание как "Rounded Rectangle " & i заменяется на
"Rounded Rectangle 1"
"Rounded Rectangle 2"
"Rounded Rectangle n" где n = i (то есть количество раз проходит цикл)


поэтому, если вы хотите чтобы скрыть только первый Rounded Rectangle 1, а затем добавить If/else заявление к вашей петле
ноты : этот код никогда не будет отображать первый Rounded Rectangle 1 и переключения между показывая все другие. если вы хотите, чтобы всегда показывать их тогда просто присвоить истинное в заявлении еще

Dim i As Long 
For i = 1 To ActiveSheet.Shapes.Count 
    If i = 1 Then 
     ActiveSheet.Shapes.Range(Array("Rounded Rectangle " & i)).Visible = False 
    Else 
     ActiveSheet.Shapes.Range(Array("Rounded Rectangle " & i)).Visible = _ 
     ActiveSheet.Shapes.Range(Array("Rounded Rectangle " & i)).Visible 
    End If 
Next i 
+0

Спасибо так muchhhhhh :) – eathapeking

+0

@eathapeking Youre приветствовать. вы можете принять ответ, щелкнув зеленую галочку ниже счетчика голосования –

+0

Он сказал, что не нашел того имени :( – eathapeking