Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
1116to1120
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

DTPicker zur Laufzeit erzeugen

DTPicker zur Laufzeit erzeugen
{Boris}
Hi Leute,
ich erzeuge zur Laufzeit 2 DTPicker und platziere sie innerhalb 2 vorgegebener Frames.
Beim Aufruf des Userforms wird der erste Picker aber vom Frame überlagert. Das habe bis dato nur dadurch umgehen können, dass ich den Frame aus- und wieder einblende. Das muss doch auch anders gehen - wenn ja: Wie?
Zusatzfrage: Warum benötige ich bei der Erzeugung der Picker zur Laufzeit eigentlich keinen Verweis auf die Windows Common Controls (das ist der einzige Grund, warum ich sie zur Laufzeit erzeuge)?
Private Sub UserForm_Initialize()
Dim objDTPicker As Object
On Error GoTo Err_Handler
Set objDTPicker = Me.Controls.Add("MSComCtl2.DTPicker.2")
With objDTPicker
.Height = 16
.Name = "DTPicker1"
.Left = 30
.Top = 24
.Width = 120
End With
Set objDTPicker = Me.Controls.Add("MSComCtl2.DTPicker.2")
With objDTPicker
.Height = 16
.Name = "DTPicker2"
.Left = 30
.Top = 66
.Width = 120
End With
'###Das ist meine Krücke, um den ersten Picker sichtbar zu machen
With Me.Frame1
.Visible = False
.Visible = True
End With
Err_Handler:
End Sub
Grüße Boris

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Keine Lösung nur ein Tipp.
11.11.2009 10:48:08
Tino
Hallo,
warum so kompliziert?
Erstelle diese normal und die Eigenschaft Visible auf False und blende diese bei Bedarf ein.
Zu der Zusatzfrage:
Die Verweise sind schon vorhanden, sonst könntest Du diese in der Werkzeugsammlung nicht finden.
Gruß Tino
AW: Keine Lösung nur ein Tipp.
11.11.2009 11:00:12
{Boris}
Hi Tino,
warum so kompliziert?
Erstelle diese normal und die Eigenschaft Visible auf False und blende diese bei Bedarf ein.

Die Frames sollen IMMER sichtbar sein - darin eingebettet halt nur die Picker. Und der erste Frame "überlagert" anscheinend den 1. Picker. Daher die Aus-/Einblendaktion, von der ich glaube, dass sie suboptimal ist.
Zu der Zusatzfrage:
Die Verweise sind schon vorhanden, sonst könntest Du diese in der Werkzeugsammlung nicht finden.

Ja - ich habe sie in der Werkzeugsammlung, da ich den Verweis manuell auf die MSCOMCT2.OCX gesetzt habe. Aber alle Kollegen, die mit der Datei arbeiten sollen, haben das nicht. Und ich habe keine Lust, dass mehr als 100 mal manuell bei jedem zu erledigen. Daher erzeuge ich die Picker lieber zur Laufzeit und stell mir halt die Frage, warum ich bei dieser Variante keinen Verweis benötige. Ich will ja gerne dazulernen :-)
Danke und Grüße
Boris
Anzeige
mich würde es schon sehr wundern
11.11.2009 11:30:45
Tino
Hallo,
wenn dieses nicht eingebunden ist, dass Du diese zur Laufzeit erstellen kannst.
Also was ich sagen will, wenn Du dieses unter weitere Steuerelemente nicht findest,
wird es zur Laufzeit mit der Erstellung so auch nicht funktionieren.
Userbild
Ist es vorhanden, funktioniert es auf der Userform auch ohne diese zur Laufzeit zu erstellen.
Gruß Tino
AW: mich würde es schon sehr wundern
11.11.2009 12:28:39
Nepumuk
Hallo Tino,
das sind keine Verweise, sondern "nur" die registrieren Controls.
Gruß
Nepumuk
@Nepumuk
11.11.2009 12:46:57
Tino
Hallo,
wenn ich auf einem System wo diese MSCOMCT2.0 bei der Installation von Office nicht registriert wird, finde ich es nicht unter Weitere Steuerelemente,
dann kennt VBA MSComCtl2.DTPicker.2 nicht und ich kann es weder von Hand erstellen noch zur Laufzeit.
Also müsste ich mir die entsprechenden Dateien in einen Ordner Packen und über Extras Verweise
diese MSCOMCT2.0 laden (einbinden) dieser Verweis nennt sich
'Microsoft Windows Common Controls...', danach finde ich diesen auch unter Weitere Steuerelemente und kann diese von Hand erstellen.
(ob dies gegen Urheberrechte verstößt, weis ich jetzt auch nicht)
Dann brauch ich diese aber nicht zur Laufzeit erstellen, weil es auch so funktioniert,
ich muss eben nur die Datei samt der MSCOMCT... mitgeben.
Stimmt doch, oder?
Gruß Tino
Anzeige
AW: @Nepumuk
11.11.2009 13:17:28
Nepumuk
Hallo Tino,
ich kann jetzt nicht sagen, ob das für die MSComCtl2 auch zutrifft. Manche DLL/OCX muss nicht registriert werden. Da reicht es wenn sie im selben Ordner liegt wie die Anwendung und ein Verweis zur Laufzeit erstellt wird.
Gruß
Nepumuk
AW: @Nepumuk
12.11.2009 07:58:07
Tino
Hallo,
ja wenn dieser DTPicker auf der Form gezeichnet ist, findet man unter Verweise dieses
Microsoft Windows Common Controls, danach kennt VBA dieses Teil.
Wenn ich es aber zur Laufzeit zeichnen will,
aber auf diesem Rechner ist dieses Teil nicht registriert, weil die MSCOMCT2.0 nur in den Ordner kopiert wurde funktioniert dies nicht, es funktioniert nur wenn es schon auf der Form vorhanden ist,
bei mir auf der Testumgebung ist so.
Daher wird es so wie es Boris vor hat, nicht funktionieren.
Gruß Tino
Anzeige
AW: DTPicker zur Laufzeit erzeugen
11.11.2009 11:06:55
Nepumuk
Hallo Boris,
wenn du die DTPicker auf dem Frame haben willst, dann musst du sie auch in diesen einfügen.
Private Sub UserForm_Activate()
    Dim objDTPicker As Object
    On Error GoTo Err_Handler
    Set objDTPicker = Frame1.Controls.Add("MSComCtl2.DTPicker.2")
    With objDTPicker
        .Height = 16
        .Name = "DTPicker1"
        .Left = 30
        .Top = 24
        .Width = 120
    End With
    Set objDTPicker = Frame1.Controls.Add("MSComCtl2.DTPicker.2")
    With objDTPicker
        .Height = 16
        .Name = "DTPicker2"
        .Left = 30
        .Top = 66
        .Width = 120
    End With
    Err_Handler:
End Sub

Die Positionierung erfolgt natürlich relativ zur linken oberen Ecke des Frames.
LG
Max
Anzeige
So einfach kann das sein ;-)
11.11.2009 11:24:24
{Boris}
Hi Max,
besten Dank!
Kannst Du mir denn vielleicht auch noch die Zusatzfrage beantworten?
Grüße Boris
AW: So einfach kann das sein ;-)
11.11.2009 11:31:35
Nepumuk
Hallo Boris,
das Zauberwort heißt Late Binding. Der Verweis wird schon erzeugt, aber nicht fest eingetragen.
Gruß
Max

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige