Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1260to1264
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zur Laufzeit erstellte Userform zeigen/starten

Zur Laufzeit erstellte Userform zeigen/starten
Reinhard
Hallo Wissende,
ich habe/fand nachstehenden Code, der in einem Standardmodul gestartet eine UF erstellt
und mit zwei Controls bestückt.
Wie aber zeige/starte ich nun diese UF?
Bei
Userform1.Show
im Code motzt der Debugger da er beim Kompilieren Userform1 nicht kennt.
Mit
Userforms(.name).show
(im Code auskommentiert) kommt der Fehler 13, Typen unverträglich.
Was tun, wie muß ich den Aufruf schreiben?
Danke ^ Gruß
Reinhard
Sub UserformErstellen()
' XL2000, Verweis auf Microsoft Visual basic for Applications Extensibility 5.3
Dim oFRM As VBComponent
With ThisWorkbook.VBProject
'Eventuell löschen wenn vorhanden
For Each oFRM In .VBComponents
If LCase(oFRM.Name) = "userform1" Then
.VBComponents.Remove oFRM
DoEvents
Exit For
End If
Next
With .VBComponents.Add(vbext_ct_MSForm)
.Name = "UserForm1"
DoEvents
'Button erstellen
With .Designer.Controls.Add("Forms.CommandButton.1")
.Top = 5: .Left = 5: .Width = 100: .Height = 20
.Caption = "Ich bin ein Button"
End With
'TextBox erstellen
With .Designer.Controls.Add("Forms.TextBox.1")
.Top = 30: .Left = 5: .Width = 100: .Height = 20
.Value = "Ich bin eine TextBox"
End With
'UserForms(.Name).Show
End With
End With
End Sub

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Zur Laufzeit erstellte Userform zeigen/starten
28.04.2012 22:44:28
Josef

Hallo Reinhard,
das geht zB. so.
Sub UserformErstellen()
  Dim oFRM As Object
  Dim newFRM As Object
  
  With ThisWorkbook.VBProject
    'Eventuell löschen wenn vorhanden
    For Each oFRM In .VBComponents
      If LCase(oFRM.Name) = "userform1" Then
        .VBComponents.Remove oFRM
        DoEvents
        Exit For
      End If
    Next
    Set oFRM = .VBComponents.Add(3)
    With oFRM
      .Name = "UserForm1"
      DoEvents
      'Button erstellen
      With .Designer.Controls.Add("Forms.CommandButton.1")
        .Top = 5: .Left = 5: .Width = 100: .Height = 20
        .Caption = "Ich bin ein Button"
      End With
      'TextBox erstellen
      With .Designer.Controls.Add("Forms.TextBox.1")
        .Top = 30: .Left = 5: .Width = 100: .Height = 20
        .Value = "Ich bin eine TextBox"
      End With
      Set newFRM = VBA.UserForms.Add(oFRM.Name)
    End With
  End With
  newFRM.Show
  
  Set oFRM = Nothing
  Set newFRM = Nothing
End Sub



« Gruß Sepp »

Anzeige
AW: Zur Laufzeit erstellte Userform zeigen/starten
28.04.2012 23:04:37
Reinhard
Hallo Sepp,
da ich dich schon lange mitlese habe ich das gar nicht erst getestet sondern gleich in meine Musterdatei übernommen und bedanke mich für deinen Code.
Geniess bei dem Wetter dein Weizen am WE
Gruß
Reinhard
So, mein Lieber, jetzt der Nachschlag!
04.05.2012 11:25:08
Luc:-?
Zuerst: Hoffe, Schmerz lässt langsam nach, Reinhard! ;-)
Item: Es geht ums Archiv, die hochgeladene Minidatei im Thread mit Max' BedingtFormat-Pixelei. Trage da im Modul doch mal folgenden Einzeiler ein:
Function EvalFText(FmlText As String): EvalFText = Evaluate(FmlText): End Function
Anschließend dann in einer Zelle:
=EvalFText("GetConForm(C"&ZEILE(1:1)&",1)")
Und, falls du nicht selbst drauf kommst, noch in einer anderen Zelle das, was du hier unter dem Mauszeiger siehst.
Natürlich ist das nur die halbe Miete, aber der entscheidende Schritt, auf den bisher niemand in dtsprachigen Foren gekommen zu sein scheint, auch die vielen Profi-Pgmierer wohl nicht (s. o.g. Pixelei, ähnl Ansätze hatte ich auch woanders schon gesehen) oder sie verraten's nicht. Ich verwende idR mehrere ineinandergreifende Fktt, um hier kontraproduktive xlService-Automatismen rückgängig zu machen und zum eigentl Ziel (automatisierte BedingtFormat-Auswertung) zu kommen. Habe aber jetzt auch mal eine völlig autonome udFkt geschrieben, die jedwede Fml (Zelle, Name, Gültigkeit, Format), lokal bzw im Original, für bzw bei A1- oder Z1S1-Bezug, ausliest und ggf die Adressen berichtigt. Macht summa summarum exakt 700 reine PgmZeilen (+ ca 40 Zeilen Kommentar). Dafür braucht eine Fml mit dieser udFkt dann aber auch keine 7s, sondern nicht mal 1/10 davon. ;-)
Unter Zuhilfenahme dieser udF u.a. (simplerer) Methoden stets die aktuelle Zellfarbe feststellen zu können, dürfte dann für einen einigermaßen VBA-bewanderten User kein Problem mehr sein.
Gruß Luc :-?
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige