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 - Wechsel in Haltemodus beim Button erstellen
#1
Hallo Zusammen,

ich habe wieder einmal ein nervendes Problem.

Ich öffne über einen CommandButton eine UserForm, diese füllt mir die Zellen B5:B10 aus und nach dem schließen der UserForm möchte ich, dass ein neuer CommandButton an einer bestimmten Stelle einfügt wird.
Allerdings kommt an der Code-Stelle an der der Button eingefügt werden soll immer die Fehler Meldung "Wechsel in den Haltemodus ist zu diesem Zeitpunkt nicht möglich".

Hier mein Code:
Code:
Private Sub CommandButton1_Click()
    Dim btn As Object
    Dim Code As String
    
    [UserForm1].Show    ' UserForm beinhaltet 6 Textboxes die Range B5:B10 befüllen
    
    Set btn = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False _
    , DisplayAsIcon:=False, Left:=50, Top:=265, Width:=50, Height:=25)
    ActiveSheet.OLEObjects(1).Object.Caption = "Add Assignment"
    btn.Name = "Add_Assignment"
       
    Code = "Private Sub Add_Assignment_Click()" & vbCrLf
    Code = Code & "    Call Add_Assignment_Sheet" & vbCrLf    ' Öffnet eine neue Eingabemaske um einen Auftrag anlegen zu können
    Code = Code & "End Sub"
    
    With ActiveWorkbook.VBProject.VBComponents(Worksheets(ActiveSheet.Name).CodeName).CodeModule
        .insertlines .CountOfLines + 1, Code
    End With
End Sub

Wenn ich im Visual Basic den Code mit F8 durchgehen, kommt bei "Set btn = ... " immer die Fehlermeldung.

Ich hoffe jemand kann mir hier helfen.

Danke und Grüße.
Antworten Top
#2
Hallo,

(12.07.2018, 07:34)Mr.Invisible schrieb: Ich öffne über einen CommandButton eine UserForm und möchte damit dann einen neuen CommandButton einfügen.

Du willst den CommandButton in der geöffneten Userform einfügen? Ich glaube nicht, dass das geht.
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#3
Hallo,

die Fehlermeldung liefert dir doch direct die Lösung. Diese Steps kannst du nicht im Einzelstepmodus durchführen. btw warum willst du überhaupt einen neuen Button einfügen? IMHO ist es wesentlich einfacher, den Button fest hinzuzufügen und falls der User ihn nicht sehen soll, ihn auszublenden und erst wenn er benötigt wird einzublenden.
Viele Grüße,
Matthias

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

Man muß nicht alles wissen, man muß nur wissen, wie man die Lösung findet.
Antworten Top
#4
(12.07.2018, 08:06)Steffl schrieb: Hallo,


Du willst den CommandButton in der geöffneten Userform einfügen? Ich glaube nicht, dass das geht.

Nein, der CommandButton wird dann an einer bestimmten Stelle im Arbeitsblatt eingefügt.
Antworten Top
#5
Hallo,

trenne mal das Erstellen des Buttons und Einfügen vom Code aus deinem Click-Ereignis.

Code:
Private Sub CommandButton1_Click()
    
   [UserForm1].Show    ' UserForm beinhaltet 6 Textboxes die Range B5:B10 befüllen
    
    Application.OnTime Now + TimeValue("00:00:02"), "prcAufrufButton"
    
End Sub

Sub prcAufrufButton()
    
    Dim btn As Object
    Dim Code As String
    
    
    Set btn = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False _
    , DisplayAsIcon:=False, Left:=50, Top:=265, Width:=50, Height:=25)
    ActiveSheet.OLEObjects(1).Object.Caption = "Add Assignment"
    btn.Name = "Add_Assignment"
      
    Code = "Private Sub Add_Assignment_Click()" & vbCrLf
    Code = Code & "    Call Add_Assignment_Sheet" & vbCrLf    ' Öffnet eine neue Eingabemaske um einen Auftrag anlegen zu können
    Code = Code & "End Sub"
    
    With ActiveWorkbook.VBProject.VBComponents(Worksheets(ActiveSheet.Name).CodeName).CodeModule
        .insertlines .CountOfLines + 1, Code
    End With
End Sub

Ob der Aufruf der Userform nicht auch Probleme macht, kann ich dir nicht sagen.
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#6
(12.07.2018, 08:25)Steffl schrieb: Hallo,

trenne mal das Erstellen des Buttons und Einfügen vom Code aus deinem Click-Ereignis.
Hat funktioniert .. vielen vielen Dank  Blush
Antworten Top


Gehe zu:


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