Live-Forum - Die aktuellen Beiträge
Datum
Titel
23.04.2024 14:59:21
23.04.2024 14:47:39
23.04.2024 14:23:45
Anzeige
Archiv - Navigation
1072to1076
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 aufrufen

Makro aufrufen
18.05.2009 18:13:00
rahel
Hallo - bin das erstemal in diesem Forum und würde mich freuen, wenn mir jemand helfen könnte. Mein Problem: Ich möchte mit einer Wenn-Funktion ein Makro aufrufen: =WENN($D$360;seite2;"") dies sollte m. M. nach folgende Wirkung haben: sobald in D36 etwas eingetragen wird, soll das Makro seite2 ausgeführt werden, sonst bleibt die Zelle leer. Ich habe schon alle möglichen online Hilfen zu Rate gezogen - die Formel scheint angeblich zu stimmen, bloss erhalte ich immer die Fehlermeldung #Name? Was mache ich falsch?

22
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Beispiel
18.05.2009 18:21:48
Matthias
Hallo
Code in die Tabelle

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("D36")) Is Nothing And Target.Count = 1 Then
If Target  "" Then seite2
End If
End Sub




in einem Modul

Sub seite2()
MsgBox "das ist das Makro ""seite2"""
End Sub


Gruß Matthias

AW: Makro aufrufen
18.05.2009 18:24:23
robert
hi,
probier mal so
gruß
robert
=WENN($D$360;seite2();"")
AW: Makro aufrufen
18.05.2009 19:04:08
rahel
Hab auch das probiert - aber geht leider nicht. Danke trotzdem!
schau auf den beitrag von matthias.OT
18.05.2009 19:13:37
matthias.OT
Makro nicht einfach per Funktion aufrufbar
18.05.2009 18:38:52
NoNet
Hallo Rahel,
Deine Syntax =WENN($D$360;seite2;"") erwartet, dass "seite2" ein Bereich/Bereichsname ist.
Wenn dieser nicht definiert ist, erscheint folgerichtig die Fehlermeldung #NAME?.
Die korrekte Sytax würde lauten : =WENN($D$360;seite2();"") - was wiederum voraussetzt, dass es die Funktion (und nicht "MAKRO") mit dem Namen SEITE2() auch gibt (ähnlich wie beim Aufruf der Funktion =WENN($D$360;SUMME(A36:C36);"") - hier muss es die Funktion SUMME() geben.
Da die Funktion SEITE2() keine Excel Standardfunktion ist, muss sie selbst definiert sein (=> UDF = User Defined Function), sprich : z.B. in VBA programmiert sein.
Kopiere folgenden beispielhaften VBA-Code in ein allgemeines Modul (z.B. "Modul1") der Mappe :

Public Function seite2()
seite2 = "UDF 'Seite2' wurde aufgerufen !"
End Function


Diese UDF gibt einfach einen kurzen Text zurück.
Was Du aber möchtest : Bei Eingabe in Zelle D36 soll etwas passieren !?!?!
Dazu benötigst du weder eine WENN()-funktion noch eine UDF, sondern ein sog. EreignisMakro :
Excel bietet für bestimmte "Events" (=Ereignis) ein sog. Ereignismakro an, das immer dann ausgeführt wird, wenn das Ereignis eintritt.
In Deinem Fall ist das "Ereignis" eine Eingabe in Zelle D36 des entsprechenden Blattes (also eine "Änderung"/Change im entsprechenden Blatt/Sheet).
Das Ereignis-Makro lautet daher Private Sub Worksheet_SelectionChange() - genauer :


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If [D36]  "" Then 'Zelle D36 wird überprüft
MsgBox "In Zelle D36 wurde etwas eingetragen !"
End If
End Sub


Dieser Code gehört nicht in ein allgemeines Modul, sondern in das Klassenmodul des Tabellenblattes (also : Name des Blattes im Blattregister unten mit rechter Maustaste anklicken - "Code anzeigen..." auswählen - Code in das nun geöffnete Codefenster kopieren).
Gruß, NoNet

Anzeige
Korrektur : Falsches Ereignismakro
18.05.2009 18:41:34
NoNet
Sorry,
jetzt schreibe ich mir fast die Finger wund und den entscheidenden Teil mache ich falsch ;-)
Das Ereignis-Makro heisst natürlich Private Sub Worksheet_Change(ByVal Target As Range) :

Private Sub Worksheet_Change(ByVal Target As Range)
If [D36]  "" Then 'Zelle D36 wird überprüft
MsgBox "In Zelle D36 wurde etwas eingetragen !"
End If
End Sub


Gruß, NoNet

AW: Korrektur : Falsches Ereignismakro
18.05.2009 19:01:41
rahel
Hallo liebe(r) NoNet - herzlichen Dank für die rasche Hilfeleistung. Ich habe den Code telle-quelle in ein Klassenmodul eingeführt - allerdings erhalte ich immer noch dieselbe Fehlermeldung. ;(( Ich übersehe da wohl irgend etwas Elemtares. Lg - rahel
Anzeige
Nicht in ein "Klassenmodul"
18.05.2009 20:01:51
NoNet
Hallo Rahel,
mein Code gehört nicht in "ein Klassenmodul", sondern in das Klassenmodul des Tabellenblattes (siehe oben: Rechtsklick etc.).
Welche Fehlermeldung erscheint denn ? Und wo : In der Zelle ? in VBA ? oder wo ?
Gruß, NoNet
Makro mit Eintrag aufrufen
18.05.2009 18:43:06
Erich
Hi Rahel,
mein Vorschlag:

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Cells(36, 4)) Is Nothing Then
If Cells(36, 4)  "" Then seite2
' oder
' If Not IsEmpty(Cells(36, 4)) Then seite2
End If
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
@Robert:
Wo sollte denn die Formel stehen? Wenn sie in D36 steht und in D36 etwas eingegeben wird - ist sie WEG!
Außerdem wärs ein Zirkelbezug...
Ich habe auch noch nicht gesehen, dass eine Subroutine aus einer Tabelle heraus
durch Hinschreiben des Namens in einer Formel gestartet werden könnte.
Anders natürlich die Auswertung einer UDF, also einer benutzerdefinierten Funktion.

Anzeige
@Erich...du hasr recht,
18.05.2009 18:51:02
robert
hi,
da war ich etwas voreilig und unüberlegt ;-(
sorry und gruß
robert
AW: @Erich...du hasr recht,
18.05.2009 19:13:08
rahel
Besten Dank für den Vorschlag. Die Formel soll in stehen. Ich bin völlig überrascht, dass so schnell so viel Hilfe angeboten wird. Herzlichen Dank! Im Moment funktioniert es leider aber noch nicht. Lg - rahel
AW: @Erich...du hasr recht,
18.05.2009 19:13:14
rahel
Besten Dank für den Vorschlag. Die Formel soll in stehen. Ich bin völlig überrascht, dass so schnell so viel Hilfe angeboten wird. Herzlichen Dank! Im Moment funktioniert es leider aber noch nicht. Lg - rahel
Anzeige
sind Makros auch erlaubt ?
18.05.2009 19:25:11
Matthias
Hallo
https://www.herber.de/bbs/user/61903.xls
Du musst natürlich Makro zulassen !
Optionen:
Diesen Inhalt aktivieren

Hast Du das eingestellt?
Gruß Matthias
X-Akte
18.05.2009 20:34:11
Erich
Hi Matthias,
das scheint mir ein Fall für die X-Akte oder was auch immer zu sein...
Einsetzen würde ich das nicht.
Excel ruft das Makro wohl als UDF auf und hält 0 (die Zahl Null!) für das Ergebnis
(außer wenn im Makro ein Fehler auftritt, dann gibt's #WERT!).
Wenn man die Formel ändert in
=WENN($D$36<>0;1000*seite2()+222;"")
sieht man das deutlich.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
Beitrag falsch angehängt ?
18.05.2009 20:48:32
Matthias
Hallo Erich
Zitat:
Einsetzen würde ich das nicht.
Das bezieht sich doch aber nicht auf mein Beispiel, hier im Beitrag, oder ;o)
Nein, im Ernst.
Ich würde es so (aus der Formel heraus) auch nicht benutzen.
Mir ist eben nur an diesem Beispiel, das für die X-Akte aufgefallen.
Gruß Matthias
sorry, war falsch angehängt!
18.05.2009 20:53:55
Erich
Hi Matthias,
das Einsetzen würde ich das nicht bezog sich natürlich
auf deinen Beitrag wieso, das geht doch ....
und hätte da drangehängt sein sollen.
Sorry! - Grüße von Erich aus Kamp-Lintfort
Über WENN Makro starten
18.05.2009 20:50:03
Erich
Hi Matthias,
hier habe ich eine etwas sauberere Möglichkeit gefunden:
https://www.herber.de/forum/archiv/156to160/t157981.htm#157987
Hattest du schon mal gesehen, was Robert hier ausgegraben hat - den direkten Aufruf eines Makros in WENN?
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Über WENN Makro starten
18.05.2009 21:05:26
Matthias
Hallo Erich
Wenn ich eh Makros benötige, werde ich doch diese nicht durch eine Formel starten, sondern direkt.
siehe mein Beitrag:
https://www.herber.de/forum/archiv/1072to1076/t1075956.htm#1075958
der auch zeitmäßig die erste Antwort hier im Beitrag war. (aber anscheinend nicht gelesen wurde)
Ich habe nur Roberts Beispiel getestet.
Nicht vergessen:
Rahel ist doch der Fragesteller. Ich selbst weiß doch wie ich das angehen würde.
Gruß Matthias
Das sieht nur wie ein Makro-Aufruf aus,...
19.05.2009 01:54:37
Luc:-?
...Erich,
ist aber strenggenommen keiner, sondern nur eine udF mit ausgelagertem UP! Wenn das Makro Dinge tun will, die einer Fkt, also auch einer udF, verboten sind, wird es nicht erfolgreich sein. Man kann zwar aus einer udF heraus ein beliebiges Makro starten und auch erfolgreich ausführen, aber nur über den "Umweg" Ereignisproz, damit die Subroutine formal von der udF entkoppelt wird. Ich habe das bereits mehrfach geschrieben und auch AnwendBspp genannt! Alles Andere ist Mist, es sei denn, man bastelt an der API rum, was ich aber nicht empfehlen würde.
Gruß Luc :-?
Anzeige
AW: Beispielmappe
18.05.2009 20:27:35
Erich
Hi Rahel,
hier mal eine Beispielmappe, an der du sehen kannst, wo welcher Code steht:
https://www.herber.de/bbs/user/61905.xls
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: Beispielmappe
19.05.2009 11:40:56
rahel
Herzlichen Dank allen - die Hilfe ist wirklich super!! Dank der Beispielmappe hats nun auch geklappt. Schöne Frühlingstage!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige