Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1096to1100
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

Daten in Combobox einlesen

Daten in Combobox einlesen
ray
Hallo,
leider habe ich im Archiv nichts passendes gefunden:
ich möchte die Inhalte der Spalte F aus der Datei: D:\mängelliste.xls ein einer ComboBox auf mein UserForm anzeigen lassen. Dabei sollen doppelte Einträge nicht angezeigt werden.
Wie mach ich das?
Viele Grüße aus Hamburg diesig und lustlos....
Ray
AW: Daten in Combobox einlesen
27.08.2009 13:21:45
ray
Hey Micha,
alter SCHWEDE (oder bist wieder zurück?), ich freu mich, dass Du wieder hier bist.
Na ja, die Genialität überwiegt mitlerweile dem Anfängerverhalten, nur leider merkt das keiner :-)
der Erste Link passt, der https://www.herber.de/mailing/231204h.htm schon eher. Aber ich bekomme das mit externer Datei nicht hin. So geht es nicht:
On Error Resume Next
Dim mangelcode
Application.Workbooks.Open ("D:\daten\mängelliste.xls")
With Workbooks("mängelliste.xls")
.Sheets("mängelliste").Select
Dim wks As Worksheet
Dim vRow As Variant
Dim iRow As Integer, iRowT As Integer, iRowL As Integer
Application.ScreenUpdating = False
Set wks = ActiveSheet
iRowL = Cells(Rows.Count, 2).End(xlUp).Row
Workbooks.Add
For iRow = 3 To iRowL
vRow = Application.Match(wks.Cells(iRow, 2).Value, Columns(1), 0)
If IsError(vRow) Then
iRowT = iRowT + 1
Cells(iRowT, 1).Value = wks.Cells(iRow, 2).Value
End If
Next iRow
Range("A1").CurrentRegion.Sort _
key1:=Range("A1"), order1:=xlAscending, Header:=xlNo
With cboValues
.List = Range("A1").CurrentRegion.Value
If .ListCount > 0 Then .ListIndex = 0
End With
ActiveWorkbook.Close savechanges:=False
Application.ScreenUpdating = True
.Close (False) 'Schließen mit speichern, sonst .Close (False)
End With
HAst Du ne Idee?
Vilee Grüße Ray
Anzeige
AW: Daten in Combobox einlesen
27.08.2009 13:39:33
MichaV
Hei,
nö, bin in Norwegen und werd hier noch ne Weile bleiben. Ist schön hier ;o)
Hier mal Hans' Code angepasst auf Deine Bedürfnisse:
Option Explicit
Private Sub CommandButton1_Click()
Dim wbk As Workbook
Dim wks As Worksheet
Dim vRow As Variant
Dim iRow As Integer, iRowT As Integer, iRowL As Integer
Application.ScreenUpdating = False
Set wbk = Workbooks.Open("Mängelliste.xls")
Set wks = wbk.Sheets(1)
iRowL = Cells(Rows.Count, 6).End(xlUp).Row
Workbooks.Add
For iRow = 1 To iRowL
vRow = Application.Match(wks.Cells(iRow, 6).Value, Columns(1), 0)
If IsError(vRow) Then
iRowT = iRowT + 1
Cells(iRowT, 1).Value = wks.Cells(iRow, 6).Value
End If
Next iRow
'Range("A1").CurrentRegion.Sort _
key1:=Range("A1"), order1:=xlAscending, header:=xlNo
With ComboBox1
.List = Range("A1").CurrentRegion.Value
If .ListCount > 0 Then .ListIndex = 0
End With
ActiveWorkbook.Close savechanges:=False
wbk.Close
Set wbk = Nothing
Set wks = Nothing
Application.ScreenUpdating = True
End Sub
Gruß! Micha
Anzeige
perfekte Lösung - respekt MichaV
27.08.2009 13:47:37
ray
Super, vielen vielen Dank, große Hilfe. Schön, dass Du wieder da bist. Wie weit bist dU den von OSLO weg?
Lösung war doch von Hans W Herber
27.08.2009 13:56:07
Hans
Hei ray,
550km oder 7 Stunden Autofahrt bei Beachtung aller Geschwindigkeitsbegrenzungen.
Gruß! Micha
Stop! es fehlt noch was...
27.08.2009 13:57:28
ray
Sorry, hab grad erst gemerkt, dass er beim Sortieren immer ein neue Excelinstanz öffnet. Ich brauch zwar die Sortierung aber nciht eine neue Mappe. Muß ich die für den Code haben udn wenn ja, wie kann ich die schließen, nachdem es in der ComboBox steht?
Grüße Ray
AW: Stop! es fehlt noch was...
27.08.2009 14:19:52
MichaV
Hei,
so, ich hab das jetzt mal so umgeschrieben daß er
- die Mängelliste öffnet (das ist sichtbar)
- Spalte F sortiert
- Werte ein Combobox einliest
- Mängelliste ohne speichern wieder schließt
Dabei wird kein neues WB erstellt, aber die Daten müssen sortiert werden damit der Code funzt. Ich weiß allerdings nicht was Du mit "wie kann ich die schließen, nachdem es in der ComboBox steht?
"
meinst, denn das ist bei mir nicht aufgetreten.
Private Sub CommandButton1_Click()
Dim wbk As Workbook
Dim wks As Worksheet
Dim vRow As Variant
Dim iRow As Integer, iRowT As Integer, iRowL As Integer
Dim strInhalt As String
Dim strVorher As String
Application.ScreenUpdating = False
Set wbk = Workbooks.Open("Mängelliste.xls")
Set wks = wbk.Sheets(1)
With wks
.Range("F1").CurrentRegion.Sort _
key1:=Range("F1"), order1:=xlAscending, header:=xlNo
iRowL = .Cells(Rows.Count, 6).End(xlUp).Row
For iRow = 1 To iRowL
If .Cells(iRow, 6)  strVorher Then
ComboBox1.AddItem .Cells(iRow, 6)
strVorher = .Cells(iRow, 6)
End If
Next
End With
If ComboBox1.ListCount > 0 Then ComboBox1.ListIndex = 0
wbk.Close savechanges:=False
Set wbk = Nothing
Set wks = Nothing
Application.ScreenUpdating = True
End Sub

Gruß- Micha
PS: Oder willst Du dass die Mängelliste nicht geöffnet wird? Das geht auch, ist aber bissel mehr Code.
Anzeige
AW: Stop! es fehlt noch was...
27.08.2009 15:36:21
ray
Hmmm, ich erkenne vom Ergebnis keinen Unterschied von diesem Code zu Deinem letzen:
'#### ComboBox mit Mänglen füllen START ####
Dim wbk As Workbook
Dim wks As Worksheet
Dim vRow As Variant
Dim iRow As Integer, iRowT As Integer, iRowL As Integer
Application.ScreenUpdating = False
Set wbk = Workbooks.Open("F:\daten\mängelliste.xls")
Set wks = wbk.Sheets(1)
iRowL = Cells(Rows.Count, 6).End(xlUp).Row
Workbooks.Add
For iRow = 1 To iRowL
vRow = Application.Match(wks.Cells(iRow, 6).Value, Columns(1), 0)
If IsError(vRow) Then
iRowT = iRowT + 1
Cells(iRowT, 1).Value = wks.Cells(iRow, 6).Value
End If
Next iRow
Range("a1").CurrentRegion.Sort _
key1:=Range("a1"), order1:=xlAscending, Header:=xlNo
With cbMängelliste
.List = Range("A1").CurrentRegion.Value
If .ListCount > 0 Then .ListIndex = 0
End With
ActiveWorkbook.Close savechanges:=False
wbk.Close
Set wbk = Nothing
Set wks = Nothing
Application.ScreenUpdating = True
'#### ComboBox mit Mänglen füllen ENDE ####
PS: No, kann ruhig geöffnet werden, wenn es einfacher ist.
Anzeige
AW: Stop! es fehlt noch was...
27.08.2009 15:43:06
MichaV
Hö, ist ja auch kein Unterschied im Ergebnis. Es wird nur kein zusätzliches WB im Hintergrund erstellt.
Also, ist der Herr jetzt zufrieden oder nicht ;o) ?
Gruß- Micha
Respekt! Vielen Dank.
27.08.2009 15:46:43
ray
Ja, Deine Lösung ist besser, falls sie nciht einen Nachteil hat, den ich als genialer Anfänger nicht schnalle...
Na ja, ich wäre auch gern klug und schön, wär alles einfacher :-)
Nochmal vielen Dank und beste Grüße in den Norden
Ray (uuuuh, dunkle Wolken nähern sich von Westen....)
AW: Respekt! Vielen Dank.
27.08.2009 15:56:28
MichaV
Ich sehe den Nachteil nur darin dass die Mappe geöffnet wird und dass Screenupdating ohne Fehlerbehandlung läuft. Also wenn der Code aufgrund eines Fehlers abbricht, dann musst Du Screenupdating manuell wieder einschalten. Also bau lieber noch ein on error goto bla ein und schreibe bla: for screenupdating=true.
Ansonsten viele Grüße in den Süden, vi snakkes :o)
Gruß- Micha
(klug und schön gibts doch garnicht... guck Dir doch die Bilder vom Excel-Treffen an... höhö... (bitte nicht stockernst nehmen!!!))
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige