Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1464to1468
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

diverse Blätter in Abhängigkeit von Namen auswähle

diverse Blätter in Abhängigkeit von Namen auswähle
12.12.2015 18:01:40
EasyD

Servus zusammen
ich hätte da mal wieder was neues, konnte leider im Netz nix finden.
Problem - ich habe eine unbestimmte Anzahl an Tabellenblättern, die aber allesamt 4-stellige numerische Namen haben (zb 1000, 2650, 3612, etc).
Ich will alle Blätter mit einem solchen Namen auswählen und einheitlich formatieren.
(- vielleicht lässt sich das auch ohne VBA lösen? Es handelt sich um einzelne Pivottables, die ich mir mit dem Befehl "Berichtsfilterseiten anzeigen..." automatisch generiere. Leider kann man offensichtlich die Autoformatierung bei den Pivottables nicht aus schalten. Wenn die zu erstellenden Tables das gleiche Format bekommen würden wie die Ursprungs-Pivot, dann wäre mein Problem auch gelöst.)
Den Formatsbefehl habe ich mir mit Makrorecorder schon gebaut. Wähle ich ein einzelnes Blatt aus, funktioniert der Code. Ich möchte aber alle gleichzeitig...
Auszug aus meinem Code:
For Each wksWS In ActiveWorkbook.Worksheets
If wksWS.Name Like "****" Then
'gibt es sowas wie Platzhalter in VBA? **** war meine erste Idee....
'...die ganze Formatierung lasse ich hier mal raus.....
End If
Next wksWS
auch schon probiert, leider auch erfolglos:
Dim i As Integer
For i = 1000 To 9000
If Worksheets(Worksheets.Count).Name = i Then
'Formatierung....
End If
Next i
Bis jetzt kamen die geistreichen Ideen immer postwendend ;)
Ich bin gespannt und harre der Lösung.
Gruß
Easy

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

Betreff
Datum
Anwender
Anzeige
AW: diverse Blätter in Abhängigkeit von Namen auswähle
12.12.2015 18:08:45
Sepp
Hallo Easy,
Dim objWS As Worksheet

For Each objWS In ThisWorkbook.Worksheets
  If objWS.Name Like "####" Then
    '...
  End If
Next

Gruß Sepp

Anzeige
AW: diverse Blätter in Abhängigkeit von Namen auswähle
12.12.2015 19:50:34
EasyD
Danke erstmal Sepp
auf die Nummer mit den Rauten hätte ich auch selbst kommen können.
Habe den Code angepasst, ABER
leider macht er die Formatierung nur mit dem ersten Blatt, alle anderen bleiben wie gehabt.
Der Code mal vollständig:
Dim objWS As Worksheet
For Each objWS In ThisWorkbook.Worksheets
If objWS.Name Like "####" Then
Columns("A:A").Select
Selection.NumberFormat = "m/d/yyyy"
Columns("B:C").Select
Selection.ColumnWidth = 30.86
Range("B3:C4").Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("B1").Select
Selection.Font.Italic = True
Selection.NumberFormat = "General"
With Selection
.HorizontalAlignment = xlRight
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("A1:C1").Select
Range("C1").Activate
With Selection.Interior
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorDark1
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThick
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThick
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThick
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThick
End With
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
End If
Next
was mache ich falsch?????

Anzeige
AW: diverse Blätter in Abhängigkeit von Namen auswähle
12.12.2015 22:00:57
Sepp
Hallo Easy,
"was mach ich falsch?????"
Mit .Selection beziehst du dich immer auf das aktive Blatt!
Außerdem ist .Select zu 99% unnötig und langsam, der Cursor ist ja kein Hund, den man herumhetzt!
Sub formatieren()
Dim objWS As Worksheet

For Each objWS In ThisWorkbook.Worksheets
  If objWS.Name Like "####" Then
    With objWS
      .Columns("A:A").NumberFormat = "m/d/yyyy"
      .Columns("B:C").ColumnWidth = 30.86
      With .Range("B3:C4")
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
      End With
      With .Range("B1")
        .Font.Italic = True
        .NumberFormat = "General"
        .HorizontalAlignment = xlRight
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
      End With
      With .Range("A1:C1")
        With .Interior
          .PatternColorIndex = xlAutomatic
          .ThemeColor = xlThemeColorDark1
          .TintAndShade = 0
          .PatternTintAndShade = 0
        End With
        .Borders(xlDiagonalDown).LineStyle = xlNone
        .Borders(xlDiagonalUp).LineStyle = xlNone
        .Borders(xlInsideVertical).LineStyle = xlNone
        .Borders(xlInsideHorizontal).LineStyle = xlNone
        With .Borders(xlEdgeLeft)
          .LineStyle = xlContinuous
          .ColorIndex = 0
          .TintAndShade = 0
          .Weight = xlThick
        End With
        With .Borders(xlEdgeTop)
          .LineStyle = xlContinuous
          .ColorIndex = 0
          .TintAndShade = 0
          .Weight = xlThick
        End With
        With .Borders(xlEdgeBottom)
          .LineStyle = xlContinuous
          .ColorIndex = 0
          .TintAndShade = 0
          .Weight = xlThick
        End With
        With .Borders(xlEdgeRight)
          .LineStyle = xlContinuous
          .ColorIndex = 0
          .TintAndShade = 0
          .Weight = xlThick
        End With
      End With
    End With
  End If
Next

End Sub

Gruß Sepp

Anzeige
AW: es ist deprimierend...
12.12.2015 22:18:07
EasyD
.... wie einfach euch die Lösungen von den Händen gehen.
Vielen Dank.
Das ich nicht zuviel rumselektieren sollte, weiß ich. Vergesse das Löschen von überflüssigen Überbleibseln aus dem Makro-Recorder manchmal.
Ich frag mich manchmal, was euch Jungs so antreibt. Ihr solltet Geld nehmen dafür. Ich weiß jedenfalls nicht wie lange ich noch dran gesessen hätte. Wahrscheinlich hätte ich frustriert irgendwann aufgegeben.
Also nochmal, herzlichen Dank! Läuft wie gewünscht!

AW: diverse Blätter in Abhängigkeit von Namen auswähle
12.12.2015 18:10:11
Tino
Hallo,
versuch es bei der Like Funktion mit der Raute anstatt mit Stern.
Raute steht für eine Zahl.
Gruß Tino

Anzeige
siehe auch in der Online Hilfe...
12.12.2015 18:18:49
Tino
https://msdn.microsoft.com/de-de/library/swf8kaxw.aspx

AW: siehe auch in der Online Hilfe...
12.12.2015 19:53:37
EasyD
Die kannte ich noch gar nicht ;)
bisher habe ich mir meine Codes immer nur zusammen gestückelt. Damit wird es künftig sicher besser klappen. Danke!

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige