Anzeige
Archiv - Navigation
1612to1616
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

VBA Code zum Formatieren läuft nicht

VBA Code zum Formatieren läuft nicht
12.03.2018 08:42:27
Axel
Guten Morgen zusammen,
ich habe Teile vom Code per Makroeditor aufgezeichnet und in ein bestehendes Makro reinkopiert. Ab "Tabelle4.Range("A:AZ").Select" läuft das Makro nicht weiter.
Tabelle3.Range("H4").ClearContents 'WM
Tabelle9.Range("H4").ClearContents '(S)AM
Tabelle22.Range("H4").ClearContents 'KM
Tabelle26.Range("H4").ClearContents '(S)KM
Tabelle4.Range("A:AZ").Select
Selection.ClearContents
Selection.UnMerge
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
With Selection.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Tabelle12.Range("F6:K6").ClearContents
Tabelle14.Range("F6:K6").ClearContents
Tabelle30.Range("F6:K6").ClearContents
Tabelle5.Range("F6:K6").ClearContents
Offensichtlich kann man das so nicht machen. Wie muss man das denn schreiben?
Ich will im Tabellenblatt 4 die Rahmenlinien wegnehmen, die Zellfarben rausnehmen und den Fokus auf A1 setzen (das habe ich später im Makro mit
Tabelle1.Activate
Tabelle1.Range("A1").Select
gemacht).
Vielen Dank vorab.
Axel

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Läuft nicht... ist keine Fehlerbeschreibung (owT)
12.03.2018 08:54:12
EtoPHG

AW: VBA Code zum Formatieren läuft nicht
12.03.2018 09:07:00
Axel
Guten Morgen EtoPHG,
danke für den Hinweis.
Ich hoffe, dass sich trotzdem jemand die mitgelieferte Fehlerbeschreibung durchliest und mir mit einem kompetenten Beitrag weiterhilft.
Gruß
Axel
AW: VBA Code zum Formatieren läuft nicht
12.03.2018 09:33:18
UweD
Hallo
da fallen mir 2 Möglichkeiten zu ein.
1.)
Das select klappt nur, wenn das Blatt auch das Aktive ist.
Aber!!! auf select kann in 99% verzichtet werden
    Tabelle3.Range("H4").ClearContents 'WM 
    Tabelle9.Range("H4").ClearContents '(S)AM 
    Tabelle22.Range("H4").ClearContents 'KM 
    Tabelle26.Range("H4").ClearContents '(S)KM 
    With Tabelle4.Range("A:AZ")
        .ClearContents
        .UnMerge
        .Borders(xlDiagonalDown).LineStyle = xlNone
        .Borders(xlDiagonalUp).LineStyle = xlNone
        .Borders(xlEdgeLeft).LineStyle = xlNone
        .Borders(xlEdgeTop).LineStyle = xlNone
        .Borders(xlEdgeBottom).LineStyle = xlNone
        .Borders(xlEdgeRight).LineStyle = xlNone
        .Borders(xlInsideVertical).LineStyle = xlNone
        .Borders(xlInsideHorizontal).LineStyle = xlNone
        With .Interior
            .Pattern = xlNone
            .TintAndShade = 0
            .PatternTintAndShade = 0
        End With
    End With
    
    Tabelle12.Range("F6:K6").ClearContents
    Tabelle14.Range("F6:K6").ClearContents
    Tabelle30.Range("F6:K6").ClearContents
    Tabelle5.Range("F6:K6").ClearContents.Range("A:AZ").Select

2.)
Du beziehst dich auf die Indexnamen, Besser die Klarnamen benutzen
    Sheets("Tabelle3").Range("H4").ClearContents 'WM 
...
LG UweD
Anzeige
AW: VBA Code zum Formatieren läuft nicht
12.03.2018 09:12:27
Daniel
Hi
das Problem ist dass du einen Zellbereich immer nur auf dem gerade aktiven Tabellenblatt selektieren kannst. dh du musst erst das Blatt und danach den Zellbereich selektieren.
die einfache Lösung:
ersetze:
Tabelle4.Range("A:AZ").Select

durch
Tabelle4.Select
Range("A:AZ").Select

oder durch
Application.Goto Tabelle4.Range("A:AZ")
besser wäre es, wenn du komplett auf das Select/Selection verzichtest.
Lösche hierzu die Zeile mit dem Select "Tabelle4.Range("A:AZ").Select" und ersetze jedes "Selection" durch den Zellbereich, den du so bearbeiten willst, so wie du ja schon zu beginn deines Codes mit den Einzelzellen richtig gemacht hast:

Tabelle4.Range("A:AZ").ClearContents
Tabelle4.Range("A:AZ").UnMerge
Tabelle4.Range("A:AZ").Borders(xlDiagonalDown).LineStyle = xlNone
Tabelle4.Range("A:AZ").Borders(xlDiagonalUp).LineStyle = xlNone
Tabelle4.Range("A:AZ").Borders(xlEdgeLeft).LineStyle = xlNone
merke dir, dass vom Recorder aufgezeichneter Code immer diesbezüglich überarbeitet werden muss.
dh du solltest alle Selects löschen und die Selections durch den entsprechenden Zellbereich ersetzen.
Der Recorder muss das so aufzeichnen, weil wir Menschen das System mit der Maus bedienen, aber im Code kann man die Objekte auch direkt ansprechen und das sollte man auch tun, denn der Code wird dadurch
kürzer, übersichtlicher, schneller in der Ausführung, weniger fehlerlanfällig usw.
Gruß Daniel
Anzeige
AW: VBA Code zum Formatieren läuft nicht
12.03.2018 09:22:29
Axel
Hallo Daniel,
danke für die schnelle Lösung. Bzgl. der Rahmen klappt das sicher.
Wie mache ich das denn an der Stelle
With Selection.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
? Hier geht es darum, die Zellfarben zu löschen.
Gruß
Axel
AW: VBA Code zum Formatieren läuft nicht
12.03.2018 09:31:37
Daniel
das funktioiniert genauso.
ersetze das "Selection" durch den Zellbereich, den du zuletzt selektiert hast (incl Tabellenblattangabe).
Gruß Daniel
AW: VBA Code zum Formatieren läuft nicht
12.03.2018 09:36:53
Axel
Ja, Daniel, das ist/war es. So funktioniert alles wie es soll.
Danke für Deine schnelle und kompetente Hilfe.
Tolles Forum, wo es auch Leute gibt, die einem wirklich helfen.
Gruß
Axel
Anzeige

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige