Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1232to1236
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

@FCS: VBA - Gruppierung

@FCS: VBA - Gruppierung
e-mo
Hi Franz,
sorry, war im Urlaub und habe erst heute nochmal testen können. Konnte im Thread: https://www.herber.de/forum/archiv/1228to1232/t1230880.htm#1230880 leider nicht mehr posten, daher musste ich nochmal ein neues starten.
bei der Anwendung des Codes erhalte ich folgenden Fehler:
Fehler beim Kompilieren: Syntaxfehler
Das einzige, was ich an deinem Code verändert habe, war der Eintrag von den einzelnen Tabellenblätter, wo das Makro nicht greifen soll, anzahl 26 blätter:
Select Case wks.Name
Case "Tabelle XYZ", "Tabelle ABC"
'Diese Tabellen nicht Gruppieren
was habe ich hier falsch gemacht?
Gruss,
e-mo

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: @FCS: VBA - Gruppierung
11.10.2011 12:08:50
fcs
Hallo e-mo,
was du falsch gemacht hast weiss ich nicht?
Evtl. hast du irgendwo ein Komma oder ein Anführungszeichen vergessen oder zuviel.
Wenn du 26 Tabellenblätter nicht automatisch gruppieren willst, ist es dann nicht nicht einfacher, den Case umzukehren? D.h. unter einem Case die umzugruppierenden Blatter zu listen, statt unter Case Else.
Oder kann man die Namen der umzugruppierenden Blätter anders prüfen?
Gruß
Franz
AW: @FCS: VBA - Gruppierung
11.10.2011 20:58:14
e-mo
hi franz,
ich habe eigentlich nur copy paste gemacht und den inhalt in der " " geändert. ansonsten habe ich nichts ergänzt. kann es sein, dass die anzahl nach dem CASE " TABELLE XYZ, "TABELLE ABC" etc. begrenzt ist? muss ich verstecke tabellen auch einbinden?
ich kann das leider auch nicht umkehren, wie du das erwähnt hast....da es genausoviele tabellen sind.
e-mo
Anzeige
AW: VBA - Gruppierung
12.10.2011 01:49:24
fcs
Hallo e-mo,
es gibt eine Grenze für die Anzahl Zeichen an Code pro Anweisung/Befehlszeile, die der Compiler verarbeiten kann. Ich kenne aber die genaue Zahl nicht.
Falls das der Fall sein sollte, dann die Tabellennamen auf mehrer Case-Zeilen verteilen
Auch die ausgeblendeten Tabellenblätter müssen berücksichtigt werden.
Diese kannst du jedoch auch mit einer Prüfung auf sichtbar erledigen.
Gruß
Franz

Sub GruppierenNeu()
Dim wks As Worksheet
Dim lngSpalte As Long
Dim Datum1 As Date, Datum2 As Date
'Datum des Vormonats
Datum2 = DateSerial(Year(Date), Month(Date), 1) - 1
Datum2 = DateSerial(Year(Datum2), Month(Datum2), 1)
'Datum des Vormonats im Vorjahr
Datum1 = DateSerial(Year(Datum2) - 1, Month(Datum2), 1)
Application.ScreenUpdating = False
For Each wks In ActiveWorkbook.Worksheets
If wks.Visible = xlSheetVisible Then
Select Case wks.Name
Case "Tabelle XYZ", "Tabelle ABC", "Tabelle XYZ1", "Tabelle ABC1", "Tabelle XYZ2", _
"Tabelle ABC2", "Tabelle XYZ3", "Tabelle ABC3"
Case "Tabelle XYZ4", "Tabelle ABC4", _
"Tabelle ABC5", "Tabelle XYZ5", "Tabelle ABC6", "Tabelle XYZ6"
'Diese Tabellen nicht Gruppieren
Case Else
With wks
.Columns.Ungroup
.Columns.Hidden = False
For lngSpalte = 1 To .Cells(2, .Columns.Count).End(xlToLeft).Column
Select Case lngSpalte
Case 1 To 6
'nicht gruppieren
Case 7 To 30 'G - AD
If .Cells(2, lngSpalte)  Datum2 Then
.Columns(lngSpalte).Group
End If
Case 32 To 81 'AG - CC
If .Cells(2, lngSpalte) = Datum2 Then
.Columns(lngSpalte).ColumnWidth = 16
Else
.Columns(lngSpalte).ColumnWidth = 6.43
.Columns(lngSpalte).Group
End If
Case 84 To 95 'CF-CQ
If .Cells(2, lngSpalte) = Datum1 Then
.Columns(lngSpalte).ColumnWidth = 12
Else
.Columns(lngSpalte).ColumnWidth = 6.43
.Columns(lngSpalte).Group
End If
Case 96 To 107 'CR-DC
If .Cells(2, lngSpalte) = Datum2 Then
.Columns(lngSpalte).ColumnWidth = 12
Else
.Columns(lngSpalte).ColumnWidth = 6.43
.Columns(lngSpalte).Group
End If
Case 31, 57, 82, 83 'Spalten AE,BE,CD,CE
.Columns(lngSpalte).Group
Case Else
'do nothing
End Select
Next lngSpalte
End With
wks.Outline.ShowLevels RowLevels:=0, ColumnLevels:=1
End Select
End If
Next
Application.ScreenUpdating = True
End Sub

Anzeige
AW: VBA - Gruppierung
12.10.2011 09:40:00
e-mo
ohh ist ja komisch...
hatte eine antwort geschrieben und sehe, es ist gar nicht gepostet worden....
ich bekomme jetzt einen anderen fehler: roter kreis mit weißem X und nummer: 400 :(
AW: VBA - Gruppierung
12.10.2011 12:28:11
fcs
Hallo e-mo,
keine Ahnung woran das liegen kann.
Ich kenne diese Fehlermeldung auch nicht, bzw. was die Ursache(n) sein könnte(n).
Ich würde mal folgendes probieren, falls das nicht den Rahmen sprengt:
1. Kopieren allen den VBA-Code (ich hoffe, das ist nur das Gruppierungsmakro) in eine Textdatei.
(zum späteren Wiedereinfügen)
2. Speichere deine Datei Datei im xlsx-Format (also ohne Makros) und schliesse die Datei.
3. Öffne die xlsx-Datei - im VBA-Editor sollte jetzt kein Code mehr angezeigt werden.
4. Speichere die Datei im xlsm-Format (Datei mit Makros)
5. Lege im VBA-Editor ein allgemeines Modul an.
6. Kopiere den Code aus der Textdatei in die entsprechenden VBA-Komponenten
7. Datei speichern und Makros testen.
Gruß
Franz
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige