Hallo Eric,
1. von Programmierung verstehe ich nicht wirklich was. Die Makros die ich nutze, sind teilweise auf Anfrage komplett hier für mich hier erstellt, zum größten Teil (siehe obiges) ist das "Patchwork", also Teile, die ich hier im Forum finde, kopiere und zu neuem zusammen füge.
2. Zum Sinn des obigen. Ich arbeite mit einem Buchhaltungsprogramm das Daten nach Excel exportieren kann, die Zahlen erkennt Excel zunächst nicht als solche, das wird von einem 1ten Makro bearbeitet. Dann kann mit obigen Makros weitergearbeitet werden.
Sub Leere_Spalte_loeschen() macht was der Name sagt.
Sub Spalte_1_Eintrag(): Oft gibt es eine Spalte im Export, wo der Inhalt der meisten Zellen aus 3 Leerstellen besteht, die werden hier als erstes gelöscht. Dann steht in einigen Spalten nur ein einziger (meist) überflüssiger Eintrag, diese Spalten sollen ggf. nach Rückfrage gelöscht werden. Damit der Nutzer überhaupt erkennt wo das Makro gerade ist:
Cells(lngLastRow, leere_Spalte).Select
Selection.Interior.ColorIndex = 7
Dann soll der Nutzer entscheiden können: Löschen, nicht löschen, Abbruch des Makros.
Die nächsten 3 Makros erwarten in
varAntwort = Application.InputBox("Spalte löschen", Type:=2)
die Eingabe eines (ggf 2) Buchstabens als Spaltenbezeichnung, dann werden die nächsten Schritte abgearbeitet und die Makros rufen sich erneut auf, das soll so sein, bis nichts eingegeben wird, und Enter gedrückt wird, dann folgt das nächste Makro. Das funktionierte bisher auch alles sehr gut. Nur ist das Makro "Sub Spalte_1_Eintrag()" neu erstellt und in den Ablauf eingebunden. Nun ist plötzlich nicht mehr Schluss, wenn im Makro "Sub Prozent()" keine gültige Eingabe erfolgt, sondern es geht zurück ins Makro "Sub Spalte_1_Eintrag()"
Das ist mir ein Rätsel. Ich habe hier jetzt erstmal "Call Spalte_löschen" gelöscht und den Start dieses Makros erfolgt (wenn gewünscht), über einen neunen Menübefehl.
mfg
Wolfgang