Herbers Excel-Forum - das Archiv
Makroausführung in Userform!
Informationen und Beispiele zu den hier genannten Dialog-Elementen:

|
Betrifft: Makroausführung in Userform!
von: Andre
Geschrieben am: 02.12.2003 08:29:32
Guten Morgen,
ich möchte durch Betätigung eines CommandButton in meiner UserForm ein Makro ablaufen lassen! Das Makro läuft selbstständig ohne Probleme, nur nicht in Verbindung mit dem CommandButton! Wahrscheinlich liegt´s daran, daß das Tabellenblatt nicht gewechselt werden kann, solange die UserForm aufgerufen ist!?
Hat jemand eine Idee wie ich´s trotzdem hinbekomme, daß VBA macht was ich möchte?
Gruß Andre
Hier die Codes:
Private Sub Buchen_Click()
Application.Run Buchen
End Sub
Sub Buchen()
Dim LetzteZeile As Integer, Tabellenname As String
Const Name_Kontrolle As String = "Kontrolle"
Select Case Sheets(Name_Kontrolle).Range("a5")
Case 1
In_1_Kopieren (Name_Kontrolle)
Case 2
In_2_Kopieren (Name_Kontrolle)
Case 3
In_1_Kopieren (Name_Kontrolle)
In_2_Kopieren (Name_Kontrolle)
Case Else
MsgBox "Ungültige Zahl in A5!"
End Select
End Sub
Private Sub In_1_Kopieren(Kontrolle As String)
Dim LetzteZeile As Integer
Const Name_1 As String = "1"
With Sheets(Name_1)
LetzteZeile = .Cells(Cells.Rows.Count, 3).End(xlUp).Row
Sheets(Kontrolle).Range("b1:k1").Copy .Cells(LetzteZeile + 1, 3)
End With
End Sub
Private Sub In_2_Kopieren(Kontrolle As String)
Dim LetzteZeile As Integer
Const Name_2 As String = "2"
With Sheets(Name_2)
LetzteZeile = .Cells(Cells.Rows.Count, 3).End(xlUp).Row
Sheets(Kontrolle).Range("b1:k1").Copy .Cells(LetzteZeile + 1, 3)
End With
End Sub
Betrifft: AW: Makroausführung in Userform!
von: Nike
Geschrieben am: 02.12.2003 09:37:36
Hi,
ein Punkt fehlt!
Tja, welcher nur ;-)
LetzteZeile = .Cells(.Cells.Rows.Count, 3).End(xlUp).Row
Cells.Rows.Count ohne Punkt am Anfang stellt keinen Bezug zur Tabelle her.
Gemeiner Schnitzer...
Bye
Nike
Betrifft: AW: Makroausführung in Userform!
von: Yal
Geschrieben am: 02.12.2003 09:43:43
Hallo Andre,
Du muss mit rechtem Maustaste auf dem CommandButton auf "Code anzeigen" gehen. Das hast Du wahrscheinlich schon. Es fügt sich eine "Private Sub CommandButton_Click" in Modul des UserForm. Wenn Du von dort aus eine externe Funktion oder Sub (externe in Sinne von "in einem anderen Modul"), muss diese als "Public" gekennzeichnet sein.
Den "Application.Run" kannst Du ruhig auslassen.
Ansonsten nehme ich an, dass die Funktionen In_1_Kopieren und In_2_Kopieren sich in gleichem Modul wie Buchen befinden. Daher ist "Private" dort ohne Problem.
Die Tabellenblatt kann beliebig geändert werden, wenn ein UserForm aktiv ist.
Gruß
Yal
Betrifft: Danke, aber...
von: Andre
Geschrieben am: 02.12.2003 10:04:10
leider konnten mir eure Vorschläge nicht weiterhelfen! Es bleibt einfach dabei, als Makro gestartet funktioniert der Code super, aus der UserForm passiert nichts!
Wahrscheinlicher ist da der Hinweis von Yal, aber wie genau hast du dir das vorgestellt?
Gruß Andre
Betrifft: AW: Der beliebteste Fehler...
von: Nike
Geschrieben am: 02.12.2003 10:22:12
Hi,
aber nicht das du
dem beliebtesten Fehler seit es Command Buttons gibt
aufgesessen bist ;-)
Bye
Nike
Betrifft: Sorry, aber daran lag´s auch nicht! o.T.
von: Andre
Geschrieben am: 02.12.2003 10:41:42
Betrifft: AW: Dann...
von: Nike
Geschrieben am: 02.12.2003 10:45:57
Hi,
dann poste mal die Datei,
damit man sich das mal anschaun kann...
Bye
Nike
Betrifft: Okay, einen Versuch noch:
von: Andre
Geschrieben am: 02.12.2003 11:16:43
Also ich hab jetzt erstmal das Makro in "Copy" umbenannt, damit der Titel "Buchen" nicht öfter auftaucht!
Jetzt bekomme ich bei der Zeile:
Application.Run Copy
immer die Fehlermeldung:
Fehler beim Kompilieren: Function oder Variable erwartet
Was ist jetzt los? Das kann nur an dem Aufruf liegen!!! Mit "call Copy" funktioniert´s auch nicht!
Gruß Andre
Betrifft: AW: Och nöö.
von: Nike
Geschrieben am: 02.12.2003 11:25:07
Hi,
du kannst do nicht ein von Excel reserviertes Wort nehmen
Cut, Copy oder Paste usw...
Poste doch das Teil einfach,
dann läßt sich eher was dazu sagen...
Bye
Nike
Betrifft: Ja, schon gut!
von: Andre
Geschrieben am: 02.12.2003 11:30:51
Hab´s schon gemerkt! Heißt jetzt buchen3! Problem ist aber auch gelöst!
Danke trotzdem.
Gruß Andre
Betrifft: Es funktioniert jetzt!!!!!!
von: Andre
Geschrieben am: 02.12.2003 11:29:20
Also, ich hab die 3 zusammenhängenden Codes von Modul 2 in Modul 1 geschrieben und schon hat´s geklappt mit Call copy!!!!!
Sehr misteriös!! Aber egal, offensichtlich kommt VBA nicht damit klar, wenn ein Modul übersprungen werden soll!
Dank an alle! Gruß Andre
Betrifft: AW: Public
von: Nike
Geschrieben am: 02.12.2003 11:39:23
Hi,
das Modulübergreifende funkt schon,
nur müssen die Prozeduren auch als Public definiert sein,
sonst sind sie nur Modulweit bekannt...
Bye
Nike
Betrifft: AW: Public
von: Yal
Geschrieben am: 02.12.2003 11:44:54
Andre,
lesen ist dabei von Vorteil:
"Ansonsten nehme ich an, dass die Funktionen In_1_Kopieren und In_2_Kopieren sich in gleichem Modul wie Buchen befinden. Daher ist "Private" dort ohne Problem." 09:43:43
Yal