Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1664to1668
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Ü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

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
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
Anzeige
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
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
:-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 :-?
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
Anzeige

22 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige