none
Posicionando Formas com iteração RRS feed

  • Pergunta

  • Olá Guys, Eu criei um script em VBA, de forma que em cada iteração minha forma desce uma linha para cada folha enquanto a forma abaixo sobe, criando um efeito de destaque na folha.

    Na execução, minhas formas são alinhadas uma em cima da outra, porem no loop 2, tudo funciona corretamente

    Sub MenuFormatador()
        
            Dim inicio As Range
            Dim posAtual As Range
            Dim posFinal As Range
            
            Dim coorFinal_X As Double
            Dim coorFinal_Y As Double
            
            Dim estiloFocus As Shape
            Dim estiloEstatico As Shape
            
            Dim fontFocus As Shape
            Dim fontEstatico As Shape
    
            
            ActiveSheet.Range("O12").Select
            
        For I = 2 To 5
         
            
            'ActiveWorkbook.Worksheets(I).Select
            
    
            Set posAtual = Selection 'Posicao Inicial como referencia
    
            
            Set posFinal = posAtual.Offset(2, 0) 'Posicao abaixo, proximo item
           
    
            coorFinal_X = posFinal.Left 'Coordenada Horizontal
            coorFinal_Y = posFinal.Top  'Coordenada Vertical
            
            
            ' Seleciona os objetos shapes
            Set estiloEstatico = Worksheets(I).Shapes("estatico-" & I)
            Set estiloFocus = Worksheets(I).Shapes("focus")
            
            
            ' Seleciona o oibjeto Font
            Set fontFocus = Worksheets(I).Shapes("titulo-" & I - 1)
            Set fontEstatico = Worksheets(I).Shapes("titulo-" & I)
            
            ' Movimenta o Focus para baixo
            estiloFocus.Left = coorFinal_X
            estiloFocus.Top = coorFinal_Y
            
            ' Altera a cor para do destaque para estatico
            fontFocus.TextFrame2.TextRange.Characters.Font.Fill.ForeColor.RGB = RGB(98, 114, 164)
            
            ' Movimenta o Estatico para baixo
            estiloEstatico.Top = posAtual.Top
            estiloEstatico.Left = posAtual.Left
            
            'Altera a cor para do estilo estatico (padrao) para destaque
            fontEstatico.TextFrame2.TextRange.Characters.Font.Fill.ForeColor.RGB = RGB(248, 248, 242)
          
          ' Reseta o ponto de refencia
            posFinal.Select
    
         Next I
    
    End Sub


    domingo, 1 de novembro de 2020 15:56