Live-Forum - Die aktuellen Beiträge
Datum
Titel
23.04.2024 14:59:21
23.04.2024 14:47:39
23.04.2024 14:23:45
Anzeige
Archiv - Navigation
512to516
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
512to516
512to516
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Combobox

Combobox
09.11.2004 16:10:55
Archi
Nochmals ich,
mit meinem Code (unten) kann ich alle Werte die inder Spalte 10 stehen in meine Combobox (cboModulauswahl)schreiben lassen.
Jetzt ist es so,dass ich auch doppelte einträge in der Spalte habe und er mir natürlich auch doppelt in meine Combo schreibt.
Wie kann ich das verhindern?
Bitte um eure Hilfe
countergesamtanfang = ActiveSheet.Cells(65536, 10).End(xlUp).Row
For m_zelle_inhalt = 1 To countergesamtanfang
inhaltwert = ActiveSheet.Cells(m_zelle_inhalt, 10).Value
If inhaltwert = "" Then
Else

Me.cboModulWahl.AddItem inhaltwert
End If
Next m_zelle_inhalt

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Combobox
P@ulchen
Hi Archi,
versuch mal so:


Private Sub UserForm_Initialize()
Dim countergesamtanfang As Long
Dim m_zelle_inhalt As Long
countergesamtanfang = Range("J65536").End(xlUp).Row
For m_zelle_inhalt = 1 To countergesamtanfang
    If WorksheetFunction.CountIf(Range("J1:J" & m_zelle_inhalt), Cells(m_zelle_inhalt, 10)) = 1 Then _
    Me.cboModulWahl.AddItem Cells(m_zelle_inhalt, 10)
Next m_zelle_inhalt
End Sub
Gruß aus Leipzig
P@ulchen
Das Forum lebt auch von den Rückmeldungen !
Anzeige
Boah Super Danke
Archi
Genau das was ich wollte P@ulchen
@Paulchen
ypsilon
hi Paule ;-)
nur 'ne kurze (ernstgemeinte) frage
warum so:
countergesamtanfang = Range("J65536").End(xlUp).Row
For m_zelle_inhalt = 1 To countergesamtanfang
und nicht so:
For m_zelle_inhalt = 1 To Range("J65536").End(xlUp).Row
ist das gewollt und wenn ja warum ?
cu Micha
AW: @Paulchen
Erwin
Variable werden schon beim Kompilieren in den Speicher geschrieben. Bei deiner Variante
wird der Wert erst zur Laufzeit ermittelt. Die erste Variante ist im Interesse der Stabilität von Programmen klar zu bevorzugen.
mfg Erwin
AW: @Paulchen
yps
hi Erwin,
wenn auch nicht nur aus stablitätsgründen sondern auch aus geschwindigkeitsgründen aber:
bei einer for:next schleife wird doch der zu erreichende part (also in diesem fall der höchste wert) sowieso in den speicher genommen und NICHT bei jeder schleife neu berechnet, oder ?
also müsste doch meine variante zumindest theoretisch schneller sein, oder ?
cu Micha
Anzeige
AW: @Paulchen
Erwin
Geschwindigkeit spielt dabei keine Rolle. Es geht um Stabilität und außerdem gehört
es zu einer Programmierung Variable zu mit passendem Typ zu deklarieren.
Der Makrobastler kann natürlich machen wozu erlustig ist.
mfg Erwin
AW: @Paulchen
yps
naja, vielleicht nicht GANZ überzeugende argumene aber der ansatz scheint zu stimmen ;-)
danke
ich werde mich "sachkundig" machen
bitte nicht falsch verstehen aber so "richtig" einleuchtend kommt mir die argumentation nicht vor (aber das kann selbstversändlich auch an mir liegen)
auf jeden fall danke für dein interesse, deine hilfe und die mir geopferte zeit
cu Micha
Anzeige
AW: @Paulchen
Erwin
Na gut, dann nochmal ganz einfach: Ist die Variable deklariert und ein Wert zugewiesen,
ist dieser bereits beim Kompilieren bekannt.
Ohne Variable ist der Wert erst bekannt, wenn der Code an diese Stelle kommt und in die Schleife einsteigt, jetzt verständlicher?
mfg Erwin

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige