Изменение положения фигур с помощью цикла

#excel #vba

#excel #vba

Вопрос:

Я создал скрипт на VBA, так что на каждой итерации моя фигура опускается на одну строку до каждого листа, в то время как фигура ниже поднимается, создавая заметный эффект на листе, на котором находится пользователь. Я оставляю ниже пример того, как это будет:

введите описание изображения здесь

При выполнении мои фигуры выравниваются одна поверх другой, и в цикле 2 все работает правильно

   Sub MenuFormatter ()
    
        Dim start As Range
        Dim posCurrent As Range
        Dim posEnd As Range
        
        Dim coorEnd_X As Double
        Dim coorEnd_Y As Double
        
        Dim styleFocus As Shape
        Dim styleStatic As Shape
        
        Dim fontFocus As Shape
        Dim fontStatic As Shape

        
        ActiveSheet.Range ("O12"). Select
        
    For I = 2 To 23
     
        
        ActiveWorkbook.Worksheets (I) .Select
        

        Set posCurrent = Selection 'Initial Position as reference

        
        Set posEnd = posCurrent.Offset (2, 0) 'Position below, next item
       

        coorFinal_X = posFinal.Left 'Horizontal Coordinate
        coorFinal_Y = posFinal.Top 'Vertical Coordinate
        
        
        'Select the shape objects
        Set styleStatic = Worksheets (I) .Shapes ("static-" amp; I)
        Set estiloFocus = Worksheets (I) .Shapes ("focus")
        
        
        'Select the Font object
        Set fontFocus = Worksheets (I) .Shapes ("title-" amp; I - 1)
        Set fontStatic = Worksheets (I) .Shapes ("title-" amp; I)
        
        'Move Focus down
        styleFocus.Left = coorFinal_X
        styleFocus.Top = coorFinal_Y
        
        'Change the color from highlight to statico
        fontFocus.TextFrame2.TextRange.Characters.Font.Fill.ForeColor.RGB = RGB (98, 114, 164)
        
        'Move the Statico down
        styleStatic.Top = posCurrent.Top
        styleStatic.Left = posCurrent.Left
        
        'Change the color to the static (default) style for highlighting
        fontStatic.TextFrame2.TextRange.Characters.Font.Fill.ForeColor.RGB = RGB (248, 248, 242)
      
        'Reset the reference point
        posEnd.Select

     Next I

End Sub