kürzlich war man mir von hieraus schon sehr behilflich, als es darum ging, Daten aus aus einem 3 Jahresvergleich (Formular) mit neuen Daten aus den Folgejahren fortzuschreiben, ohne dabei das Tabellenblatt selbst erweitern zu müssen. Bevor nun also mein Macro loslegt (bei mir Daten aus dem Jahr 1 durch eliminiert und die Daten aus Jahr2 und Jahr3 in die vorderen Spalten verschoben werden [also Jahr3 wird zu Jahr2 und Jahr2 wird zu Jahr1]), sieht die nachstehende Sequenz eine Sicherheit vor (Zwischenfrage in Dialogbox), ob diese Verschiebung tatsächlich vorgenommen werden soll, da ja die Daten aus der ersten Spalte unwiederbringlich verschwinden:
Dim strQuest As String
strQuest = MsgBox("Are you sure to add a new column ? " & _
"YES will irretrievably delete your data in column C !!", vbYesNo + vbQuestion, "Confirmation of adding new column")
'Wenn die Abfrage mit "Nein" bestätigt wird,
'wird die Prozedur mit dem nächsten Befehl abgebrochen.
If strQuest = vbNo Then Exit Sub
'Bereich löschen und Zellen nach links verschieben
Nach weiterer Überlegung, wie man die Anwendung des Macros, angesichts des Datenverlustes noch sicherer machen kann, würde ich jetzt gerne eine zusätzliche Bedingung mit einbauen, und zwar die, daß das Macro immer nur dann ausführbar ist, wenn zuvor alle 3 Spalten des Formulars auch mit Daten belegt sind. Anders gesagt, eine "neue" leere Spalte 3 im Formular soll erst dann geschaffen werden, wenn auch Daten im 3. Jahr (in Spalte 3) vorliegen und das Formular somit "voll" ist.
Nach Ausführung des Macros unter dieser Bedingung müsste somit der hierbei vordefinierte Bereich der 3. Spalte erst wieder mit neuen Daten (aus dem Folgejahr) "gefüllt" sein, bevor ein neues "Freiwerden" der 3. Spalte per Nachvorneschub der Vorpalteninhalte erfolgen kann. Denn man hat schnell (egal ob vorsätzlich oder fahrlässig) auf so einen Command Button geklickt.
Zusammenfassung: Der Makrobefehl den ich suche, lautet trivialerweise
Macro erst dann ausführbar, wenn der definierte Spaltenbereich (z.B. G5:G185) der Spalte 3 auch lückenlos mit Daten belegt ist.
Wer hätte eine Idee für mich ?