Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1612to1616
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

Combo in Userf. aus geschl. Datei mit Arr befüllen

Combo in Userf. aus geschl. Datei mit Arr befüllen
09.03.2018 17:19:22
STeve
Hallo liebe Helfer.....
möchte eine Combobox1 in einer Userform3 aus einer geschlossenen Datei (und soll auch geschlossen bleiben) befüllen:
1.) Wenn ich anstatt der Variablen LetzteZeile einen Fixwert (zur Zeit 50 Einträge) eingeben läuft die Befüllung der Arr problemlos.
Mit Variable kommt die Fehlermeldung : Konstanter Ausdruck erforderlich
2.) ....jedoch funktioniert Me.ComboBox1.List = Arr auch mit fixer Zeilenangabe nicht.
3.) ....auch die Auszählung der letzten Zeile-
LetzteZeile = Workbooks(strFile).Sheets(strTable).Range("A65536").End(xlUp).Row
klappt so nicht.
Public LetzteZeile As Integer
Private Sub UserForm_Initialize()   ' die Userform wird hier eingespeist
Dim r        As Integer
Dim c        As Integer
Dim strPath  As String
Dim strFile  As String
Dim strTable As String
strPath = "C:\ Neuer Ordner"
strFile = "Personelle Veränderungsmeldung_neu_1.3..xlsm"
strTable = "Mitarbeiterverwaltung"
If Right(strPath, 1)  "\" Then strPath = strPath & "\"
LetzteZeile = Workbooks(strFile).Sheets(strTable).Range("A65536").End(xlUp).Row
Dim Arr(1 To LetzteZeile, 1 To 6)
For r = 1 To LetzteZeile
For c = 1 To 6
Arr(r, c) = ExecuteExcel4Macro("'" & strPath & "[" & strFile & "]" & strTable & "'! _
_
" & Cells(r, c).Address(, , xlR1C1))
Next c
Next r
Me.ComboBox1.ColumnCount = 6
Me.ComboBox1.List = Arr        ' wird auch mit const. Zeilenangabe nicht befüllt
UserForm3.Show
End Sub

Besten Dank für eure Hilfe.
STeve

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Combo in Userf. aus geschl. Datei mit Arr befüllen
09.03.2018 17:36:33
Beverly
Hi Steve,
eventuell kannst du eine Do-Schleife verwenden, falls keine Leerzellen vorkommen. Wenn die laufende Zelle dann leer ist, verlässt du die Do-Schleife. Das Array selbst kannst du ja zur Laufzeit erweitern anstatt es vorher zu dimensionieren.
Frage: weshalb muss die Mappe geschlossen bleiben? Wenn du sie per Code öffnest und anschließend wieder schließt, hat das doch denselben Effekt und ist wesentlich unkomplizierter...


AW: Combo in Userf. aus geschl. Datei mit Arr befüllen
10.03.2018 09:00:53
STeve
Hallo Karin....vorab sy für die späte Antwort und danke für deine Hilfe/Unterstützung.
Der Bereich der in der Combo angezeigt werden soll hat 6 Spalten und eben ca. 50 Zeilen.
In der 6 Spalte sind aber ab der ca. 5-6 Zeile die Zellen leer.
wieso - geschlossene Mappe: ...diese Mappe hat eben ein Workbook.open-Event - wo eine Userform initialisiert wird - und
1.) das braucht zuviel Zeit und
2.) die lässt sich nicht schließen.
Das Arr läuft schnell und auch bei den leeren Zellen......
In der Hoffnung auf deiner Hilfe dabei .......mfg Stefan
Anzeige
nur mal ein Denkanstoß
10.03.2018 09:10:25
Oberschlumpf
Hi STeve
Codebeispiel:

Application.EnableEvents = False 'es werden keine Events mehr ausgeführt
Workbooks.Open deine.Datei
hier dein Code zum Befüllen der ComboBox
Workbooks.Close "deine.Datei" False 'deine Datei wird ohne speichern geschlossen
Application.EnableEvents = True 'alle Events werden wieder ausgeführt

Hilft dieser Ansatz?
Ciao
Thorsten
Danke und Noch eine kleine Bitte....
10.03.2018 09:53:55
STeve
Hi Thorsten.DANKE ....dein "Denkanstoß" ist die Lösung....
habe die Datei mit geöffnet:
Workbooks.Open Filename:= _
"C:\Users\blabla.xlsm"
aber beim schließen:
Workbooks.Close "deine.Datei" False 'deine Datei wird ohne speichern geschlossen
'klappt nicht...kommt immer Laufzeitfehler 9
..es geht zwar mit: ActiveWorkbook.Close 'da wäre mir lieber eine genaue Referenzierung
aber hier noch die Frage/Bitte:
Workbooks.Close Filename:= _
"C:\Users\blabla.xlsm" ' geht nicht -- wie müsste das lauten?
Danke und mfg
STeve
Anzeige
Workbooks.Close Filename:="blabla.xlsm" - o.w.T.
10.03.2018 10:00:13
Beverly


AW: Workbooks.Close Filename:="blabla.xlsm" - o.w.T.
10.03.2018 10:14:02
STeve
Servus liebe Karin.....Danke und ich sehe schon oft den Wald nicht mehr vor lauter Bäume....das ;-) hat geholfen:
Workbooks("blabla.xlsm").Close
mfg
AW: Combo in Userf. aus geschl. Datei mit Arr befüllen
10.03.2018 09:58:43
Beverly
Hi Steve,
und was hat das mit der Do-Schleife zu tun, wenn in Spalte 6 Zellen leer sind? Verwende für die Schleifenzählung doch eine Spalte, in der es keine Leerzellen gibt.


Danke Karin........
10.03.2018 10:20:02
STeve
Danke Karin...eine Do Schleife habe ich noch nie eingebaut...die sind mir (leider) (noch) ein Rätsel..:-O
Habe es mit einer For-Next gemacht:
Dim N As Integer
For Repeatings = 1 To Sheets("Blattname").Range("A65536").End(xlUp).Row
ListBox1.AddItem
N = ListBox1.ListCount - 1
ListBox1.List(N, 0) = Sheets("Blattname").Cells(Repeatings, 1)
ListBox1.List(N, 1) = Sheets("Blattname").Cells(Repeatings, 2)
ListBox1.List(N, 2) = Sheets("Blattname").Cells(Repeatings, 3)
ListBox1.List(N, 3) = Sheets("Blattname").Cells(Repeatings, 4)
ListBox1.List(N, 4) = Sheets("Blattname").Cells(Repeatings, 5)
ListBox1.List(N, 5) = Sheets("Blattname").Cells(Repeatings, 6)
Next
....Danke für deine so prompte und profimäßige Hilfe.
Hoffe kann wieder mal auf deine Unterstützung bauen.
mfg
STeve
Anzeige
Do Loop-Schleife
10.03.2018 14:23:35
Beverly
Hi Steve,
eine Do Loop Schleife würde nach folgendem Prinzip aufgebaut sein:
    Dim Repeatings As Long
Dim N As Integer
Repeatings = 1
Do
ListBox1.AddItem
N = ListBox1.ListCount - 1
ListBox1.List(N, 0) = Sheets("Blattname").Cells(Repeatings, 1)
ListBox1.List(N, 1) = Sheets("Blattname").Cells(Repeatings, 2)
ListBox1.List(N, 2) = Sheets("Blattname").Cells(Repeatings, 3)
ListBox1.List(N, 3) = Sheets("Blattname").Cells(Repeatings, 4)
ListBox1.List(N, 4) = Sheets("Blattname").Cells(Repeatings, 5)
ListBox1.List(N, 5) = Sheets("Blattname").Cells(Repeatings, 6)
Repeatings = Repeatings + 1
Loop While Sheets("Blattname").Cells(Repeatings, 1)  ""

Bedingung ist, dass in der Zählspalte (im Beispiel Spalte A) keine Leerzellen vorkommen.


Anzeige
Do Loop-Schleife DANKE
10.03.2018 21:39:09
STeve
Hallo Beverly... Danke für den Bau der Schleife. Werde ich - Schritt für Schritt - testen und evident halten. Dir noch schönes WE.mfg STeve
Danke für die Rückmeldung - o.w.T.
11.03.2018 09:31:28
Beverly


Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige