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.
Top
#2
Hallo,

(12.07.2018, 08: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
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.
Top
#4
(12.07.2018, 09: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.
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
Top
#6
(12.07.2018, 09: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
Top


Gehe zu:


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