Wie kann ich per VBA die neuen Schriftarten dynamisch setzen (z. B. für barrierefreie Designs)?

Moin. Ich bin Sönke Schäfer, der Datenschäfer. Heute geht’s um ein Thema, das in vielen Access-Anwendungen untergeht: Schriftarten. Genauer gesagt: Wie Du in VBA die Schriftarten dynamisch setzt – etwa für barrierefreie Designs, hohe Lesbarkeit oder einfach bessere Optik. Klingt erstmal nach Designkram – ist aber Technik. Und wichtig.

Warum überhaupt dynamisch?

Weil es Situationen gibt, in denen der Nutzer entscheiden soll, wie groß oder gut lesbar etwas ist. Oder weil Du je nach Benutzerrolle, Zoom oder Gerät anpassen willst.

  • Barrierefreiheit – z. B. größere Schrift für Sehbehinderte
  • Corporate Design – je nach Mandant andere Fonts
  • Geräteanpassung – z. B. für Touch-Geräte größere Buttons

Welche Objekte lassen sich überhaupt umstellen?

Im Grunde: Alle Steuerelemente mit Text. Also:

  • Labels
  • Textfelder
  • Buttons
  • Reiter, Kombis, Listen

Die meisten haben die Eigenschaften:

  • .FontName
  • .FontSize
  • .FontBold usw.

Schriftart global setzen – so geht’s

Du willst nicht jedes Element einzeln anfassen? Dann hier ein Muster, das über alle Controls in einem Formular läuft und die Schriftart setzt:

Sub SetzeSchriftart(frm As Form, fontName As String, fontSize As Integer)    Dim ctl As Control    For Each ctl In frm.Controls        On Error Resume Next ' Falls Control keine Font-Eigenschaft hat        ctl.FontName = fontName        ctl.FontSize = fontSize        On Error GoTo 0    Next ctlEnd Sub

Aufruf im Formular z. B. so:

Private Sub Form_Load()    SetzeSchriftart Me, "Segoe UI", 11End Sub

Benutzer wählen lassen – z. B. über eine Einstellung

Du kannst die gewünschte Schriftart in einer Tabelle oder Registry speichern, z. B.:

Dim userFont As StringuserFont = Dlookup("Wert", "tblEinstellungen", "Schlüssel = 'SystemFont'")SetzeSchriftart Me, userFont, 11

Damit kannst Du später per Formular-Option z. B. zwischen „Segoe UI“, „OpenDyslexic“ oder „Arial“ umschalten lassen.

Bonus: Nur bestimmte Steuerelemente anpassen

Du willst nicht alles ändern? Kein Problem:

For Each ctl In frm.Controls    If ctl.ControlType = acLabel Or ctl.ControlType = acTextBox Then        ctl.FontName = fontName        ctl.FontSize = fontSize    End IfNext ctl

Barrierefreiheit mit Dyslexie-freundlicher Schrift

Die Schriftart OpenDyslexic ist ein guter Einstieg. Die musst Du allerdings vorher auf dem System installieren. Danach kannst Du sie wie jede andere Schrift ansprechen.

SetzeSchriftart Me, "OpenDyslexic", 12

Und wenn die Schrift nicht vorhanden ist? Dann eine Fallback-Lösung einbauen:

On Error Resume Nextctl.FontName = "OpenDyslexic"If ctl.FontName <> "OpenDyslexic" Then ctl.FontName = "Arial"On Error GoTo 0

Mein Fazit als Datenschäfer

Ja, Schriftarten wirken erstmal wie Deko. Aber wenn Du barrierefrei arbeiten willst oder mehreren Usern eine saubere Darstellung bieten willst, gehört das dazu. Und es zeigt: Du meinst’s ernst mit Usability. Ich helf Dir gern, wenn’s komplexer wird – auch mit SQL, Access und allem, was sonst noch Daten frisst.

Datenschäfer: Analyse, Auswertung und Automatisierung für KMU im Norden 🐑

Kategorien:

Schlagwörter: