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

ComboBox ohne doppelte und Bedingung

ComboBox ohne doppelte und Bedingung
13.10.2013 18:34:58
chrissi
Hallo,
in meiner UF möchte ich die ComboBox ohne doppelte Namen einlesen.
Bedingung ist jedoch, das in Spalte 25 "Firma" steht und Spalte 22 leer ist.
Das funktioniert auch.
Leider wird der Name in Spalte 3 wenn er mehrmals in den Zellen vorkommt und in
Spalte 22 ein Text steht nicht eingelesen. Auch wenn er nur 1mal in Spalte 22 steht und die anderen Zeilen leer sind.
Wie kann ich dies ändern?
Danke!
Gruß
Chrissi
With Tabelle1
CBO_Ang1.Clear
ii = 2
Do Until IsEmpty(.Cells(ii, 3))
col.Add .Cells(ii, 3), .Cells(ii, 3)
If Err = 0 And .Cells(ii, 25) = "Firma" And .Cells(ii, 22) = "" Then
CBO_Ang1.AddItem .Cells(ii, 3)
Else
Err.Clear
End If
ii = ii + 1
Loop
End With

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Scripting.Dictionary ...
13.10.2013 18:59:34
Matthias
Hallo Chrissi
Schau mal in der Recherche nach Scripting.Dictionary
Gruß Matthias

AW: Scripting.Dictionary ...
13.10.2013 20:01:12
chrissi
Hallo Matthias,
auf das Scripting.Dictionary wäre ich nicht gekommen.
Aber es funktioniert wunderbar.
s. Datei.
Danke!
Gruß
Chrissi
https://www.herber.de/bbs/user/87640.xlsm

AW: Scripting.Dictionary ...
13.10.2013 20:35:44
chrissi
Habe mich getäuscht, funktioniert leider doch nicht so wie ich das will.
Wenn die letzte Zeile leer ist, dann wird diese unter Firma, als auch Privat
angezeigt.
Wie kann ich dies ändern?
Danke!
Gruß
Chrissi
https://www.herber.de/bbs/user/87641.xlsm

Anzeige
ohne Doppelte mit Scripting.Dictionary
14.10.2013 01:29:53
Erich
Hi Chrissi,
schau dir den folgenden Code mal an:

Option Explicit
Private Sub CommandButton1_Click()
DoIt "Firma"
End Sub
Private Sub CommandButton2_Click()
DoIt "Privat"
End Sub
Sub DoIt(strBez As String)
Dim myDic As Object
Dim ii As Long, Endrow As Long
Dim rngInput As Variant
Dim rngInput1 As Variant
Dim rngInput2 As Variant
Set myDic = CreateObject("Scripting.Dictionary")
Me.ComboBox1.Clear
Endrow = Cells(Rows.Count, 3).End(xlUp).Row - 1
rngInput = Range("C2").Resize(Endrow)
rngInput1 = Range("V2").Resize(Endrow)
rngInput2 = Range("Y2").Resize(Endrow)
For ii = 1 To Endrow
If Not rngInput(ii, 1) = Empty Then
If rngInput2(ii, 1) = strBez And rngInput1(ii, 1) = "" Then
myDic.Add rngInput(ii, 1), ""
End If
End If
Next ii
Me.ComboBox1.List = myDic.Keys
End Sub
Private Sub CommandButton3_Click()
Unload UserForm1
End Sub
Deine beiden Click-Prozeduren unterscheiden sich nur im Text "Privat" oder "Firma".
Das lässt sich prima in einer einzigen Prozedur (DoIt) erledigen.
Ich erlaube mir noch ein paar Kommentare: :-)
Die drei rngInput-Bereiche sollten nicht unterschiedlich hoch sein (Zeilenzahl). Das macht nur Ärger.
Ein "Endrow" für alle ist wohl besser.
Wenn du schreibst "Dim ii, Endrow As Long", dann wird ii nicht etwa als Long deklariert, sondern als Variant.
Zu ii hast du keinen Typ angegeben. Hier ist "Dim ii As Long, Endrow As Long" nötig.
"On Error ..." ist hier überflüssig.
Da du nur die Keys des Scripting-Objekts brauchst, reicht
myDic.Add rngInput(ii, 1), ""
statt
myDic.Add rngInput(ii, 1), rngInput(ii, 1)
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: ohne Doppelte mit Scripting.Dictionary
14.10.2013 05:06:39
chrissi
Hallo Erich,
Du hast mir wirklich sehr weiter geholfen und gute Anregungen gegeben.
Es funktioniert so wie ich es wollte.
Werde mein Programm überarbeiten nach Deinen Tipps.
Danke!
Gruß
Chrissi

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige