La función With resulta de mucha utilidad, ya que permite simplificar las fórmulas que se utilizan en vba. De manera que a With se le atribuye un objeto, al cual se le hacen modificaciones sin necesidad de señalar el objeto nuevamente.
Veamos un ejemplo:
Sub CambiarFuente()
With Selection.Font
.Name = "Times New Roman"
.FontStyle = "Bold Italic"
.Size = 12
.Underline = xlSingle
.ColorIndex = 5
End With
End Sub
En este ejemplo el objeto es la fuente y con with no es necesario especificarlo varias veces, para hacer las modificaciones.
Ahora bien, la función With la podemos aplicar a distintos objetos:
Ejemplo de With aplicado a una tabla:
Aquí se crea y da formato a una tabla dinámica
Sub Tabla
With Range("A1", Range("A1").End(xlToRight)).Font
.Bold = True
.Size = 12
.Name = "arial"
End With
With Range("B2", Range("B2").End(xlDown)).Font
.Italic = True
End With
With Range("D2", Range("D2").End(xlDown)).Select
Selection.Style = "Currency"
Selection.Font.Italic = True
End With
With Range("a1").CurrentRegion.Select
Selection.HorizontalAlignment = xlCenter
ActiveSheet.ListObjects.Add(xlSrcRange, Range("A1").CurrentRegion, , xlYes).Name = "Table1"
End With
End Sub
Resultado: