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

In Mappen mit Makros Spalten einfügen/lösch

In Mappen mit Makros Spalten einfügen/lösch
16.05.2013 10:09:39
Wilfried
Hallo und einen schönen guten Morgen.
Vielleicht eine ganz blöde Frage, aber da ich für mich noch keine passende Antwort gefunden habe, möchte ich diese trotzdem einmal loswerden.
Zur Vorgeschichte: Ich habe für unseren Rommé Club eine Anwendung entwickelt, in die die Ergebnisse der Spielabende eingetragen und dann über verschiedene Tabellenblätter sehr umfangreiche Auswertungen (Bspw. Platzierung mit/ohne Streichwertungen, Tagessieger, Sieger einer Spielserie, diverse Hitlisten, Spielerblatt, das die Platzierung jeden einzelnen Spielabends zeigt, viele mehrfach bedingte Formatierungen, ...) zur Verfügung gestellt werden. Da im Gegensatz zum Fußball, nicht jeder Spieler jede Woche spielt, konnte ich nur aus einer Fußballanwendung eine Kleinigkeit übernehmen.
Grundsätzlich konnte ich konnte ich alle Berechnungen über Formeln abbilden, ging also ohne VBA. Für das Sortieren auf Tastendruck und weiterer Komfortfunktionen, kam dann doch das eine oder andere Makro hinzu. Aus der Kombination Makrorekorder und noch offene Fragen googeln, konnte ich dann die Anwendung abrunden und recht "bedienerfreundlich" gestalten.
So nun langsam zu meiner Frage. Nachdem ich schon einige Makros eingebunden hatte, habe ich aber auch noch in einzelnen Tabellenblättern Spalten eingefügt oder auch wieder gelöscht.
Dumm war, dass ich dann jedes mal viele SVERWEISe (Spaltennummer, die das Ergebnis liefert) und Makros nacharbeiten musste. Zumal bei einer umfangreichen Anwendung nicht sofort alle fehlenden Nacharbeiten ins Auge fallen.
Spalten, die ich nicht mehr benötigte habe ich dann ab irgendwann im Kopf eine andere Farbe gegeben und ausgeblendet. Andere Farbe deshalb, damit ich bei einer zwischenzeitlich Einblendung anschließend wieder richtig ausblenden konnte.
Neue Spalten habe ich im zentralen Tabellenblatt dann immer am Ende eingefügt, auch wenn sie thematisch wo anders hingehört hätten.
Wie hätte ich es machen müssen, um bei späteren Änderungen den Aufwand für Nacharbeiten gering zu halten und dabei auch das Risiko zu verringern, das sich durch übersehene notwendige Nacharbeiten, Fehler einschleichen, die dann erst viel später entdeckt werden.
Anmerken möchte ich noch, dass ich zu Zeiten von Excel 4/5/6, vermutlich aus immer noch bestehendem Unwissen, schlechte Erfahrungen mit benannten Zellbereichen (Namen definieren) gemacht habe, verwende ich diese Methode nicht.
Vielen Dank & Grüße,
Wilfried

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

Betreff
Datum
Anwender
Anzeige
AW: In Mappen mit Makros Spalten einfügen/lösch
16.05.2013 10:26:21
Klaus
Hallo Wilfried,
Wie hätte ich es machen müssen, um bei späteren Änderungen den Aufwand für Nacharbeiten gering zu halten und dabei auch das Risiko zu verringern, das sich durch übersehene notwendige Nacharbeiten, Fehler einschleichen, die dann erst viel später entdeckt werden.
Das ist grundsätzlich ein Problem. Am einfachsten ist es sicherlich, einfach keine Zeilen/Spalten einzufügen oder zu löschen!
Was du machen kannst ist, deine Angaben variabel zu gestalten. Sagen wir mal in Spalte D (=3) steht "Ergebnisse". Diese Spalte willst du kopieren. Dein Code sieht warscheinlich so aus:
Range("D3").Entirecolumn.Copy
jetzt fügst du eine Spalte vor D ein, dadrin steht meinetwegen "Spitzname". Führst du jetzt dein Makro aus, wird die Spitznamen-Spalte statt der Ergebniss-Spalte kopiert! Auf die Spalte "Ergebniss" greifst du im Code noch duzendmal zu, so dass die Änderung zeitraubend und Fehleranfällig ist.
Alternative: die Spaltennummer einmal oben angeben und sich dann darauf beziehen! Sinnigerweise mit sprechenden Namen:
Const SpalteErgebniss as long = 4
Sub ErgebnisseKopieren()
[...Code...]
cells(1,SpalteErgebnisse).Entirecolumn.Copy
[...Code...]
End Sub
Sub ErgebnisseLoeschen()
[...Code...]
Range(cells(5,SpalteErgebnisse),cells(100,SpalteErgebnisse)).clearcontents
[...Code...]
End Sub

Wenn sich jetzt die Ergebnissspalte ändert, musst du nur noch einmal (ganz oben!) die Spaltenindices verändern. Sie ziehen sich dann durch den gesamten Code durch.
Du kannst sogar noch einen Schritt weiter gehen und den korrekten SpaltenIndex per VBA ermitteln. Sagen wir mal, deine Überschrift lautet "Ergebnisse" und steht in Zelle D5. Dann so:
Public SpalteErgebniss As Long
Sub FindeSpalten()
SpalteErgebnisse = WorksheetFunction.Match("Ergebnisse", Sheets("TabelleX").Rows(5), False)
End Sub
Sub ErgebnisseKopieren()
[...Code...]
Cells(1, SpalteErgebnisse).EntireColumn.Copy
[...Code...]
End Sub
Sub ErgebnisseLoeschen()
[...Code...]
Range(Cells(5, SpalteErgebnisse), Cells(100, SpalteErgebnisse)).ClearContents
[...Code...]
End Sub

das "findeSpalte" muss natürlich einmalig laufen, bevor die anderen Makros lauffähig werden. Aber wenn sich dann die ZEILE 5 ändert, hast du ein Problem. Natürlich kannst du die Zeile CONST definieren und dann händisch aktuell halten. Oder automatisch. Bis .... du merkst, das geht vom hundersten ins tausendste :-)
Eine andere, warscheinlich einfacherere Alternative ist es, mit benannten Zellbereichen (Namen definieren) zu arbeiten.
Anmerken möchte ich noch, dass ich zu Zeiten von Excel 4/5/6, vermutlich aus immer noch bestehendem Unwissen, schlechte Erfahrungen mit benannten Zellbereichen (Namen definieren) gemacht habe, verwende ich diese Methode nicht.
Tja. Kannst du dies Paradigma ablegen oder nicht? Ich habe mit 12 Jahren schlechte Erfahrungen mit Bier gemacht (schmeckt eklig! Nur bitter!), aber dieses Paradigma inzwischen zum Glück (?) ablegen können. Du schreibst ja selbst was von bestehendem Unwissen ...
Grüße,
Klaus M.vdT.

Anzeige
AW: In Mappen mit Makros Spalten einfügen/lösch
16.05.2013 11:05:16
Wilfried
Hallo Klaus,
nach so wenigen Minuten so eine ausführliche Antwort zu erhalten, das ist schon einmal sehr beeindruckend. Die von dir genannten Vorschläge hören sich gut an und ich werde deshalb versuchen diese umzusetzen.
Wenn ich dann die Spaltennummern in ein Tabellenblatt wie bspw. "Parameter zur Makrosteuerung" eintrage, und diese Einträge dann in den Makros auslese und verwende, dann müssen die Makros überhaupt nicht mehr angepasst werden.
Bezüglich der "benannten Zellbereiche" wollte ich nur informieren, dass ich diese bisher nicht benutze. Ich wollte damit nicht zum Ausdruck bringen, dass es sich dabei um eine in Stein gemeißelte Haltung handelt. Bei meinen "normalen" Exceltabellen habe ich diese Funktion halt nie vermisst, aber bei der aktuellen Applikation regte sich schon den Verdacht, dass diese helfen könnten. Werde also versuchen, mir dieses Themengebiet zu erschließen.
Aber die SVERWEISe müssen wohl immer nachgearbeitet werden, da ja das Argument "Spaltenindex" nur absolute Zahlenwerte zulässt?
VG,
Wilfried

Anzeige
AW: In Mappen mit Makros Spalten einfügen/lösch
16.05.2013 11:16:23
Klaus
Aber die SVERWEISe müssen wohl immer nachgearbeitet werden, da ja das Argument "Spaltenindex" nur absolute Zahlenwerte zulässt?
Sagt wer?
Mal ein Beispiel für Spaltenindex:
A1: =Vergleich("Ergebnisse";5:5;FALSCH)
B1: Suchwert
C1: =SVerweis(B1;C:XAA;A1-2;FALSCH)
Funktioniert. Mit "Vergleich" (A1) findest du den Spaltenindex, in den Verglichen wird. davon -2, weil du ja in C anfängst zu Verweisen (das ist 2 Spalten weiter). C:XXA, damit der durchsuchte Bereich immer groß genug ist.
Das kannst du mit SPALTE(), ZEILE(), INDEX() .... noch bis zum erbrechen dynamisieren. Rudi zeigt unten einen Lösungsvorschlag dazu.
Grüße,
Klaus M.vdT.

Anzeige
flex. SVERWEIS
16.05.2013 10:32:23
Rudi
Hallo,
hier kannst du Spalten einfügen oder verschieben, wie du willst.
ABCDEFGHI
1VNNNGEBPLZ   NNVN
2petermüller     meierfritz
3klausmaier     schulzkarl
4fritzmeier       
5karlschulz       
6seppschmitt       

ZelleFormel
I2=INDEX(INDEX($1:$1000;;VERGLEICH(I$1;$1:$1;));VERGLEICH(H2;INDEX($1:$1000;;VERGLEICH(H$1;$1:$1;));))
I3=INDEX(INDEX($1:$1000;;VERGLEICH(I$1;$1:$1;));VERGLEICH(H3;INDEX($1:$1000;;VERGLEICH(H$1;$1:$1;));))

In Makros könntest du die Spalten durch die Überschriften identifizieren (Application.Match)
Gruß
Rudi

Anzeige
AW: flex. SVERWEIS
16.05.2013 11:51:39
Wilfried
Hallo,
ja vor wenigen Wochen hatte ich auch schon die INDEX-Funktion enteckt und auch erfolgreich anwenden können. Gegenüber dem SVERWEIS kann hierbei ja auch das Ergebnis Links stehen. Ich kam aber noch nicht auf den Gedanken, SVERWEIS generell durch INDEX zu ersetzen.
Deshalb vielen Dank dafür, dass ihr mir meinen Horizont ein wenig erweitern konntet.
VG,
Wilfried

AW: flex. SVERWEIS
16.05.2013 17:29:54
Wilfried
Hallo Klaus,
habe nun das Beispiel von Rudi in eine eigene Mappe übernommen. Es funktioniert einwandfrei! Allerdings werde ich wohl noch eine Weile brauchen, bis ich verstehe, wie ich diese Funktion umgangssprachlich formulieren und verstehen kann.
Dein Beispiel nachzustellen hat einen Moment länger gedauert, aber nach einigen Versuchen hat es dann super funktioniert. Und bei diesem verstehe ich nun auch sofort, wie es funktioniert.
Habe mir nun nochmals die online-Hilfe zum SVERWEIS reingezogen. und ich finde nach wie vor keinen Hinweis darauf, das in "Spaltenindex" etwas anderes als ein Zahlenwert eingetragen werden kann. Darüber hatte ich mich zwar auch schon einige Male geärgert, aber es dann hingenommen und gar nicht erst versucht, hier mit einer Formel zu arbeiten.
Meine Aussage Bekannten und Kollegen gegenüber, die mich gerne als Excel Experten bezeichnen, ist immer, dass ich vermutlich nur 5% von Excel kenne. Nun sehe ich, dass dies noch maßlos übertrieben ist. Aber für die Blinden ist halt der der überhaupt noch etwas sieht, schon etwas besonderes.
Die Antworten von heute, werden mir zukünftig sehr hilfreich sein.
Deshalb nochmals vielen Dank & Grüße,
Wilfried

Anzeige
AW: flex. SVERWEIS
16.05.2013 23:10:55
Rudi
Hallo,
das ist ja auch ein bisschen kompliziert, da sowohl die Kriterienspalte als auch die Ergebnisspalte anhand der Überschriften identifiziert werden.
Deshalb kannst du Spalten einfügen, löschen oder verschieben.
Nebenbei: Wenn du in I1 die Überschrift auf z.B. GEB änderst, erhältst du das Geburtsdatum anstatt des Vornamens.
Gruß
Rudi

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige