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