2.2k Aufrufe
Gefragt in Tabellenkalkulation von kurtl Mitglied (239 Punkte)
Hallo liebe Experten,
wieder mal ein Problem.
Ich möchte über eine WENN Funktion ein bestimmtes Makro auslösen.
Folgendes hab ich gefunden:

=WENN(A1>10;MakroStart();"Nix")
Function MakroStart()
Application.Volatile
MakroStart_Makro
End Function

Sub MakroStart_Makro()
MsgBox ("TuT")
End Sub

Das funktioniert ja auch - Wenn ich in Zelle A1 einen Wert größer 10 eingebe erscheit ein Anzeigefenster mit dem Wortlaut "TuT"
Jetzt möchte ich ja aber, das ein für mich "sinnvolles" Makro ausgelöst wird z.B. in ein anderes Tabellenblatt zu springen.
Ich habe also ein einfaches Makro aufgezeichnet, welches in`s Tabellenblatt 2 springt und es "springen genannt" und versucht das ganze in das vorhandene Makro einzubauen - Leider mit Null Erfolg!
Kann mir jemand weiterhelfen?

Function MakroStart()
Application.Volatile
springen
End Function

Sub springen()
Sheets("Tabelle2").Select
End Sub

Danke im voraus
Kurt

7 Antworten

0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Kurt,

warum diesen Umweg?

Setze in A1 einfach einen Hyperlink und gib als Ziel das gewünschte Tabellenblatt an.

Gruß
Rainer
0 Punkte
Beantwortet von kurtl Mitglied (239 Punkte)
Hallo Rainer,
danke für Deine Antwort, die hilft mir aber nicht weiter.
Das mit Zelle A1 und in Tabellenblatt 2 springen war nur ein Beispiel.
Es soll eigentlich ein viel umfangreicheres Makro angesteuert werden, deshalb suche ich grunsätzlich nach der Möglichkeit Makros über WENN Funktionen auslösen zu können. Ich wollte die Sache nur nicht zu kompliziert darstellen.
Es bleibt also dabei, warum funktioniert das von mir umgebaute Makro nicht- ich hoffe auf weiter Meinungen
Gruß Kurt
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Kurt,

das würde ich dann über das Change-Ereignis realisieren.
D. h. wenn in A1 ein Wert >10 eingetragen wird, startet das Makro

Folgenden Code in den Codebereich der Starttabelle einfügen

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$A$1" Then Exit Sub
If Target.Value > 10 Then
Call springen
End If
End Sub


Das Makro "springen" gehört in ein Allegemeines Modul.

Gruß
Rainer
0 Punkte
Beantwortet von kurtl Mitglied (239 Punkte)
Hallo Rainer,
wir sind jetzt schon einen guten Schritt weiter gekommen!
Wenn ich in Zelle A1 jetzt einen Wert größer 10 eintrage funktioniert das Makro - ich wollte schon jubeln - aber, wenn ich den Wert >10 in Zelle A1
über eine WENN Funktion hineinbringe( Formel in A1) =WENN(A2>1;15;)
passiert leider nichts außer eben dass wenn ich in A2 z.B.2 eingebe in A1 15 erscheint - das Makro läuft aber nicht - leider

Gruß Kurt
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Kurt,

dann müssen wir folgenden Trick anwenden.

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$A$2" Then Exit Sub
If Range("A2").Value > 1 Then
Range("A1").Value = 15
Else
Range("A1").Value = ""
End If
If Range("A1").Value > 10 Then
Call springen
End If
End Sub


Gruß
Rainer
0 Punkte
Beantwortet von kurtl Mitglied (239 Punkte)
Hallo Rainer,
jetzt funktioniert es!!!
Ich danke Dir wie verrückt!

Bis bald mal wieder -:)

Gruß Kurt
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi kurt ^^

eine function gibt generell einen wert zurueck

Application.Volatile liesse wenn es funktionieren wuerde(geht natuerlich nicht) bei jeder neuberechnung das makro starten

eine berechnung zur uebergabe erfolgt auch nicht

daher kann deine function auch nicht funktionieren ^^

gruss nighty
...