|
CommandButton über makro ausführen nicht durch klick
|
| Autor |
Nachricht |
pcfilzlaus
Im Profil kannst Du frei den Rang ändern
Verfasst am: 26. Feb 2009, 11:34 Rufname:
|
|
| Version: Office 2003 |
|
Hi Leute brauch eure Hilfe,
vielleicht könnt ihr mir ja helfen.
Und zwar habe ich eine Userform gebastelt mit der ich daten aus Textboxen (in summe 3) in eine excel liste schreibe. nach eingabe aller abgefragten daten habe ich ein Button gemacht der die daten dann in die excel liste schreibt der code für den Button sieht so aus.
| Code: | Private Sub CommandButton1_Click()
Dim x As Integer
If TextBox1 = "" Then
MsgBox "Titel nicht eingetragen!"
Exit Sub
End If
If TextBox2.Value = "" Then
MsgBox "Laufzeit nicht eingetragen!"
Exit Sub
End If
If TextBox3.Value = "" Then
MsgBox "Bemerkung nicht eingetragen!"
Exit Sub
End If
x = Range("H65536").End(xlUp).Row + 1
Label6.Caption = Cells(x, 7).Value
Cells(x, 8).Value = TextBox1.Value
Cells(x, 10).Value = TextBox2.Value
Cells(x, 12).Value = TextBox3.Value
TextBox1.Value = ""
TextBox2.Value = ""
TextBox3.Value = ""
If MsgBox("Daten wurde erfolgreich angelegt" & Chr(13) & "" & Chr(13) & "Möchten Sie weitere Daten anlegen?", vbQuestion + vbYesNo, "Hinweiß") = vbYes Then
Unload UserForm1
UserForm1.Show
Else
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
AllowFormattingRows:=True
Unload UserForm1
End If
End Sub |
Es geht jetzt hauptsächlich um die stelle bei der MSGBOX wo man gefragt wird ob ein weiterer Datensatz angelegt werden soll.
Der aufbau der Userform ist so das man sie aufruft mittels "userform1.show"
dann hat man zwei buttons
1. "neuen datensatz anlegen"
2. "vorhandenen datensatz ändern"
Ich habe alles in eine Userform gemacht das heist alle sonstigen anzeigen sind standartmäßig "visible = false" und durch drücken eines der buttons werden die felder sichtbar
| Code: | Private Sub CommandButton3_Click()
ActiveSheet.Unprotect
UserForm1.Frame1.Visible = True
UserForm1.CommandButton1.Visible = True
UserForm1.CommandButton2.Visible = True
UserForm1.CommandButton3.Visible = False
UserForm1.CommandButton4.Visible = False
UserForm1.CommandButton5.Visible = False
UserForm1.CommandButton6.Visible = False
UserForm1.CommandButton7.Visible = False
UserForm1.TextBox1.Visible = True
UserForm1.TextBox2.Visible = True
UserForm1.TextBox3.Visible = True
UserForm1.TextBox4.Visible = False
UserForm1.Label1.Visible = True
UserForm1.Label2.Visible = True
UserForm1.Label3.Visible = True
UserForm1.Label4.Visible = True
UserForm1.Label5.Visible = True
UserForm1.Label6.Visible = True
Dim x As Integer
x = Range("H65536").End(xlUp).Row + 1
Label6.Caption = Cells(x, 7).Value
End Sub |
Diesen Button möchte ich jetzt per Makro automatisch ausführen wenn ich bei der MSGBOX auf ja drücke ale ich schließe die userform1 mit unload userform1 öffne sie wieder mit userform1.show und dann hängts ich habe schon einige sahcen versucht wie:
commandbutton3_click oder
userform1.commandbutton3.enable = true oder
das ganze makro des buttons noch mal hinter userform1.show
doch es passierte nichts das makro blieb an der stelle stehn wo ich die zwei auswahlmöglichkeit habe was ich machen möchte anlegen oder ändern.
Vielleicht könnt ihr mir noch eine möglichkeit mitteilen wie ich das proplem lösen kann.
Danke schon mal im Voraus
MFG
PCFILZLAUS
Zuletzt bearbeitet von pcfilzlaus am 26. Feb 2009, 13:02, insgesamt einmal bearbeitet |
|
pcfilzlaus
Im Profil kannst Du frei den Rang ändern
Verfasst am: 26. Feb 2009, 12:54 Rufname:
|
| |
| Version: Office 2003 |
|
| kann oder will mir keiner Helfen????
|
|
mumpel
Fortgeschrittener
Verfasst am: 26. Feb 2009, 13:18 Rufname: René
Wohnort: Lindau (B)
|
|
| Version: Office 2003 |
|
Hallo!
In die UserformOption Explicit
Private Sub UserForm_Activate()
If cButton1 = True Then
CommandButton3_Click
cButton1 = False
End If
End Sub
Private Sub CommandButton3_Click()
Range("A1").Value = "Button3"
Unload Me
End Sub
In ein StandardmodulOption Explicit
Public cButton1 As Boolean
Sub Button3Auslösen()
cButton1 = True
If MsgBox("Möchten Sie fortfahren", vbYesNo, "Frage") = vbYes Then
With UserForm1
.Show
End With
End If
End Sub Code eingefügt mit VBA in HTML 2.0
Gruß, René
|
|
pcfilzlaus
Im Profil kannst Du frei den Rang ändern
Verfasst am: 26. Feb 2009, 13:26 Rufname:
|
|
| Version: Office 2003 |
|
Danke für die antwort!
Kannst du mir bitte noch mal erklären wie das genau funktionieren soll???
Bzw wo genau ich das einzufügen habe???
|
|
mumpel
Fortgeschrittener
Verfasst am: 26. Feb 2009, 13:31 Rufname: René
Wohnort: Lindau (B)
|
| |
| Version: Office 2003 |
|
Der grüne Text zeigt, wo es hingehört. Der erste Code in den Codebereich der UF, der zweite Code in ein Standardmodul.
Erklärung:
Zuerst wird eine Schalter (Variable vom Typ Boolean) "eingeschaltet". Dann wird eine MsgBox geöffnet. Bei Klick auf Ja wird die UF aufgerufen. Beim Aktivieren der UF wird der Zustand des Schalters abgefragt. Ist er ein, wird der "CommandButton3" automatisch ausgelöst und dessen Code abgearbeitet.
|
|
pcfilzlaus
Im Profil kannst Du frei den Rang ändern
Verfasst am: 26. Feb 2009, 13:40 Rufname:
|
|
| Version: Office 2003 |
|
Also ich habe die Sachen habe ich wie folgt eingefügt
Modul 2 (Modul eins steht bereits etwas drin)
| Code: | Option Explicit
Public cButton1 As Boolean
Sub Button3Auslösen()
cButton1 = True
If MsgBox("Möchten Sie fortfahren", vbYesNo, "Frage") = vbYes Then
With UserForm1
.Show
End With
End If
End Sub |
in die Userform
| Code: | Option Explicit
Private Sub UserForm_Activate()
If cButton1 = True Then
CommandButton3_Click
cButton1 = False
End If
End Sub
Private Sub CommandButton3_Click()
Range("A1").Value = "Button3"
Unload Me
End Sub
|
bei einem test meldete er dann mehrdeutige bezeichnung (commandbutton3_click()
also habe ich den code zu meinem bestehenden code hinzugefügt.
jetzt sobald ich auf commandbutton3 klicke schließt er sofort die Userform ohne das ich irgendwelche daten eingeben konnte!
|
|
mumpel
Fortgeschrittener
Verfasst am: 26. Feb 2009, 13:44 Rufname: René
Wohnort: Lindau (B)
|
|
| Version: Office 2003 |
|
| Du musst die Zeile Unload Me im Makro CommandButton3_Click() entfernen. Da hatte ich Dich wohl falsch verstanden, daher steht die Zeile dort.
|
|
pcfilzlaus
Im Profil kannst Du frei den Rang ändern
Verfasst am: 26. Feb 2009, 13:49 Rufname:
|
|
| Version: Office 2003 |
|
also entweder bin ich zu doof das einzubinden, oder dein code funktioniert nicht!
nicht mal deine MSGBOX kommt zum vorschein und er bleibt wieder an der gleichen stelle stehn
|
|
mumpel
Fortgeschrittener
Verfasst am: 26. Feb 2009, 14:01 Rufname: René
Wohnort: Lindau (B)
|
|
| Version: Office 2003 |
|
| Du musst das Makro Button3Auslösen starten. Dann kommt auch die MsgBox. Habe Dich so verstanden, dass Du die UF über ein Makro starten möchtest und die Schaltfläche "CommanButton3" in der UF dabei automatisch ausgelöst werden soll. Funktioniert bei mir problemlos. Aber vielleicht hast Du Dich auch falsch erklärt. Was genau möchtest Du machen?
|
|
pcfilzlaus
Im Profil kannst Du frei den Rang ändern
Verfasst am: 26. Feb 2009, 14:21 Rufname:
|
|
| Version: Office 2003 |
|
Hi also ich versuch noch mal genauer zu erklären
ich habe mir eine Liste erstellt mit festen Nr. in reihe G von 1 bis ..., in reihe H die beizeichnug usw.
durch klicken auf datensatz anlegen öffnet sich die Userform.
auf der userform befinden sich zwei buttons
commandbutton3 (caption= Datensatz anlegen) &
commandbutton5 (caption= Datensatz ändern)
bei klick auf commandbutton 3 wird dann folgendes makro ausgeführt:
| Code: | Private Sub CommandButton3_Click()
ActiveSheet.Unprotect
UserForm1.Frame1.Visible = True
UserForm1.CommandButton1.Visible = True
UserForm1.CommandButton2.Visible = True
UserForm1.CommandButton3.Visible = False
UserForm1.CommandButton4.Visible = False
UserForm1.CommandButton5.Visible = False
UserForm1.CommandButton6.Visible = False
UserForm1.CommandButton7.Visible = False
UserForm1.CommandButton8.Visible = False
UserForm1.TextBox1.Visible = True
UserForm1.TextBox2.Visible = True
UserForm1.TextBox3.Visible = True
UserForm1.TextBox4.Visible = False
UserForm1.Label1.Visible = True
UserForm1.Label2.Visible = True
UserForm1.Label3.Visible = True
UserForm1.Label4.Visible = True
UserForm1.Label5.Visible = True
UserForm1.Label6.Visible = True
Dim x As Integer
x = Range("H65536").End(xlUp).Row + 1
Label6.Caption = Cells(x, 7).Value
End Sub |
es verschwinden Button es erscheinen buttons textfelder usw.
ich habe dann drei textfelder in denen ich daten eingeben kann!
wenn ich alle daten eigegeben habe und klicke dann auf Daten übernehmen (commandbutton1) mit dem code
| Code: | Private Sub CommandButton1_Click()
Dim x As Integer
If TextBox1 = "" Then
MsgBox "Film Titel nicht eingetragen!"
Exit Sub
End If
If TextBox2.Value = "" Then
MsgBox "Laufzeit nicht eingetragen!"
Exit Sub
End If
If TextBox3.Value = "" Then
MsgBox "Bemerkung nicht eingetragen!"
Exit Sub
End If
x = Range("H65536").End(xlUp).Row + 1
Label6.Caption = Cells(x, 7).Value
Cells(x, 8).Value = TextBox1.Value
Cells(x, 10).Value = TextBox2.Value
Cells(x, 12).Value = TextBox3.Value
TextBox1.Value = ""
TextBox2.Value = ""
TextBox3.Value = ""
If MsgBox("Datensatz wurde erfolgreich angelegt" & Chr(13) & "" & Chr(13) & "Möchten Sie einen weiteren Datensatz anlegen?", vbQuestion + vbYesNo, "Hinweiß") = vbYes Then
Unload UserForm1
UserForm1.Show
Else
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
AllowFormattingRows:=True
Unload UserForm1
End If
End Sub |
sucht excel mit die nächst frei zelle und schreibt mir die daten dann dort hinein!
so nach dem excel dies erledigt hat öffnet sich eine MSGBOX mit dem code
| Code: | If MsgBox("Datensatz wurde erfolgreich angelegt" & Chr(13) & "" & Chr(13) & "Möchten Sie einen weiteren Datensatz anlegen?", vbQuestion + vbYesNo, "Hinweiß") = vbYes Then
Unload UserForm1
UserForm1.Show
Else
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
AllowFormattingRows:=True
Unload UserForm1
End If |
Dort wollte ich mir die Möglichkeit geben noch einen datensatz einzugeben ohne die userform von hand schließen und wieder öffnen zu müßen mit den befehlen:
und
nun bin ich wieder am anfang der userform wo ich wieder die auswahlmöglichkeiten der zwei buttons habe:
commandbutton3 (caption= Datensatz anlegen) &
commandbutton5 (caption= Datensatz ändern)
damit ich nicht immer wieder dann den button commandbutton3 drücken muss dachte ich mir ich binde diese funktion mit in den "Daten übernehmen Button mit ein!
Ich hoffe ich habe es jetzt etwas besser erklärt! ausführlicher
Danke noch mal für die ganze mühe
|
|
pcfilzlaus
Im Profil kannst Du frei den Rang ändern
Verfasst am: 26. Feb 2009, 14:41 Rufname:
|
|
| Version: Office 2003 |
|
hallo,
noch jemand da der mir Helfen kann?
|
|
pcfilzlaus
Im Profil kannst Du frei den Rang ändern
Verfasst am: 26. Feb 2009, 15:50 Rufname:
|
|
| Version: Office 2003 |
|
| kann mir denn keiner Helfen ich brauch sie unbedingt ich komm selber nicht mehr weiter!
|
|
mumpel
Fortgeschrittener
Verfasst am: 26. Feb 2009, 16:28 Rufname: René
Wohnort: Lindau (B)
|
|
| Version: Office 2003 |
|
Vielleicht würde es helfen, wenn Du die UF nicht beendest, sondern nur die Elemente leerst und dann CB3 klicken lässt.
If MsgBox("Datensatz wurde erfolgreich angelegt" & vbCrLf & "" & vbCrLf & _
"Möchten Sie einen weiteren Datensatz anlegen?", vbQuestion + vbYesNo, "Hinweiß") = vbYes Then
' Hier der Code für "Userformelemente zurücksetzen"
CommandButton3_Click
End IfCode eingefügt mit VBA in HTML 2.0
|
|
pcfilzlaus
Im Profil kannst Du frei den Rang ändern
Verfasst am: 26. Feb 2009, 16:29 Rufname:
|
|
| Version: Office 2003 |
|
| o.k. werds mal versuchen
|
|
pcfilzlaus
Im Profil kannst Du frei den Rang ändern
Verfasst am: 26. Feb 2009, 16:37 Rufname:
|
| |
| Version: Office 2003 |
|
hey danke für den tipp hätt ich auch selber drauf kommen können. So funktioniert es prima! Aber eine frage habe ich noch warum funktioniert es nicht wenn ich
die userform schließe dann wieder öffne und dann eingebe CommandButton3_Click
weil da passiert gar nichts??
|
|
| Verwandte Themen |
| Forum / Themen |
Antworten |
Autor |
Aufrufe |
Letzter Beitrag |
 |
Excel VBA (Makros): Makro bei Programmstart nach automatischer Aktualisierung |
2 |
tfrings84 |
226 |
09. Jan 2010, 19:50 tfrings84  |
 |
Excel VBA (Makros): Per Makro Zeile in Textdatei ersetzen |
2 |
Thomander |
450 |
17. Sep 2009, 11:30 Thomander  |
 |
Excel VBA (Makros): Excel Makro zum Speichern unter bestimmten Pfad |
1 |
Gast |
460 |
08. Sep 2009, 11:44 Rolf-H  |
 |
Excel VBA (Makros): Makro erstellen für ersetzen von zellbezügen |
3 |
Mandelatus |
106 |
06. Sep 2009, 20:00 werni barny  |
 |
Excel VBA (Makros): Markierten bereich mittels Makro kopieren und alten "sp |
4 |
Bernhard_Bernhard |
941 |
22. Dez 2008, 11:19 Bernhard_Bernhard  |
 |
Excel VBA (Makros): Makro für TXT-Export Tabstopp-getrennt |
2 |
Gast |
213 |
19. Dez 2008, 16:30 Gast  |
 |
Excel VBA (Makros): Makro, 2 excel Dateien zusammenführen |
8 |
Zeil_ffm |
2276 |
16. Okt 2008, 11:48 Zeil_ffm  |
 |
Excel VBA (Makros): Markierung im Listenfeld nach dem Klick wieder aufheben. |
1 |
k.edgar |
935 |
21. Jul 2008, 15:05 Strigas  |
 |
Excel VBA (Makros): E-Mail per Makro in Excel erstellen - Formatierung?? |
1 |
Chrissilein |
2375 |
11. Feb 2008, 15:44 mumpel  |
 |
Excel VBA (Makros): einer Zelle mit Text in Excel ein Makro zuweisen |
1 |
Gast |
337 |
23. Okt 2007, 11:56 MAX-XL  |
 |
Excel VBA (Makros): Formular öffnen durch Makro (Objektfehler?!) |
3 |
Moonflower |
1352 |
31. März 2007, 14:57 Moonflower  |
 |
Excel VBA (Makros): *.dtf per Makro auslesen |
2 |
Edge2 |
717 |
22. Feb 2007, 13:08 bst  |
| |