Come aggiungere una forma e formattarla tramite macro

Roberto usa spesso le forme (un ovale, in realtà) per evidenziare le cose in un foglio di lavoro. Aggiunge e ridimensiona la forma, poi deve cambiare il colore della forma in rosso ed eliminare qualsiasi colore di riempimento in modo che non oscuri ciò che sta effettivamente cercando di evidenziare. Esegue questi passaggi abbastanza spesso e non ha dubbi che in qualche modo potrebbe essere accelerato con una macro, ma non è sicuro di come procedere.

Prima di esaminare le soluzioni basate su macro, potresti prenderne in considerazione alcune che non richiedono macro. Ad esempio, se crei il tuo ovale (formattato come desideri) e poi fai clic con il pulsante destro del mouse su di esso, puoi impostarlo come forma predefinita. Ciò può accelerare l’aggiunta della forma alla cartella di lavoro in futuro.

Se disponi di più forme, ciascuna di dimensioni e colori diversi, potresti voler semplicemente copiare tali forme in una cartella di lavoro diversa. Quella cartella di lavoro potrebbe essere un “contenitore” per quelle forme, in modo da poterle copiare nuovamente in altre cartelle di lavoro, secondo necessità. Questo è un ottimo modo per costruire la tua galleria di forme standard che possono essere utilizzate per anni.

Se decidi che una macro è la soluzione migliore, è relativamente semplice usarne una per aggiungere l’ovale. Eccone uno molto semplice:

 

Sub Custom_Oval1()
    ActiveSheet.Shapes.AddShape(msoShapeOval, 150, 150, _
      120, 60).Select
    Selection.ShapeRange.Fill.Visible = msoFalse
    With Selection.ShapeRange.Line
        .DashStyle = msoLineSolid
        .Weight = 3
        .Visible = msoTrue
        .ForeColor.RGB = RGB(255, 0, 0)
        .Transparency = 0
    End With
End Sub

 

 

Questa inserisce un ovale standard, con il colore, il riempimento e la trasparenza desiderati, in un’unica posizione nel foglio di lavoro. Al termine, la forma è ancora selezionata e puoi quindi trascinare l’ovale dove desideri e apportare le modifiche alle dimensioni che potrebbero essere necessarie.

Se preferisci avere l’ovale più vicino al punto desiderato, puoi utilizzare una variante che esamina la cella attiva nel foglio di lavoro e posiziona l’ovale attorno a quella cella, dimensionato in base all’altezza e alla larghezza della cella:

 

Sub Custom_Oval2()
    Dim lLeft As Long
    Dim lTop As Long
    Dim lWidth As Long
    Dim lHeight As Long
    lLeft = ActiveCell.Left - 5
    lWidth = ActiveCell.Width + 5
    lTop = ActiveCell.Top
    lHeight = ActiveCell.Height + 5
    ActiveSheet.Shapes.AddShape(msoShapeOval, lLeft, _
      lTop, lWidth, lHeight).Select
    Selection.ShapeRange.Fill.Visible = msoFalse
    With Selection.ShapeRange.Line
        .DashStyle = msoLineSolid
        .Weight = 3
        .Visible = msoTrue
        .ForeColor.RGB = RGB(255, 0, 0)
        .Transparency = 0
    End With
End Sub

 

 

Si noti che questa variazione della macro determina la posizione della forma in base alla posizione dell’oggetto ActiveCell. Se lo si desidera, è possibile modificare tutte le occorrenze di ActiveCell in Selection, il che consentirebbe di aggiustare la dimensione dell’ovale per circondare la selezione anziché semplicemente la cella attiva. Tieni presente, inoltre, che i valori di left, width e height vengono leggermente aggiustati per adattare meglio l’ovale. Potresti voler giocare con diversi valori di regolazione per ottenere proprio l’aspetto che desideri.

 

 

Tags: , , , , , , , , , , , , , , , , , , , , , , , , , , ,

Ti è stato utile?