OnAction ruft keine Prozedur

Hallo Experten,

ich habe ein Userform in Excel und eine Datenbank in Access erstellt.
Der Bediner soll über Userform einige Werte eintragen und diese dann mit einem Klick auf OK bestätigen.
----Makro OK_Click--------
…ruft DB usw

jetzt will ich das nach dem drücken von OK ein Excel Fenster erscheint, die die Ergebnisse der Abfrage anzeigt.
-> Auf diesem Fenster soll sich ein Button befinden

im Makro habe ich für die Erstellung eines Buttons in Excel ein Programm geschrieben, bis dahin funktioniert alles gut, aber
-&gt:stuck_out_tongue_winking_eye:ROBLEM: Jetzt will ich auf das Button klicken können und danach soll eine andere Prozedur beginnen

--------Erstellen von Button in Makro------

With Selection
dWidth = .Cells(.Cells.Count).Left - _
.Cells(1).Left + .Cells(.Cells.Count).Width
dHeight = .Cells(.Cells.Count).Top - _
.Cells(1).Top + .Cells(.Cells.Count).RowHeight
Set btn = xlWb.Worksheets(„tabelle1“).Buttons.Add(.Cells(1).Left, _
.Cells(1).Top, dWidth, dHeight)
End With

btn.Caption = „Aufruf“
btn.OnAction = „message“

--------Die neue Prozedur----------------

Sub message_Click()
MsgBox = „Hallo“
End Sub

nachdem ich auf das Button Aufruf auf der neu erstellten Excel Blatt klicke erscheint ein Fenster -> Das Makro message wird nicht gefunden .

MFG

WillsWissen

Hallo,

leider kann ich Dir in diesem Punkt nicht weiterhelfen, da meine Kenntnisse in Excel sehr beschraenkt sind, und ich legiglich nur ueber einige Grundkenntnisse in diesem Programm verfuege.

Chris

Hallo,

leider kann ich dir in diesem Fall nicht helfen. Auf dem Gebiet der Makros gehöre ich zu den „Laien“.

sorry

Tut mir leid, Du bist der bessere Experte. Gruß Ferdy

Servus,

zwei Dinge sind da wichtig:

1.) wenn Du die Prozedur „message“ aufrufen möchtest, muss natürlich auch die Prozedur so bezeichnet werden. Daher lass bei der Prozedur das „_Click“ weg!
2.) Die Prozedur muss in einem allgemeinen Modul plaziert werden.

LG Gerd

Hallo Gerd,

danke für deine Hilfe.

ich habe ein Modul erstellt, in der sich das Message sub befindet.

Sub message ()
MsgBox „Hallo“
End sub

das button.OnAction = „message“ ist im Formular

-> leider funktioniert es immer noch net,
weist du weiter??

Hallo,

dann spielst Du sicher mit mehreren Arbeitsmappen, Kann das sein?
Versuch mal die Mappe mitzugeben:
btn.OnAction = „Mappe2!Message“

LG Gerd

Hi, sorry das ist eher was für einen VBA-Programmier-Experten.

gruß
Earny

ANTWORT:
Wenn du ein neues Excel-Sheet anlegst mit einem Button,
dann erhält dieser Button entweder automatisch einen Namen von Excel (z.B. CommandButton1) oder einen Namen, den du beim Erstellen des Buttons mit deinem Programm generierst. Der Verweis auf das Makro, das durch den Button ausgeführt werden soll, muss die volle Pfadangabe zu der Excel-Datei besitzen, in der es sich tatsächlich befindet. Dein Makroverweis sucht das Makro in der neu erstellten Excel-Datei, in der es sich natürlich nicht befinden kann. Also entweder erstellst du beim Erzeugen des neuen Excel-Sheets auch gleich das entsprechende Modul und das Makro „message“ mit, dann steht es im neuen Sheet zur Verfügung (mit deinem jetzigen Aufruf), oder du baust den Pfad so auf, dass das Makro in der anderen Excel-Datei gefunden wird.

BEISPIEL:
Aktueller Pfad: ThisWorkbook.Path ( = Pfad der aktuellen Datei in der das Sheet erstellt wird)

Also:
pfad = ThisWorkbook.Path
(oder was anderes: pfad = ThisWorkbook.Path & „…\zu_anderem_Verzeichniszweig“
macro = pfad & „\message“
btn.OnAction = macro

Wenn ich dein Problem richtig verstanden habe, sollte das funktionieren…
Viel Erfolg
Gruß Acki

Sorry, ich wurde als Experte angeschrieben, kann aber nicht weiterhelfen zu diesem Thema. Viel Glück - Pete