Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
900to904
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
900to904
900to904
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Makro ausführen wenn

Makro ausführen wenn
31.08.2007 22:59:24
Darek
Hallo
Meine Frage ist nicht ganz neu in diesem Forum. Ich habe schon was gefunden aber ich kamm trotzdem nicht weiter.
Meine Frage:
Ich möchte im aktuellem Blatt Makro1 ausführen wenn Zelle A1=1 und
ich möchte im aktuellem Blatt Makro2 ausführen wenn Zelle A1=2
Ich danke Euch für Eure Antworten.
Grüsse Darek

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro ausführen wenn
01.09.2007 07:05:28
Matthias
Hallo Darek
'Code in Tabelle1
(wenn es nur für Tabelle1 gelten soll)
Startet das Makro (AuswahlMakro) automatisch, wenn Du in A1 etwas einträgst.


Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1")) Is Nothing Then
AuswahlMakro
End If
End Sub


Willst Du, das es in jeder Tabelle ausgewertet wird, dann darf das Makro nicht in die Tabelle1, sondern
'Code in DiesArbeitmappe


Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Not Intersect(Target, Range("A1")) Is Nothing Then
AuswahlMakro
End If
End Sub


Wenn Du das so nicht brauchst, sondern das Makro manuell starten willst bspw. durch Klick auf
ein Button, so lassen diesen Code der Tabelle1 und / oder in DieseArbeitsmappe einfach weg.
'Code in ein Modul

Wenn Du also das Makro (AuswahlMakro) ausführst, wird der Inhalt der Zelle "A1" ausgewertet.

  • Steht eine "1" in der Zelle wird Makro1 ausgeführt

  • Steht eine "2" in der Zelle wird Makro2 ausgeführt

  • Steht weder die "1" noch die "2" in der Zelle, passiert nichts.

  • 
    Sub AuswahlMakro()
    If ActiveSheet.Cells(1, 1) = 1 Then makro1
    If ActiveSheet.Cells(1, 1) = 2 Then makro2
    End Sub
    Sub makro1()
    MsgBox "Ich bin Makro 1"
    End Sub
    Sub makro2()
    MsgBox "Ich bin Makro 2"
    End Sub
    


    Userbild

    Anzeige
    AW: Makro ausführen wenn
    01.09.2007 10:58:00
    Rudi
    Hallo,
    das machen wir ein bisschen anders:
    
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If Not Intersect(Target, Range("A1")) Is Nothing Then
    AuswahlMakro Target
    End If
    End Sub
    Sub AuswahlMakro(ByVal Target As Range)
    Select Case Target
    Case 1: makro1
    Case 2: makro2
    End Select
    End Sub
    Sub makro1()
    MsgBox "Ich bin Makro 1"
    End Sub
    Sub makro2()
    MsgBox "Ich bin Makro 2"
    End Sub
    


    Gruß
    Rudi
    Eine Kuh macht Muh, viele Kühe machen Mühe

    AW: Makro ausführen wenn
    01.09.2007 11:33:00
    Darek
    Hallo
    Danke für Deine Antwort
    Das ist noch nicht ganz das was ich möchte. Ich versuche nochmal die Frage zu stellen.
    Das ist schon mal gut
    'Code in DiesArbeitmappe
    
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If Not Intersect(Target, Range("A1")) Is Nothing Then
    AuswahlMakro
    End If
    End Sub
    


    Ich müsste noch irged wie dies anpassen
    Sub AuswahlMakro()
    If ActiveSheet.Cells(1, 1) = 1 Then makro1
    If ActiveSheet.Cells(1, 1) = 2 Then makro2
    End Sub


    Ich will, dass wenn ich in Zelle A1 Zahl 1 eingebe, das Makro 1 ausgeführt wird
    und wenn ich in Zelle A1 Zahl 2 eingebe, das Makro 2 ausgeführt wird.
    Löche ich den Inhalt der Zelle A1, dann soll Makro 3 ausgefürt werden.
    Das ganze möchte ich in allen Tabellen machen.
    Ich danke Euch viel mal für Eure Hilfe
    Viele Grüsse
    Darek

    Anzeige
    AW: Makro ausführen wenn
    01.09.2007 11:41:00
    Matthias
    Hallo Darek
    Dann ergänze doch das Makro um diese Zeile
    
    Sub AuswahlMakro()
    If ActiveSheet.Cells(1, 1) = 1 Then makro1
    If ActiveSheet.Cells(1, 1) = 2 Then makro2
    If ActiveSheet.Cells(1, 1) = "" Then makro3
    End Sub
    


    Userbild

    AW: Makro ausführen wenn
    01.09.2007 12:11:00
    Darek
    Vielen Dank
    Jetzt habe ich es verstanden, "ahaaaa!!" Effekt ist da.
    Für die Jenige die es mal interesiert zeige ich meine definitive Lösung die so aussieht:
    In "DieseArbeitsmappe" habe ich das alles eingeschrieben:
    
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If Not Intersect(Target, Range("A1")) Is Nothing Then
    AuswahlMakro
    End If
    End Sub
    


    Sub AuswahlMakro()
    If ActiveSheet.Cells(1, 1) = 1 Then makro1
    If ActiveSheet.Cells(1, 1) = 2 Then makro2
    If ActiveSheet.Cells(1, 1) = "" Then makro3
    End Sub


    Sub makro1()
    MsgBox "Ich bin Makro 1"
    End Sub


    Sub makro2()
    MsgBox "Ich bin Makro 2"
    End Sub


    Sub makro3()
    MsgBox "leer"
    End Sub


    Vielen Dank

    Anzeige
    Frage-geschlossen
    01.09.2007 12:53:00
    Closer
    oT

    AW: Frage-geschlossen
    02.09.2007 17:49:25
    Darek
    Hallo
    Ich Dachte schon ich komme schon selber weiter aber ich schaffe es nicht.
    Ich kann jetzt mit diesem Code die gewünschte Funktion für die Zelle A1 ausführen.
    Ich konnte es auch selber anpassen, so dass es auch in Zelle B1 funktioniert.
    Ich möchte jetzt, dass es jetzt auch in Zelle A1 und in Zelle B1 funktioniert.
    Da bekomme ich eben Fehlermeldungen wenn ich es selber schreibe.
    Somit bitte ich Euch noch mal um Hilfe.
    Vielen Dank
    Darek

    AW: Frage-geschlossen
    02.09.2007 18:39:00
    fcs
    Hallo Darek,
    um Wertänderungen verschiedener einzelner Zellen in den Tabellen abzufragen eignet sich am besten eine Select Case - Konstruktion.
    Diese solltets du wg. besserer Übersichtlichkeit auch in deinem Auswerte-Makro verwenden.
    Nachfolgend ein entsprechendes Beispiel.
    Gruß
    Franz
    
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Select Case Target.Address
    Case "$A$1"
    Call AuswahlMakroA(Target.Value)
    Case "$B$1"
    Call AuswahlMakroB(Target.Value)
    Case Else
    'do nothing
    End Select
    End Sub
    Sub AuswahlMakroA(Wert As Integer)
    Select Case Wert
    Case 0 'Kein Wert in Zelle
    makro3
    Case 1
    makro1
    Case 2
    makro2
    Case Else
    'do nothing
    MsgBox "Eingabewert löst keine Aktion aus!"
    End Select
    End Sub
    Sub AuswahlMakroB(Wert As Integer)
    Select Case Wert
    Case 0 'Kein Wert in Zelle
    makro3
    Case 1
    makro1
    Case 2
    makro2
    Case Else
    'do nothing
    MsgBox "Eingabewert löst keine Aktion aus!"
    End Select
    End Sub
    


    Anzeige
    AW: Frage-geschlossen
    02.09.2007 20:01:41
    Darek
    Hallo
    Vielen Dank
    Ich habe es ausprobiert und scheint so zu funktionieren wie ich es mir vorgestellt habe. Das macht mir wirklich Spass und ich habe freude daran.
    Ich werde den Code später noch versuchen zu verstehen (heute schon zu müde dafür).
    Eventuell noch ne Frage Stellen aber vorläufig noch mals
    Vielen Dank

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige