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

Makro Spalten formatieren und beschreiben

Makro Spalten formatieren und beschreiben
30.01.2013 22:54:17
Uwe
Hallo,
ich habe folgendes Problem:
Meine Tabelle erzeugt automatisch Blätter dessen Namen im Register "Liste" stehen.
Die erzeugten Register sind jeweils eine Kopie von Register "Muster".
In den erzeugten Registern werden dann individuelle Eintragungen gemacht.
Die Informationen aus Spalte B / ab Zeile 9 sollen dann in das Register
"Gesamtliste" automatisch eingetragen werden.
Das Register "Gesamtliste" soll dann die Informationen aller generierten Listen anzeigen.
D.H die Spalten E bis ... müssen bei Bedarf automatisch formatiert und gefüllt werden.
Die Anzahl der generierten Blätter ist variabel und kann größer 200 sein.
Mir fehlt jetzt das Makro, welches bei Aufruf von "Gesamtliste" die Informationen aus den Registern holt, bzw. bei Bedarf weitere Spalten automatisch auffüllt.
Wenn in "Liste" ein Name gelöscht wird, muss ebenfalls der Inhalt der entsprechenden Spalte in "Gesamtliste" gelöscht werden.
Das Tabellenblatt dessen Name in Liste gelöscht wurde soll unverändert bleiben.
im Anhang meine aktuelle Datei
https://www.herber.de/bbs/user/83667.zip
Vielen dank für Eure Hilfe
Uwe

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

Betreff
Datum
Anwender
Anzeige
AW: Makro Spalten formatieren und beschreiben
01.02.2013 01:49:20
fcs
Hallo Uwe,
in der Text-Datei findest du ein entsprechendes Makro, das du in einem allgemeinen Modul der Datei einfügts.
https://www.herber.de/bbs/user/83690.txt
Zusätzich fügst du im Codemodul von "Gesamtliste" das folgende Ereignismakro ein:

Private Sub Worksheet_Activate()
Call GesamtListe_Update
End Sub

Gruß
Franz

AW: Makro Spalten formatieren und beschreiben
01.02.2013 18:32:15
Uwe
Hallo Franz,
vielen Dank für Deine Mühe
das Makro funktioniert wunderbar.
Habe aber noch zwei Bitten und eine Frage
1. Bitte
Weil die Namen unterschiedlich lang sind, werden die Spalten in der Gesamtliste unnötig breit
die Eintragung mit den zugehörigen Prüftexten sind viel kürzer.
Deshalb ist es sinnvoll die Namen in Zeile 9 ab Spalte E um 90° zu drehen.
2. Bitte
in der Gesamtliste bekommt man einen Überblick der Detaileintragungen aus den einzelnen Listen
Ich werde die Gesamtliste auch noch zusätzlich mit einem Passwort versehen (vorerst "Gesamtliste"), welches bei Aktivierung vom Makro aufgehoben, und zum Ende wieder gesetzt wird.
Aber die Person, welche die Gesamtliste bearbeiten kann, darf auch hier Änderungen durchführen.
Hierfür ist es notwendig ein weiteres Makro zu aktivieren, welches die Änderungen in den Zellen ab E11
wieder zurück in die Tabellen schreibt.
Der Tabellenname steht ja in ab Spalte E / Zeile 9
Könntest Du mir hierfür ebenfalls ein Makro schreiben?
Frage:
Die Datei wird durch die hohe Anzahl der erzeugten Tabellenblätter sehr groß.
Das Blatt Muster hat viele Berechnungen und SVERWEISE.
Gibt es eine Möglichkeit die Größe der gesamten Tabelle klein zu halten?
Evtl sollen 500 Blätter erzeugt werden.
Eine Datenbank wäre im nachhinein besser gewesen.
Vielen vielen Dank
mit freundlichen Grüßen
Uwe

Anzeige
AW: Makro Spalten formatieren und beschreiben
01.02.2013 18:36:29
Uwe
Hallo Franz,
vielen Dank für Deine Mühe
das Makro funktioniert wunderbar.
Habe aber noch zwei Bitten und eine Frage
1. Bitte
Weil die Namen unterschiedlich lang sind, werden die Spalten in der Gesamtliste unnötig breit
die Eintragung mit den zugehörigen Prüftexten sind viel kürzer.
Deshalb ist es sinnvoll die Namen in Zeile 9 ab Spalte E um 90° zu drehen.
2. Bitte
in der Gesamtliste bekommt man einen Überblick der Detaileintragungen aus den einzelnen Listen
Ich werde die Gesamtliste auch noch zusätzlich mit einem Passwort versehen (vorerst "Gesamtliste"), welches bei Aktivierung vom Makro aufgehoben, und zum Ende wieder gesetzt wird.
Aber die Person, welche die Gesamtliste bearbeiten kann, darf auch hier Änderungen durchführen.
Hierfür ist es notwendig ein weiteres Makro zu aktivieren, welches die Änderungen in den Zellen ab E11
wieder zurück in die Tabellen schreibt.
Der Tabellenname steht ja in ab Spalte E / Zeile 9
Könntest Du mir hierfür ebenfalls ein Makro schreiben?
Frage:
Die Datei wird durch die hohe Anzahl der erzeugten Tabellenblätter sehr groß.
Das Blatt Muster hat viele Berechnungen und SVERWEISE.
Gibt es eine Möglichkeit die Größe der gesamten Tabelle klein zu halten?
Evtl sollen 500 Blätter erzeugt werden.
Eine Datenbank wäre im nachhinein besser gewesen.
Vielen vielen Dank
mit freundlichen Grüßen
Uwe

Anzeige
AW: Makro Spalten formatieren und beschreiben
04.02.2013 01:42:20
fcs
Hallo Uwe,
das formatieren der Zeile mit den Namen in der Gesamtliste ist kein Problem.
Dazu in folgendem Abschnitt des Makros eine Zeile einfügen:
  With wksGesamt
'Namenzeile mit Rahmen versehen und Spaltenbreite optimieren
lngSpalte = lngSpalte - 1
If lngSpalte >= cSpalte1 Then
With .Range(.Cells(cZeileName, cSpalte1), .Cells(cZeileName, lngSpalte))
.BorderAround LineStyle:=xlContinuous
.Borders(xlInsideVertical).LineStyle = xlContinuous
.Orientation = 90 'Text vertikal ausrichten               'neu 2013-02-03
.EntireColumn.AutoFit
End With
End If
End With

Die Daten aus der Gesamtliste nach Änderungen in die Einzelblätter zu übertragen ist auch kein sehr großes Problem. Allerdings muss für das Ändern der Daten in der Gesamtliste als auch die Übertragung der Daten in die Einzelblätter eine Berechtigung via Kennwort eingebaut werden. Das wird dann entsprechend komplizierter.
Wenn du ca. 500 Tabellenblätter/namen verwalten willst/musst, dann bekommst nicht nur ein Problem mit der Dateigröße und der Anzahl der Formeln/Berechnungen, sondern auch mit zwei Grenzen in Excel 2003. Hier ist die Anzahl der Tabellenblätter begrenzt auf ca. 255., die max. mögliche Anzahl der Spalten ist 255, du kannst beim aktuellen Aufbau der "Gesamtliste" also nur ca. 250 Namen erfassen. Bei so vielen Tabellenblättern daurt dann ggf. auch die Neuberechnung der Datei entsprechend lange.
Die Grenzen bei Blattzahl und Spaltenanzahl bestehen ab Excel 2007 nicht mehr, aber das ändert nur bedingt etwas an den Rechenzeiten. Die Dateigröße schrumpft wahrscheinlich, da die Dateien beim Speichern in einem komprimierten Format gespeichert werden.
Ein Ausweg aus diesem Dilemma:
1. Die Daten werden nur in der Gesamtliste gespeichert.
2. In der Gesamtliste werden die Spalten und Zeilen vertauscht (Transponiert)
Dadurch können die Daten problems zu einer großen Anzahl Namen verwaltet werden mit bis zu 250 Prüfkriterien.
3. Das Musterblatt wird zu einer Eingabe-Maske umfunktioniert.
Wird im Blatt "Liste" ein Name selektiert, dann werden die zugehörigen Daten aus der Gesamtliste in die Eingabemaske eingetragen und die Formeln neu berechnet. Ein neuer Name wird ggf. in der Gesamtliste ergänzt.
Nach der Eingabe in die Maske werden die Daten in die Gesamtliste zurückgeschrieben.
Alternativ könnte man auch die Daten zu jedem Namen in einer eigenen Datei speichern und für die Gesamtliste dann die Daten aus den einzelnen Dateien einlesen.
Ein Problem wären dann ggf. die Daten der "Schläfer" (Tabellenblätter zu Namen, die in dem Blatt "Liste" nicht aufgeführt sind). Diese müsste man dann in den Listen entsprechend in einer Zusatzspalte kennzeichnen.
Du siehst:
Für die Anpassung an viele Namen muss du dir jetzt erst einmal deinen Lösungsweg überlegen.
Danach kann man dann über ggf. erforderliche Makros nachdenken.
Gruß
Franz

Anzeige
AW: Makro Spalten formatieren und beschreiben
04.02.2013 20:53:45
Uwe
Hallo Franz
Danke für Deine ausführliche Hilfe
Ich werde wohl bei >240 Einträgen eine zweite Tabelle beginnen müssen.
Der Aufwand wäre zu groß, und die Rechenlaufzeit ist schon bemerkbar.
Trotzdem habe ich ein weiteres Problem beim Kopieren der Werte aus den einzelnen Tabellen.
Der Befehl

With wksName
.Range(.Cells(cZeile_1, cSpalte_Copy), .Cells(cZeile_L, cSpalte_Copy)).Copy _
Destination:=wksGesamt.Cells(cZeileName + 1, lngSpalte)
kopiert alles , einschließlich Formeln und bedingte Formatierungen
somit habe ich den Befehl

With wksName
.Range(.Cells(cZeile_1, cSpalte_Copy), .Cells(cZeile_L, cSpalte_Copy)).Copy
wksGesamt.Cells(cZeileName + 1, lngSpalte).PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
dahinter gesetzt.
Jetzt habe ich aber in bestimmten Zellen bedingte Formatierungen, welche die Schrift durchgestrichen darstellen.
Bedingung 1

=UND($P9="X";$B9="niO"
) dann rot und durchgestrichen
Bedingung 2 Zellwert = „niO“ dann rot
Bedingung 3 Zellwert = „iO“ dann grün
Weil die Spalte B kopiert wird und mit Paste die Formeln gelöscht werden, funktioniert der Farbumschlag, aber Bedingung 1 (durchgestrichen) funktioniert nicht weil der Bezug zur Spalte P aus der Ursprungstabelle fehlt.
In Zeile 8 ist zusätzlich die Wenn Funktion
=WENN($B$30;"niO";WENN(UND($A$30;$B$3=0);"iO";"?"))

welche in „Gesamtliste“ aber nichts zu suchen hat. In "Gesamtliste" funktionieren die Farbumschläge weil die Bedingungen nur für Zellinhalte gelten.
Kurz gesagt:
Der Kopierbefehl soll genau das kopieren, was in den Quelltabellen zu sehen ist.
Hast Du ja auch hierfür eine Lösung?
Vielen Dank für Deine Geduld
Grüße
Uwe
Anzeige

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige