Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA - vbModeless
#1
Hallo Zusammen,

in meiner Arbeitsmappe habe ich eine UserForm. Während die UserForm geöffnet ist, würde ich gerne Änderungen in der Mappe oder anderen Mappen vornehmen bzw. Textstellen rauskopieren und diese in die UF einfügen.

Ich habe es bereits mit:
 
1) Call UserForm1.Show(vbModeless)
2) UserForm1.Show vbModeless
3) Bei den UserForm Einstellungen habe ich "ShowModal" auf False gestellt

Allerdings wird bei allen drei Varianten die UF zwar ganz kurz angezeigt, innerhalb von einer Sekunde aber wieder geschlossen. Das Makro läuft also einfach weiter ohne eine Pause einzulegen wenn die UF angezeigt wird.

Was muss ich denn bei meinem Code ändern damit dies nicht mehr passiert bzw. die UF ganz normal angezeigt wird und erst geschlossen wird, wenn ich einen Button in der UF klicke?

Code:
Dim Show_Assignment_Click()
   Call UserForm1.Show(vbModeless)                  ' First Try
   ' UserForm1.Show vbModeless                      ' Second Try
   ' Change UF Settings ShowModal to False

   If UserForm1.ActiveControl.Name = "Cancel" Then
       Unload UserForm1
       Exit Sub
   Else
       ActiveSheet.Shapes.Range(Array("WWP")).Visible = True
       ActiveSheet.Shapes.Range(Array("WP")).Visible = False
   End If
End Sub

Hoffe jemand kann mir damit helfen.
Antworten Top
#2
Hallo,

wie sollen die Änderungen in den Mappen erfolgen? Soll der Anwender direkt in die Mappen schreiben oder soll er z.B. in eine Textbox schreiben und dieser Text soll automatisch in eine bestimmte Zelle übernommen werden? Für den zweiten Fall brauchst du vbModeless nicht, sondern musst nur eine Sub programmieren, die auf eine Veränderung des Textfeldes reagiert.
Viele Grüße,
Matthias

-------------------------------------------------------------------------------------------

Man muß nicht alles wissen, man muß nur wissen, wie man die Lösung findet.
Antworten Top
#3
Im allgemeinen geht es darum, dass die UF Aufträge mit offenen Punkten anzeigt. Zur Zeit befinden sich die offenen Punkte in einer anderen Arbeitsmappe. Nun soll man eben wenn die UF geöffnet ist, die offenen Punkte aus der anderen Arbeitsmappe markieren, kopieren und in die UF einfügen können. Dies funktioniert aber ohne vbModeless nicht. Mit vbModeless wird aber die UF geöffnet aber gleich wieder geschlossen.
Antworten Top
#4
Warum willst du das manuell machen lassen? Ich würde diese direkt per VBA beim Starten der Userform (oder so) einlesen lassen und dann z.B. in einer Combobox oder so anzeigen - je nachdem was damit weiter passieren soll.
Viele Grüße,
Matthias

-------------------------------------------------------------------------------------------

Man muß nicht alles wissen, man muß nur wissen, wie man die Lösung findet.
Antworten Top
#5
Auch Hallo,

wahrscheinlich ist diese Abfrage

Code:
If UserForm1.ActiveControl.Name = "Cancel" Then
        Unload UserForm1
        Exit Sub

erfüllt und dann wird die Userform wieder entladen, wobei ich nicht unbedingt einen Control den Namen Cancel geben würde.
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#6
(05.11.2018, 08:50)Matthias84 schrieb: Warum willst du das manuell machen lassen? Ich würde diese direkt per VBA beim Starten der Userform (oder so) einlesen lassen und dann z.B. in einer Combobox oder so anzeigen - je nachdem was damit weiter passieren soll.

Wenn es nur so einfach wäre, die offenen Punkte ändern sich von Auftrag zu Auftrag, d.h. auch dass die Excel-Mappe mit den offenen Punkten immer einen anderen Namen hat. Dieses kurze Copy & Paste-Verfahren können meine Arbeitskollegen ruhig noch manuell machen.

Wäre natürlich auch eine Möglichkeit dies so umzuschreiben, dass es automatisch passiert.
Antworten Top
#7
(05.11.2018, 08:52)Steffl schrieb: Auch Hallo,

wahrscheinlich ist diese Abfrage

Code:
  If UserForm1.ActiveControl.Name = "Cancel" Then
       Unload UserForm1
       Exit Sub

erfüllt und dann wird die Userform wieder entladen, wobei ich nicht unbedingt einen Control den Namen Cancel geben würde.

Nicht wirklich, gehe ich das Makro mit F8 durch, wird mir angezeigt, dass ActiveControl.Name = "TextBox1", d.h. es wird also das Else ausgeführt. Ich möchte aber, dass das Makro sobald es die UF aufruft stoppt und erst weiter läuft wenn ich einer der beiden CommandButtons in der UF klicke.
Antworten Top
#8
Hallo,

und was steht dann im Initialize- bzw. Activate-Code von der Userform1.
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#9
Die Abfrage ist sowieso suspekt.. Warum wird das abgefragt..? Dazu wird doch normalerweise ein Code auf einen Button gelegt....?! Kommentier doch einfach mal die Abfrage aus und schau was Passiert! "Active Control" meine ich, ist schon erfüllt, wenn der Focus auf dem Element liegt...
Eine Menge reden, aber nichts sagen können viele...
Antworten Top
#10
Hi

Erstmal in ein allgemeines Modul
Code:
Sub UFo_aufrufen()
Userform1.Show vbModeless
End Sub
sonst nix.
Alles weitere legst du dir in den Code der Buttons oder Userform.Activate (oder was du sonst noch da drin hast)
Weitere Hilfe, wenn Beispieldatei vorliegt.
Gruss Igel
Ich kann nicht alles wissen,
aber vieles lernen ! 19
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste