VBA – Nur Teilbereiche einer Zelle formatieren

In der Excel-Programmierung hatte ich mal wieder neue Anforderungen:

Einen Teilbereich einer Excelzelle formatieren. Das geht ganz einfach Mittels „Characters“. Im Nachfolgenden werden die ersten sieben Zeichen der Zelle unterstrichen:

dim myRange as Range
set myRange  = Range(Cells(3, 1).Address(RowAbsolute:=False, ColumnAbsolute:=False))
myRange.Characters(0, 7).Font.Underline = True

Damit sind die Grenzen der Formatierung einer Zelle mal wieder gut nach „hinten“ geschoben worden. Anbei ein Bild des formatieren Wortes einer verbundenen Zelle:

VBA Werte in Zellen formatieren

Ein benutzerdefiniertes Zellenformat lässt sich mittels VBA einfach einrichten:

dim zahl as double
zahl = 4,356

' Darstellung z.B. als Gewicht in Tonnen
cells(1,1) = Format(zahl, "0.0 t")

Wenn gezielt Zahlen formatiert werden sollen, verwende ich NumberFormat:

    With Range(Cells(3, lkw.GW_SOLL_SPALTE), Cells(x, lkw.GW_IST_SPALTE))
        .Font.Size = 10
        .Font.Bold = True
        .HorizontalAlignment = xlRight
        .NumberFormat = "0.00 ""t"""
    End With

VBA – Suchen und Ersetzen in Strings

Das Suchen und Ersetzen in String ist in VBA (Excel & Co) erwartungsgemäß ganz einfach und mit der folgenden Zeile Quelltext erledigt:

Dim textZumErsetzen, neuerText as String
textZumErsetzen = "1456,32"
neuerText = replace(textZumErsetzen, ",",".")
' Neuer Wert: "1456.32"

VBA – Selektion Speichern und wieder aufrufen

Manchmal schreibt man Informationen in eine Tabelle oder führt interaktiv Änderungen an den Daten aus. Dabei ändert sich oft der Fokus der Tabelle.
Damit der Benutzer jedoch nicht ständig wieder an seine Position scrollen und klicken muss, gibt es einfach die Möglichkeit, den aktiven Focus in Excel zwischen zu speichern und wieder abzurufen:

    ' Speichern der aktuellen Selektion
    Dim selectionValue As Variant
    selectionValue = Selection.Address

    ' Do Anythin - Tu was Du tun musst ;-)

    ' Zurücksetzen auf alte Selektion
     Range(selectionValue).Select