ich beschäftige mich erst seid kurzem mit Makros. Erfolgreich habe ich erst eines, daß mir die Tabellenblätter umbenennt eingerichtet.
Jetzt habe ich eine andere Aufgabenstellung und komme hier nicht weiter.
Ich habe verschiedene Forenbeiträge gefunden und dortige Lösungen ausprobiert, aber immer gescheitert. U. a. habe ich hier folgende Beitrag gestestet.
Über =WENN() Makro starten Du musst dazu einen Umweg anlegen. Die WENN-Funktion lautet z.B. =WENN(A1>10;MakroStart();"Nix") Die Wenn-Bedingung kann kein Makro starten, aber eine Funktion ausführen. Diese Funktion kann _ wiederum ein Makro aufrufen. Die Funktion ist so aufgebaut und ruft das abhängige Makro auf: Function MakroStart() Application.Volatile MakroStart_Makro End Function Sub MakroStart_Makro() MsgBox ("TuT") End Sub von RamsesCH (Rainer) Ich habe die WENN-Formel kopiert und in A2 eines leeren Excel-Blattes eingefügt. Dann VBA geöffnet und erst die Function, dann das Sub hineinkopiert, und es funktioniert!
Dann habe ich ein wenig experimentiert und bin bei folgender Formel noch erfolgreich gewesen:
Application.Volatile
Makro1_Bibo
End Function
Function Makro2()
Application.Volatile
Makro2_Bobi
End Function
Sub Makro1_Bibo()
MsgBox ("TuT")
End Sub
Sub Makro2_Bobi()
MsgBox ("TäT")
End Sub
Schreibe ich eine 1 in die Zelle kommt eine MsgBox mit "TuT" schreibe ich eine 2 kommt "TäT"
Nun will ich aber keine Message-Boxen erstellen, sondern je nach Wert in A1 entweder eine oder keine Spalten einfügen, und die Formel kopieren.Dazu habe ich in den Spalten A und B jeweils ein A und ein B untereinander geschrieben. In C1 steht folgende Formel:
Jetzt habe ich ein Macro aufgezeichnet:
Sub verschieben()
' verschieben Makro
Range("B2").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Range("C1:E1").Select
Selection.Copy
Range("C2:E3").Select
ActiveSheet.Paste
ActiveSheet.Paste
Application.CutCopyMode = False
End Sub
Ich kann das Makro ausführen, auch nachdem ich die ersten 5 Zeilen gelöscht habe, funktioniert das MaKro noch.Bis hierhin hat alles funktioniert, daher hier den jetzigen Stand der Excel-Datei:
https://www.herber.de/bbs/user/135235.xlsm
Jetzt wollte ich das Makro "verschieben" gegen das "Macro1_Bibo" austauschen.
1. Versuch: im VBA Function Makro1() "Makro1_Bibo" gegen"verschieben'" getauscht.Ohne Erfolg. Das TuT ist zwar weg, aber kein Zeilen einfügen und kein copy & paste.
Alles Rückgängig gemacht getestet, funktioniert.
2. Versuch: Jetzt habe ich den Code aus "Sub verschieben" in "sub Makro1 Bibo" geschoben, den BoxBefehl aber stene gelassen. - Die Box mit TuT kam, der Rest nicht.
3. Versuch zum Schluss habe ich dann noch die Box aus der VBA gelöscht, aber ich bekomme die Zellen nicht eingefügt bzw. kopiert.
Jetzt weiß ich nicht mehr weiter, kann mir hier vielleicht jemand helfen?
Hier nochmal der gesamt Code, wie ich ihn jetzt gespeichert habe.
Vielen Dank
Function Makro1()
Application.Volatile
Makro1_Bibo
End Function
Function Makro2()
Application.Volatile
Makro2_Bobi
End Function
Sub Makro1_Bibo()
Range("B2").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Range("C1:E1").Select
Selection.Copy
Range("C2:E3").Select
ActiveSheet.Paste
ActiveSheet.Paste
Application.CutCopyMode = False
End Sub
Sub Makro2_Bobi()
MsgBox ("TäT")
End Sub