Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Über VBA Schriftgröße einstellen.

Über VBA Schriftgröße einstellen.
28.12.2018 08:24:36
Michael
Hallo User,
als Leihe wende ich mich heute an Euch mit der bitte um Unterstützung bei der Erstellung eines VBA-Macro.
Ich möchte gerne die Schriftgröße einer Excel Zeile ändern, wenn sich in einer Zelle dieser Zeile ein definierter Text steht.
Z.B. in Zelle B2, A6 und D21 steht das Wort "Nacharbeit" so sollen dann nur die Zeilen 2, 6 und 21 die im Macro festgelegte
Schriftgröße erhalten. Schön wäre es auch, wenn man gleich dabei eine andere Schriftart festlegen könnte.
Die anderen Zeilen sollen davon unberührt bleiben.
Danke für Eure Unterstützung
Anzeige

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Über VBA Schriftgröße einstellen.
28.12.2018 09:00:36
Nepumuk
Hallo Michael,
nur beim Wort Nacharbeit? Nur bestimmte Zellen oder in der gesamten Tabelle? Soll das Makro automatisch starten oder willst du es manuell aufrufen? Gibst du das Wort Nacharbeit manuell ein, per DropDown Auswahl oder gibt eine Formel das Wort aus?
Gruß
Nepumuk
AW: Über VBA Schriftgröße einstellen.
28.12.2018 11:00:02
Michael
Hallo Nepumuk,
Rechtherzlichen Dank für deine schnelle Unterstützung.
1) Wenn das Wort Nacharbeit in irgend einer Zelle Verwendet wird z.b. D21, dann soll die ganze
Zeile 21 und auch nur dieses eine neue Schriftgröße, welche man im VBA Macro festlegen kann,
zugewiesen bekommen. Der Rest des Tabellenblattes sollte von der Änderung der schriftgröße
ausgenommen werden.
2) Das Macro sollte automatisch Starten.
3) Das Wort Nacharbeit wird durch eine Verknüpfung mit einer anderen Excel-Datei eingefügt.
Ich hoffe ich habe mich einigermaßen Verständlich ausgedrückt und Du kannst mir helfen.
Schon einmal Danke im voraus.
Micha
Anzeige
AW: Über VBA Schriftgröße einstellen.
28.12.2018 13:25:26
Nepumuk
Hallo Micha,
ich bin jetzt mal davon ausgegangen dass sich deine "Nacharbeit" in Tabelle1 befindet. Daher im Modul "DieseArbeitsmappe": Call Tabelle1.SetDictionary bzw. Call Tabelle1.ResetDictionary. Tabelle1 ist in dem Fall der Objektname der Tabelle. Den findest du im Projektexplorer vor dem in Klammern stehenden Tabellennamen auf der Exceloberfläche.
in das Modul "DieseArbeitsmappe":
Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    If Not Saved Then
        Select Case MsgBox("Sollen Ihre Änderungen in '" & Name & _
                    "' gespeichert werden", vbExclamation Or vbYesNoCancel)
            Case vbYes
                Save
            Case vbNo
                Saved = True
            Case vbCancel
                Cancel = True
        End Select
    End If
    If Not Cancel Then Call Tabelle1.ResetDictionary
End Sub

Private Sub Workbook_Open()
    Call Tabelle1.SetDictionary
End Sub

In das Modul der Tabelle:
Option Explicit

Private Const REWORK_TERM As String = "Nacharbeit"

Private lobjDictionary As Object

Friend Sub SetDictionary()
    Dim objCell As Range
    Dim strFirstAddress As String
    Set lobjDictionary = CreateObject("Scripting.Dictionary")
    Set objCell = Cells.Find(What:=REWORK_TERM, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True)
    If Not objCell Is Nothing Then
        strFirstAddress = objCell.Address
        Do
            Call lobjDictionary.Add(Key:=objCell.Address, Item:=vbNullString)
            Set objCell = Cells.FindNext(After:=objCell)
        Loop Until objCell.Address = strFirstAddress
    End If
End Sub

Friend Sub ResetDictionary()
    Call lobjDictionary.RemoveAll
    Set lobjDictionary = Nothing
End Sub

Private Sub Worksheet_Calculate()
    Dim objCell As Range
    Dim vntDictionaryKey As Variant
    Dim strFirstAddress As String
    Dim blnFound As Boolean
    Set objCell = Cells.Find(What:=REWORK_TERM, LookIn:=xlValues, _
        LookAt:=xlWhole, MatchCase:=True)
    If Not objCell Is Nothing Then
        strFirstAddress = objCell.Address
        Do
            For Each vntDictionaryKey In lobjDictionary.Keys
                If vntDictionaryKey = objCell.Address Then
                    Call lobjDictionary.Remove(objCell.Address)
                    blnFound = True
                    Exit For
                End If
            Next
            If Not blnFound Then 'Zelle mit "Nacharbeit" gefunden
                With objCell.EntireRow.Font
                    If .Size <> 12 Then 'Wenn Zeile noch nicht formatiert
                        .Size = 12 'neue Schriftgröße
                        .Bold = True 'neue Fett
                        .FontStyle = "Verdana" 'neue Schriftart
                    End If
                End With
            Else
                blnFound = False
            End If
            Set objCell = Cells.FindNext(After:=objCell)
        Loop Until objCell.Address = strFirstAddress
    End If
    For Each vntDictionaryKey In lobjDictionary.Keys
        With Range(vntDictionaryKey).EntireRow.Font 'Zelle die vorher "Nacharbeit" enthalten haben zurücksetzen
            .Size = 10 'alte Schriftgröße
            .Bold = False 'alte Fett
            .FontStyle = "Arial" 'alte Schriftart
        End With
    Next
    Call ResetDictionary
    Call SetDictionary
End Sub

Gruß
Nepumuk
Anzeige
AW: Über VBA Schriftgröße einstellen.
02.01.2019 08:11:12
Ellen
Guten Morgen zusammen und ein tolles Jahr 2019 wünsche ich allen :-)
Mein Problem hat mich wieder......
Ich möchte in Spalte A nur Ziffern stehen haben und habe dafür in eine neue Tabelle eine Matrix (=SVERWEIS(A1:A62;MATRIX!$L$11:$M$15;2;0) erstellt, was auch gut lief, es sollte aber, wenn in Spalte A nichts steht dann in der zuständigen Lösungsspalte eine 0 Null erscheinen oder von mir aus auch falsch.....
Nun erscheint immer NV oder Bezug, wenn in Spalte A keine Ziffer drin steht.
Bitte um Hilfe
Danke sehr
Anzeige
AW: Über VBA Schriftgröße einstellen.
02.01.2019 08:14:14
SF
Hola,
=wennfehler(SVERWEIS(A1;MATRIX!$L$11:$M$15;2;0);0)
Gruß,
steve1da
AW: Über VBA Schriftgröße einstellen.
02.01.2019 08:55:38
Ellen
Vielen Dank,
aber nun habe ich hinten immer 0 drin stehen, es sollte aber entweder die Baustelle zu der eingegeben Ziffer erscheinen und wenn nichts drin steht, dann nur eine 0 drin stehen
Anzeige
AW: Über VBA Schriftgröße einstellen.
02.01.2019 09:21:34
SF
Hola,
wenn der Sverweis in einen Fehler läuft, wird nicht mehr #NV oder #BEZUG ausgegeben, sondern 0.
Wenn allerdings immer 0 in der Zelle steht, läuft der Sverweis permanent in einen Fehler.
Woran das liegt können wir ohne Datei nur raten.
Gruß,
steve1da
AW: Über VBA Schriftgröße einstellen.
02.01.2019 09:27:34
Ellen
Habe in Spalte A Ziffern stehen oder auch keine und hierfür eine Matrix ( =SVERWEIS(A1:A62;MATRIX!$L$11:$M$15;2;0) auf einer neuen Tabelle erstellt, was auch für eine kleine Liste gut funktioniert hatte. Nun habe ich aber neue Mitarbeiter in der Spalte B hinzugefügt und in der Spalte A noch keine Ziffer eingegeben. Nun bekomme ich in der Lösungs- oder Ergebnisspalte nur noch NV oder Bezug....
=SVERWEIS(A2;MATRIX!$L$11:$M$15;2;0) Es sollte eine 0 ausgegeben werden, wenn nichts drin steht oder halte die jeweilige Baustelle für die eingegebenen Ziffern
Wo ist denn hier mein Fehler?
Anzeige
AW: Über VBA Schriftgröße einstellen.
02.01.2019 09:33:51
SF
Hola,
gerne nochmal: ohne die Datei zu sehen wird das wilde Raterei!
Gruß,
steve1da
Crosspost ohne Hinweis
28.12.2018 09:00:48
Werner
Hallo,
auch hier
https://ms-office-forum.net/forum/showthread.php?t=356747
Gruß Werner
AW: Crosspost ohne Hinweis
28.12.2018 09:11:14
Nepumuk
Hallo Werner,
Userbild
Gruß
Nepumuk
Anzeige
:-D
28.12.2018 09:13:45
Werner
AW: Über VBA Schriftgröße einstellen.
28.12.2018 12:30:05
Piet
Hallo Michael
als Laie kann man nicht alles wissen, schön das es Forum Ratgeber gibt.
Mit dem unteren Code dürften alle Wünsche erfüllbar sein. Du must ihn aber auf deine Bedürfnisse anpassen, denn ich habe dir gezeigt wie es grundsaetzlich geht. Da sind Funktionen dabei die du vielleicht NIHT brauchst. Dann diese Zeilen in deinem Makro löschen!!
Du kannst bei Const die Schriftfarbe, Grösse und Innenfarbe als Zahlenwert eingeben. Entsprechend wird die Zelle gesetzt. Nach ein paar mal ausprobieren in einer Beispiel Datei hast du den Dreh schnell raus. Bitte zuerst in einer Kopie Datei testen, NICHT im Original, bis das Makro einwandfrei funktioniert. Dann kannst du es ins Original übernehmen.
Bei rFind.Font.Color oder ColorIndex kann es Laufzeitfehler geben, weil ColorIndex im alten Excel 97 nur kleine Zahlen von 1-56 für Farben hatte. Mit Color kann man die heutigen sehr langen Zahlen bei Farbe einstellen! Die gewünschte Farbe kannst du mit dem Makro Recorder aufzeichnen, und den Zahlenwert in Const übernehmen. Ob du mit Color oder ColorIndex hinkommst must du selbst testen.
Im Fehlerfall erscheint ein Dialog "Laufzeitfehler" den du mit Ende oder Debut abklicken kannst. Bei Debug zeigt er dir die defekte Makrozeile in Gelb, danach must du mit Reset im Menü Run den Stopp beseitigen. Sonst funktioniert kein Makro mehr!
Ein frohes neues Jahr, und viel Spass beim Selbst dein eigenes VBA Makro basteln ...
mfg Piet
Const Farbe = 3    '3=Rot Schriftfarbe
Const Grösse = 8   'Schriftgrösse
Const Innen = 4    'Zell-Innenfarbe
Sub Schrift_aendern()
Dim Adr1 As String, rFind As Range, Zahl As Integer
If Application.WorksheetFunction.CountIf(ActiveSheet.UsedRange, "Nacharbeit") > 0 Then
Zahl = Application.WorksheetFunction.CountIf(ActiveSheet.UsedRange, "Nacharbeit")
MsgBox Zahl & "  Zellen mit Nacharbeit im Blatt"
Set rFind = Cells.Find(What:="Nacharbeit", After:=[A1], LookIn:=xlValues, LookAt:=xlWhole)
If Not rFind Is Nothing Then
Adr1 = rFind.Address
Do
rFind.Font.Size = Grösse            'Schriftgrösse
rFind.Font.Color = Farbe            'Schriftfarbe  (lange Zahl)
rFind.Font.ColorIndex = Farbe       'Schriftfarbe  (1-56)
rFind.Font.Italic = True            'Schraegschrift/ Italian
rFind.Font.Bold = False             'Fettschrift = True/False
'Zelle mit Innenfarbe versehen
rFind.Interior.ColorIndex = Innen   'Innenfarbe
'Zelle mittig zentrieren, oder Rechts, Links
rFind.HorizontalAlignment = xlCenter  'xlRight, xlLeft
Set rFind = Cells.FindNext(After:=rFind)
Loop Until rFind.Address = Adr1
End If
End If
End Sub

Anzeige
OT: .Color und .ColorIndex sind nicht vglbar, ...
28.12.2018 12:49:12
Luc:-?
…Piet,
Letzteres entspricht dem Index des klassischen Farbschemas und wird inzwischen auch für ähnliche Farben eingesetzt, so dass hiermit keine exakte FarbUnterscheidung mehr möglich ist. Deshalb ist grundsätzlich der aus den RGB-(eigentlich BGR-)Komponenten zusam­men­gesetzte Farbwert zu verwenden, wenn man exakt unterscheiden will/muss.
Gruß + GuRutsch, Luc :-?
Anzeige
AW: Über VBA Schriftgröße einstellen.
28.12.2018 13:24:41
Michael
Hallo Piet,
rechtherzlichen Dank für Deine Unterstützung und dein Verständnis das es ebend auch Anfänger gibt ;-) die hier Hilfe suchen!
Dein VBA Makro ist für mich die Lösung meines Problemes, nochmals Danke.
Micha
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Schriftgröße in Excel mit VBA anpassen


Schritt-für-Schritt-Anleitung

Um die Schriftgröße in Excel über ein VBA-Makro zu ändern, folge diesen Schritten:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.
  2. Füge ein neues Modul hinzu:

    • Klicke mit der rechten Maustaste auf VBAProject (DeinArbeitsblattName), wähle Einfügen und dann Modul.
  3. Erstelle das Makro:

    • Füge den folgenden VBA-Code in das Modul ein:
Const REWORK_TERM As String = "Nacharbeit"
Const Schriftgröße As Integer = 12
Const Schriftart As String = "Verdana"

Private Sub Worksheet_Calculate()
    Dim objCell As Range
    Dim blnFound As Boolean

    Set objCell = Cells.Find(What:=REWORK_TERM, LookIn:=xlValues, LookAt:=xlWhole)
    If Not objCell Is Nothing Then
        Do
            With objCell.EntireRow.Font
                .Size = Schriftgröße
                .Name = Schriftart
                .Bold = True
            End With
            Set objCell = Cells.FindNext(After:=objCell)
        Loop Until objCell.Address = strFirstAddress
    End If
End Sub
  1. Speichere das Makro:

    • Speichere die Arbeitsmappe als Excel-Makro-fähige Datei (.xlsm).
  2. Teste das Makro:

    • Stelle sicher, dass in einer Zelle das Wort "Nacharbeit" steht und führe das Makro aus. Die Schriftgröße der gesamten Zeile sollte sich entsprechend ändern.

Häufige Fehler und Lösungen

  • Fehler: Laufzeitfehler 1004: Dies kann passieren, wenn das Makro auf eine nicht vorhandene Zelle zugreifen möchte. Stelle sicher, dass die Zelle mit dem Text "Nacharbeit" existiert.

  • Problem: Schriftgröße wird nicht geändert: Überprüfe, ob das Makro korrekt verknüpft ist und die Zelle das Wort "Nacharbeit" tatsächlich enthält.

  • Fehler: Falsche Schriftart: Stelle sicher, dass die angegebene Schriftart auf deinem System installiert ist.


Alternative Methoden

Falls du kein VBA verwenden möchtest, kannst du die Excel Schriftgröße auch manuell anpassen:

  1. Markiere die Zeile, die du anpassen möchtest.
  2. Gehe zur Registerkarte Start.
  3. Wähle im Dropdown-Menü für die Schriftgröße die gewünschte Größe aus.

Du kannst auch die Bedingte Formatierung verwenden, um die Schriftgröße automatisch anzupassen, allerdings ist dies weniger flexibel als der Einsatz von VBA.


Praktische Beispiele

Hier sind einige Beispiele, wie du die Schriftgröße in verschiedenen Szenarien anpassen kannst:

  1. Ändern der Schriftgröße für mehrere Zeilen:

    • Ändere den Code, um mehrere Begriffe zu berücksichtigen, z.B. "Nacharbeit", "Überarbeitung".
  2. Automatische Anpassung:

    • Du kannst das Makro so anpassen, dass die Schriftgröße automatisch geändert wird, wenn neue Daten eingegeben werden, indem du es im Worksheet_Change-Event platzierst.
Private Sub Worksheet_Change(ByVal Target As Range)
    Call Worksheet_Calculate
End Sub

Tipps für Profis

  • Nutze Variablen für Schriftgröße: Anstatt eine feste Größe zu verwenden, kannst du eine Variable einführen, um die Schriftgröße dynamisch zu setzen.

  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung in dein Makro, um Laufzeitfehler elegant abzufangen und dem Benutzer eine aussagekräftige Nachricht anzuzeigen.

  • Dokumentation: Kommentiere deinen Code gut, damit du oder andere Benutzer die Logik später leicht nachvollziehen können.


FAQ: Häufige Fragen

1. Wie kann ich die Schriftgröße für mehrere Begriffe ändern? Du kannst den Code anpassen, um mehrere Begriffe zu suchen und die Schriftgröße für alle entsprechenden Zeilen zu ändern.

2. Funktioniert das Makro in allen Excel-Versionen? Der Code sollte in den meisten modernen Excel-Versionen funktionieren, jedoch kann die Implementierung in Excel 97 anders sein.

3. Wie kann ich die Schriftgröße automatisch anpassen, wenn sich der Inhalt ändert? Du kannst das Makro in das Worksheet_Change-Ereignis einfügen, um die Anpassung bei jeder Änderung zu triggern.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige