Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1876to1880
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
Userform Initialize
15.04.2022 19:10:42
Thomas
Guten Abend
Ich habe eine UserForm gebaut. In der UserForm Initialize habe ich ein Prozess mehrmals hintereinander angefügt um all die Comboboxen zu bedienen.
Nun das Skript läuft, aber es läuft extrem langsam. Kann es sein das man dieses Skript anders schreiben muss um es zu beschleunigen?
Das Skript sieht so aus: Für einen Hinweis wäre ich dankbar.

Private Sub UserForm_Initialize()
'Textsuche für Filterfunktion SpalteB  =====================================================================
Dim objDictionaryB As Object, varBereichB As Variant, i As Long
Set objDictionaryB = CreateObject("Scripting.Dictionary")
varBereichB = Range("B14", Range("B14").End(xlDown))          'Range in der, der Text gesucht wird
For i = LBound(varBereichB) To UBound(varBereichB)               'Eintrag wird nur übernommen wenn er im DictionaryObject noch nicht enthalten ist
objDictionaryB(varBereichB(i, 1)) = 0
Next
ComboBoxB.List = objDictionaryB.keys
'ComboBoxB.ListIndex = 0                                        'Anzeigen von Text in ComboBox
Set objDictionaryB = Nothing                                   'Set Objekt wieder aus dem Speicher löschen
'Textsuche für Filterfunktion SpalteC  =====================================================================
Dim objDictionaryC As Object, varBereichC As Variant
Set objDictionaryC = CreateObject("Scripting.Dictionary")
varBereichC = Range("C14", Range("C14").End(xlDown))          'Range in der, der Text gesucht wird
For i = LBound(varBereichC) To UBound(varBereichC)              'Eintrag wird nur übernommen wenn er im DictionaryObject noch nicht enthalten ist
objDictionaryC(varBereichC(i, 1)) = 0
Next
ComboBoxC.List = objDictionaryC.keys
'ComboBoxC.ListIndex = 0                                         'Anzeigen von Text in ComboBox
Set objDictionaryC = Nothing                                    'Set Objekt wieder aus dem Speicher löschen
'Textsuche für Filterfunktion SpalteD  =====================================================================
Dim objDictionaryD As Object, varBereichD As Variant
Set objDictionaryD = CreateObject("Scripting.Dictionary")
varBereichD = Range("D14", Range("D14").End(xlDown))          'Range in der, der Text gesucht wird
For i = LBound(varBereichD) To UBound(varBereichD)              'Eintrag wird nur übernommen wenn er im DictionaryObject noch nicht enthalten ist
objDictionaryD(varBereichD(i, 1)) = 0
Next
ComboBoxD.List = objDictionaryD.keys
'ComboBoxD.ListIndex = 0                                         'Anzeigen von Text in ComboBox
Set objDictionaryD = Nothing
'Textsuche für Filterfunktion SpalteE  =====================================================================
Dim objDictionaryE As Object, varBereichE As Variant
Set objDictionaryE = CreateObject("Scripting.Dictionary")
varBereichE = Range("E14", Range("E14").End(xlDown))          'Range in der, der Text gesucht wird
For i = LBound(varBereichE) To UBound(varBereichE)              'Eintrag wird nur übernommen wenn er im DictionaryObject noch nicht enthalten ist
objDictionaryE(varBereichE(i, 1)) = 0
Next
ComboBoxE.List = objDictionaryE.keys
'ComboBoxE.ListIndex = 0                                         'Anzeigen von Text in ComboBox
Set objDictionaryE = Nothing                                    'Set Objekt wieder aus dem Speicher löschen
'Textsuche für Filterfunktion SpalteF  =====================================================================
Dim objDictionaryF As Object, varBereichF As Variant
Set objDictionaryF = CreateObject("Scripting.Dictionary")
varBereichF = Range("F14", Range("F14").End(xlDown))          'Range in der, der Text gesucht wird
For i = LBound(varBereichF) To UBound(varBereichF)              'Eintrag wird nur übernommen wenn er im DictionaryObject noch nicht enthalten ist
objDictionaryF(varBereichF(i, 1)) = 0
Next
ComboBoxF.List = objDictionaryF.keys
'ComboBoxF.ListIndex = 0                                         'Anzeigen von Text in ComboBox
Set objDictionaryF = Nothing                                    'Set Objekt wieder aus dem Speicher löschen
'Textsuche für Filterfunktion SpalteG  =====================================================================
Dim objDictionaryG As Object, varBereichG As Variant
Set objDictionaryG = CreateObject("Scripting.Dictionary")
varBereichG = Range("G14", Range("G14").End(xlDown))          'Range in der, der Text gesucht wird
For i = LBound(varBereichG) To UBound(varBereichG)              'Eintrag wird nur übernommen wenn er im DictionaryObject noch nicht enthalten ist
objDictionaryG(varBereichG(i, 1)) = 0
Next
ComboBoxG.List = objDictionaryG.keys
'ComboBoxG.ListIndex = 0                                         'Anzeigen von Text in ComboBox
Set objDictionaryG = Nothing                                    'Set Objekt wieder aus dem Speicher löschen
'Textsuche für Filterfunktion SpalteH  =====================================================================
Dim objDictionaryH As Object, varBereichH As Variant
Set objDictionaryH = CreateObject("Scripting.Dictionary")
varBereichH = Range("H14", Range("H14").End(xlDown))          'Range in der, der Text gesucht wird
For i = LBound(varBereichH) To UBound(varBereichH)              'Eintrag wird nur übernommen wenn er im DictionaryObject noch nicht enthalten ist
objDictionaryH(varBereichH(i, 1)) = 0
Next
ComboBoxH.List = objDictionaryH.keys
'ComboBoxH.ListIndex = 0                                         'Anzeigen von Text in ComboBox
Set objDictionaryH = Nothing                                    'Set Objekt wieder aus dem Speicher löschen
'Textsuche für Filterfunktion SpalteI  =====================================================================
Dim objDictionaryI As Object, varBereichI As Variant
Set objDictionaryI = CreateObject("Scripting.Dictionary")
varBereichI = Range("I14", Range("I14").End(xlDown))          'Range in der, der Text gesucht wird
For i = LBound(varBereichI) To UBound(varBereichI)              'Eintrag wird nur übernommen wenn er im DictionaryObject noch nicht enthalten ist
objDictionaryI(varBereichI(i, 1)) = 0
Next
ComboBoxI.List = objDictionaryI.keys
'ComboBoxI.ListIndex = 0                                         'Anzeigen von Text in ComboBox
Set objDictionaryI = Nothing                                    'Set Objekt wieder aus dem Speicher löschen
'Textsuche für Filterfunktion SpalteJ  =====================================================================
Dim objDictionaryJ As Object, varBereichJ As Variant
Set objDictionaryJ = CreateObject("Scripting.Dictionary")
varBereichJ = Range("J14", Range("J14").End(xlDown))          'Range in der, der Text gesucht wird
For i = LBound(varBereichJ) To UBound(varBereichJ)              'Eintrag wird nur übernommen wenn er im DictionaryObject noch nicht enthalten ist
objDictionaryJ(varBereichJ(i, 1)) = 0
Next
ComboBoxJ.List = objDictionaryJ.keys
'ComboBoxJ.ListIndex = 0                                         'Anzeigen von Text in ComboBox
Set objDictionaryJ = Nothing
'Textsuche für Filterfunktion SpalteK =====================================================================
Dim objDictionaryK As Object, varBereichK As Variant
Set objDictionaryK = CreateObject("Scripting.Dictionary")
varBereichK = Range("K14", Range("K14").End(xlDown))          'Range in der, der Text gesucht wird
For i = LBound(varBereichK) To UBound(varBereichK)              'Eintrag wird nur übernommen wenn er im DictionaryObject noch nicht enthalten ist
objDictionaryK(varBereichK(i, 1)) = 0
Next
ComboBoxK.List = objDictionaryK.keys
'ComboBoxK.ListIndex = 0                                         'Anzeigen von Text in ComboBox
Set objDictionaryK = Nothing
'Textsuche für Filterfunktion SpalteL  =====================================================================
Dim objDictionaryL As Object, varBereichL As Variant
Set objDictionaryL = CreateObject("Scripting.Dictionary")
varBereichL = Range("L14", Range("L14").End(xlDown))          'Range in der, der Text gesucht wird
For i = LBound(varBereichL) To UBound(varBereichL)              'Eintrag wird nur übernommen wenn er im DictionaryObject noch nicht enthalten ist
objDictionaryL(varBereichL(i, 1)) = 0
Next
ComboBoxL.List = objDictionaryL.keys
'ComboBoxL.ListIndex = 0                                         'Anzeigen von Text in ComboBox
Set objDictionaryL = Nothing
End Sub

24
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Userform Initialize
15.04.2022 19:16:36
Oberschlumpf
Hi Thomas
sorry, aber allein nur das Durchlesen des ganzen Codes würde ja schon n paar Minuten dauern - dann noch die Zusatzzeit obendrauf, um auch alles zu verstehen.
Zeig doch bitte per Upload eine Bsp-Datei mit Userform + Code - dann könnten wir damit testen - und dir vielleicht auch helfen.
Ciao
Thorsten
AW: Userform Initialize
15.04.2022 20:34:56
Thomas
Ja das war mir Bewusst. Habe eine Datei hier hochgeladen. beim öffnen kommt eine Meldung deswegen weil gewisse Links noch ins leer laufen. dieses bitte einfach ignorieren, weil das werde ich später erst weiter bearbeiten. Danke...
https://www.herber.de/bbs/user/152475.xlsm
Anzeige
AW: Userform Initialize
16.04.2022 07:13:29
Oberschlumpf
Hi Thomas
die ganzen ComboBoxen werden auch mit deinem Code nicht gefüllt.
Das wird wohl daran liegen, weil einfach NULL Datenzeilen in der Tabelle enthalten sind - womit und wie sollen wir denn testen?
Du müsstest schon so 20 Bsp-Datenzeilen hinzufügen.
Ciao
Thorsten
AW: Userform Initialize
16.04.2022 08:59:27
Thomas
Guten Morgen Torsten,
also wenn ich mit meinem Skript die UserForm öffne dann habe ich einen Datensatz den ich sehe. Und das ist ein Punkt in jeder ComboBox. Weil ich in der Zeile 14 in jeder Zeile einen Punkt drin habe.
Wenn ich es mit dem Skript teste das mir Nepomuk gemacht hat, ist das nicht mehr so. Werde es aber jetzt erst noch einmal probieren.
Es grüsst
Thomas
Anzeige
AW: Userform Initialize
16.04.2022 09:07:19
Oberschlumpf
Hi Thomas,
sorry, bin verwirrt.
Ja, stimmt, bei null Datenzeilen in der Bsp-Datei sehe auch ich in den ComboBoxen als 1 Eintrag = PUNKT
Aber was genau soll denn in den Comboboxen eingetragen werden, bzw, wozu genau ist der PUNKT da?
...und soll der PUNKT auch immer der einzige Eintrag in den Comboboxen sein?
Ciao
Thorsten
nun hast du ja ne Lösung..owT
16.04.2022 09:09:24
Oberschlumpf
AW: nun hast du ja ne Lösung..owT
16.04.2022 09:22:31
Thomas
Hallo Torsten,
aber jetzt bin ich etwas verwirrt :-) weil es Funktioniert jetzt plötzlich. Und zwar wie eine Rakete! Die Punkte in den Zeilen soll ja der Datensatz zum testen sein. Klar könnte ich mehr Datensätze zum testen einfügen, Nur dachte, wenn ich nicht mal diese Punkte sehe in den ComboBoxen wie soll ich es denn mit noch mehr Daten in den Zeilen schaffen?
Du fragst was da soll? Diese Daten werden einem Filter übergeben damit es in der Tabelle nach diesen Daten die in der ComboBoxen sind, gefiltert wird. Ich denke man könnte es auch anders machen, aber diese Methode gefällt mir irgendwie.
Nun es funktioniert. Das einzige was mir aufgefallen ist, dass wenn ich in der ersten ComboBox den Punkt wähle und dann über den Filter lasse, dass danach wenn ich wieder in die UserForm gehe und dann die ComboBox klicke dass dann plötzlich ab Zeile 1 statt erst ab Zeile 14 eingelesen wird. Könnte das zwar so lösen dass bei jedem Userform Start der Filter zuerst zurückgesetzt wird und erst danach die ComboBoxen Aktiv werden.
Oder kann man das Skript etwa dazu zwingen den Datensatz erst ab Zeile 14 einlesen zu dürfen?
Es grüsst
Thomas
Anzeige
AW: nun hast du ja ne Lösung..owT
16.04.2022 09:35:24
Oberschlumpf
Hi Thomas
da du anscheinend über die funktionierende Lösung von Nepumuk schreibst (ich hab ja keine Lösungsidee vorgeschlagen), dann frag bitte auch Nepumuk wegen Feintuning, da ich ja (noch) gar nicht weiß, wie Nepumuk alles bisher gelöst hat. (aber die Idee von ihm sieht schon fein aus; hab mir nur die Datei aber nicht den Code angesehen)
Ciao
Thorsten
...antworte unterhalb von Nepumuks Lösung und aktivier die Option, dass der Beitrag noch offen ist - dann gehts in seinem "Zweig" weiter...
AW: nun hast du ja ne Lösung..owT
16.04.2022 11:03:22
Thomas
Torsten Danke für deine Info!
Also das Skript von Nepomuk funktioniert meinen Wünschen entsprechend sehr zufriedenstellend. Das wegen dem einlesen ab welcher Zeile das habe ich gelöst. Nun funktioniert alles tadellos! Staune immer wieder was so ein paar Zeichen in einem Skript alles anstellen können. Ist ja der halbe Wahnsinn.
Ich antworte noch schnell beim Eintrag von Nepomuk. Da ich nicht weiss ob er hier liest.
Ein Randbemerkung die ich mir noch erlaube. Hier im Forum zu schreiben war ich schon einige male und bin auch dankbar darüber das ich das kann und darf. Aber was das Bedienen dieser Forumsgestaltung angeht habe ich ab und zu so meine Mühe es zu verstehen. Ich finde dass dieses Forum wie es auf die Beine gestellt wurde zu sehr technischer Natur ist. Und weniger freundlich gestaltet für den Anwender.
Es grüsst
Thomas
Anzeige
AW: nun hast du ja ne Lösung..owT
16.04.2022 12:45:00
Oberschlumpf
Hi Thomas,
richtig lesen + verstehen ist schon die halbe Miete - auch mein Vorname wird mit H geschrieben, obwohl du dies bisher ignoriert hast ;-)
Seit 2001 bin ich fragender und seit n paar Jahre später als 2001 bin ich antwortender Teilnehmer.
Von Beginn an hatte ich verstanden, dass...
...meine jeweilige Antwort direkt auf den Beitrag folgt, auf den ich antworten will
...und das das jüngste Datum "=letzter Beitrag" nur zweitrangig eine Rolle spielt.
Ciao
Thorsten
AW: nun hast du ja ne Lösung..owT
16.04.2022 16:38:29
Thomas
Ja Thorsten gerade beim VBA ganz speziell da sollte man jedes Zeichen richtig lesen, da habe ich auch schon meine Erfahrungen gemacht.
Speziell tut es mir Leid das ich dein Name verhunzt habe Thorsten. Bitte um Entschuldigung.
Das was ich angesprochen habe zielt ja auch nicht speziell auf das zurück- Antworten ab. Da gibt es einige andere Stolpersteine die mich stören.
Schöne Ostern und grüsse
Thomas
Anzeige
AW: Userform Initialize
15.04.2022 19:36:38
Nepumuk
Hallo Thomas,
teste mal:

Private Sub UserForm_Initialize()
Dim objDictionary As Object
Dim vntRange As Variant
Dim lngLastRow As Long, lngColumn As Long, lngIndex As Long
lngLastRow = Cells.Find(What:="*", LookIn:=xlValues, Lookat:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
Set objDictionary = CreateObject(Class:="Scripting.Dictionary")
vntRange = Range(Cells(14, 2), Cells(lngLastRow, 12)).Value2
For lngColumn = 2 To 12
For lngIndex = LBound(vntRange, 1) To UBound(vntRange, 1)
objDictionary(vntRange(lngIndex, lngColumn - 1)) = vbNullString
Next
Controls("ComboBox" & Choose(lngColumn - 1, "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L")).List = objDictionary.Keys
Call objDictionary.RemoveAll
Next
End Sub
Gruß
Nepumuk
Anzeige
AW: Userform Initialize
15.04.2022 20:29:01
Thomas
Hallo Nepomuk,
danke für deine Hilfe.
Habs mal probiert. Jetzt werden die ComboBoxen aber nicht mehr gefüllt.
Es grüsst Thomas
AW: Userform Initialize
15.04.2022 20:36:14
Thomas
Nepomuk, hier die Datei.
Einfach den Hinweis wegen dem Link der noch fehlt ignorieren. Das wird erst später richtig verlinkt.
https://www.herber.de/bbs/user/152475.xlsm
Danke und Gruss
Thomas
AW: Userform Initialize
16.04.2022 09:05:37
Nepumuk
Hallo Thomas,
funktioniert mit dem Makro, ohne etwas zu ändern, einwandfrei: https://www.herber.de/bbs/user/152480.xlsm
Gruß
Nepumuk
Anzeige
AW: Userform Initialize
16.04.2022 11:08:25
Thomas
Hallo Nepomuk,
ja es funktioniert wirklich einwandfrei. Weiss der Kukuk was ich gestern gemacht habe das es nicht gegangen ist.
Bedanke mich für deine Hilfe die mir viel bedeutet. Schöne Ostern
Und grüsse
Thomas
AW: Userform Initialize
16.04.2022 16:05:12
snb
Was ich nicht verstehe:
- du postest eine Datei das Passwortgeschützt ist.
- das verbundene Zellen enthälst
- das Spalte A leer lasst
- das ein Art von Database enthält ohne ein Listobject zu verwenden
Wenn du ein Listobject verwendest brauchst du nur dieser Code:

Private Sub Userform_initialize()
Combobox1.list=sheet1.Listobjects(1).databodyrange
for j=2 to 11
me("Combobox" & j).List =combobox1.List
next
End Sub
Pro Combobox nur die Eigenschaften im Design Mode einstellen:
Combobox2.columncount = 2
Combobox2.columnwidths = "0pt;120pt"
Combobox3.columncount = 3
Combobox3.columnwidths = "0pt;0pt;120pt"
Combobox4.columncount = 4
Combobox4.columnwidths = "0pt;0pt;0pt;120pt"
USW bis Combobox11
Du wirdst sehen: das laüft alles blitzschnell.

Anzeige
AW: Userform Initialize
16.04.2022 16:33:38
Thomas
Hallo snb
Da hast Du ja absolut recht.
Aber Spalte A leer und verbundene Zellen, das sind nun mal die Übungsbestimmungen!
Passwortschutz, tut mir leid, aber um in den Makros herum zu wühlen ist es absolut egal ob die Tabelle Passwortschutz hat oder nicht.
Und einfach zum ausprobieren ist ein Datensatz gesetzt um das Skript einfach mal so auszuprobieren.
Darum, sorry wenn ich es so sage, verstehe ich dazu das gemotzte nicht so richtig.
Das Skript das läuft jetzt dank konstruktiver Hilfe von Nepumuk, ohne zuerst herum zu murren, wie eine Rakete, daher ist das Ziel eigentlich schon erreicht.
Über die Art und Weise wie man mit den ComboBoxen umgeht empfinde ich eher als Geschmacksache. Sicher gibt es Methoden und Anwendungen die man dann anfängt zu differenzieren wenn es um tausende Datensätze geht und man um jede Microsekunde froh ist wo ein Skript schneller läuft. Das ist aber bei meinen Anwendungen absolut nicht der Fall und setzet aus diesen Gründen und dem Modul Aufbau Prinzip zu liebe immer wieder gleiche Bausteine ein, weil man da auch bei der Pflege der Skripte immer wieder weiss um was es geht.
Ich kann mir vorstellen das deine Idee die Du hier mal als Beispiel zeigst auch eine Methode ist die funktioniert, obschon ich das jetzt auch erst mal einflechten müsste um es zu testen.
Da ich aber absolut glücklich bin mit dem laufenden Skript und ich damit auch Potential sehe um andere Projekte zu realisieren, bleibe ich bei dem was ich habe. Und probiere andere Methoden erst dann aus wenn die Karten für ein Projekt von Vorne an neu gemischt werden müssten.
Besten Dank und grüsse
Thomas

Was ich nicht verstehe:
- du postest eine Datei das Passwortgeschützt ist.
- das verbundene Zellen enthälst
- das Spalte A leer lasst
- das ein Art von Database enthält ohne ein Listobject zu verwenden
Wenn du ein Listobject verwendest brauchst du nur dieser Code:
Anzeige
lies das hier bitte, auch wenn du...
16.04.2022 17:14:21
Oberschlumpf
...aufgrund deiner teilweise nicht so schönen Erfahrungen vielleicht schon keine Lust mehr hast, hier noch weiter aktiv zu sein
Hi Thomas
(alles was ich jetzt schreibe, ist ehrlich und genau so gemeint, wie ich es schreibe. Nix von alledem ist - nicht wieder - eine "versteckte Kritik" in deine Richtung!)
DU hast recht mit deiner "Gegen-Kritik" !!
Ich möchte mich bei dir im Namen vieler entschuldigen, vor allem ich selbst, die oft zu ungeduldig in ihren Antworten sind, wenn der Fragende nicht immer auf Anhieb versteht, was wir versuchen ihm zu erklären.
ein Beispiel:
Wenn jemand wissen möchte (weil er das noch nicht kann), was man schreiben muss, damit TextBox1 den Wert aus Zelle A1 erhält, denken vielleicht viele Antworter zuerst (ich auch manchmal):
"Oh man! Echt jetzt? Der weiß wirklich nicht, wie man das programmiert?"
Denn wir "möchtegern-Profis" (nicht alle, es gibt auch noch wirklich geduldige Antworter!) wissen ja sofort, ohne nachzudenken die Antwort!

TextBox1.Text = Range("A1").Value
Wie gesagt, das war jetzt nur ein Beispiel. Ich könnte dir viele Beiträge zeigen, in denen solche "Antworter-Reaktionen", wie du sie erlebt hast, vorkommen.
Ich glaube, wir "Schlauen" sind im Lauf der Jahre etwas "arrogant" geworden. Ich kenne - dieses geilste Forum, das es gibt :-) - seit 2001. Und ich weiß noch, dass es in den ersten Jahren nicht so oft, so schnell, so unfreundlich wurde, wie es jetzt (nicht nur bei dir) geworden ist.
Wir Antworter haben zu sehr vergessen, ...
a) ...dass auch wir mal ganz klein angefangen haben
b) ...dass auch wir mal so ganz einfache Fragen gestellt haben, die sich fast von selbst beantworten
c) ...dass die Fragenden wirklich keine oder fast keine Ahung haben von VBA
d) ...und noch vieles mehr, was mir jetzt gerade nicht einfällt
Wir "Profis" sollten uns mal wieder etwas mehr zurücknehmen und wieder mehr Geduld zeigen, wenn ein Fragender nicht auf Anhieb alles sofort versteht.
Es tut mir leid.
Auf jeden Fall möchte ich dich mit dieser Antwort weiter ermutigen, erneut hier deine Fragen zu stellen, wenn du welche hast.
Du bist echt im besten Forum gelandet, dass ich kenne! :-)
Ciao
Thorsten
AW: lies das hier bitte, auch wenn du...
16.04.2022 19:38:37
Thomas
Ach Thoersten, was soll ich dazu jetzt sagen?
Ich kann meine "Gegner" auch verstehen oder einiges nachvollziehen. Aber wie du sagst Verständnis sollte man ja haben, denn ein Forum ist ja für den Austausch vieler angelaufenen Problemen da, sonst würde es so ein Forum ja auch gar nicht brauchen. Gebe auch zu das es natürlich vom Niveau her bessere Frage Beispiele gibt als meine es sind. Aber jeder ist halt so wie er ist.
Ich bedanke mich aber für deine Worte
Und Thorsten, ich stelle gleich noch mal eine Frage rein, denn ich habe mit einem Format ein Problem, komme nicht weiter und der Schädel brummt.
AW: lies das hier bitte, auch wenn du...
16.04.2022 19:47:14
Thomas
Kann sein das ich mich schon wieder falsch melde hier...
Aber trotzdem die Frage: zum Skript von Nepumuk, In der Spalte D habe ich Datum drin. Die werden in der ComboBoxD aber nicht mit Datum angezeigt sondern nur mit einer mehrstelligen Zahlenkombination. Meine Vermutung liegt da, dass wohl in der Find Methode ganz am Schluss irgend etwas angefügt werden muss. Hab es gegoogelt, aber leider nichts dazu gefunden. Was müsste man hier ändern das ich in der ComboBox D ein Datumswert zum Beispiel 16.04.22 bekomme.
Im Chance Ereignis das Format deklarieren funktioniert nicht mehr, was vor diesem Skript von Nepumuk aber funktioniert hatte.

Private Sub UserForm_Initialize()
Dim objDictionary As Object
Dim vntRange As Variant
Dim lngLastRow As Long, lngColumn As Long, lngIndex As Long
lngLastRow = Cells.Find(What:="*", LookIn:=xlValues, Lookat:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
Set objDictionary = CreateObject(Class:="Scripting.Dictionary")
vntRange = Range(Cells(14, 2), Cells(lngLastRow, 12)).Value2
For lngColumn = 2 To 12
For lngIndex = LBound(vntRange, 1) To UBound(vntRange, 1)
objDictionary(vntRange(lngIndex, lngColumn - 1)) = vbNullString
Next
Controls("ComboBox" & Choose(lngColumn - 1, "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L")).List = objDictionary.Keys
Call objDictionary.RemoveAll
Next
End Sub

AW: lies das hier bitte, auch wenn du...
16.04.2022 19:51:34
Nepumuk
Hallo Thomas,
ändere diese Zeile:

vntRange = Range(Cells(14, 2), Cells(lngLastRow, 12)).Value2
so:

vntRange = Range(Cells(14, 2), Cells(lngLastRow, 12)).Value
Gruß
Nepumuk
AW: lies das hier bitte, auch wenn du...
17.04.2022 07:01:13
Oberschlumpf
Hi Thomas,
auch, wenn vllt schon beantwortet, würd ich dir empfehlen, neue Fragen auch in einem neuen Beitrag zu stellen und nicht an einen Beitrag anzuhängen, der mit deiner neuen Frage nix zu tun hat.
Ciao
Thorsten
AW: lies das hier bitte, auch wenn du...
17.04.2022 12:25:15
Thomas
Guten Morgen Thorsten,
ja es wurde schon beantwortet. Auch das Value2 konnte ich jetzt Googlen und jetzt wurde mir einiges klar darüber. Somit ist das Thema jetzt abgeschlossen.
Wäre ich nicht schon Mitte 50 und hätte kein 130% Job, so würde ich ein VBA Studium machen und meine ganze Zeit da rein investieren. Da dieses aber nicht geht bin ich allen sehr dankbar die mir ab und zu konstruktiv an einem Problem helfen können.
Besten Dank all denen.

80 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige