Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1740to1744
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 in Wenn-Dann Formel

Makro in Wenn-Dann Formel
17.02.2020 14:04:34
Reinhard
Hallo,
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:
  • Function Makro1()
    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:
  • =WENN(B1=A1;1;WENN(B1=A2;2;"nix"))
  • . Die Funktion Macro 1 steht somit jetzt in E1 und bezieht sich auf C1. Wenn ich jetzt C1:E1 in C2:E2 kopiere, klappt alles wunderbar, wie es soll.
    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
    

    1
    Beitrag zum Forumthread
    Beitrag zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: Makro in Wenn-Dann Formel
    17.02.2020 23:57:22
    onur
    Eine Funktion darf und kann KEINE anderen Zellen verändern, ausser (durch das Ergebnis der Funktion) der Zelle, wo sie drin steht - das gleiche gilt auch für Subs, die diese Funktion aufruft. Sobald das versucht wird, gibt es eine Fehlermeldung.
    Anzeige

    309 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige