Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
348to352
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
348to352
348to352
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Combobox = "Null"

Combobox = "Null"
10.12.2003 21:37:53
Franz W.
Hallo Fachleute,

ich bitte Euch demütigst um Eure Nachsicht und Geduld mit mir, aber da stolpere ich grad wieder über was mit einer Combobox, womit ich gar nicht weiter komme:

If cmbKdSuchen = ....... Then Exit Sub

Die (mehrspaltige) Box ist leer, zeigt keinen Eintrag an. Aber ich weiß nicht, wie ich das abfragen kann

Es klappen NICHT:

If cmbKdSuchen = "" Then Exit Sub
If cmbKdSuchen = 0 Then Exit Sub
If cmbKdSuchen = Null Then Exit Sub

Mit alle diesen Versuchen wird "Exit Sub" übergangen und es geht weiter im Code!!

Das Lokal-Fenster zeigt an: cmbKdSuchen bei Value: Null, Typ: Variant/Null.

Wie kann ich das abfragen, bitte? Was soll ich da bei den .......... in der Abfrage reinschreiben??

Vielen Dank im Voraus und Grüße
Franz

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Combobox = "Null"
10.12.2003 22:13:40
Klaus-Dieter
Hallo Franz,

der vollständige Quelltext wäre sicher hilfreich gewesen. Welches Ereignis soll denn den Ausstieg auslösen?

dieser Quelltext bringt ein Ergebnis:

Private Sub cmbKdSuchen_Click()
If cmbKdSuchen = "" Then MsgBox "Test"
End Sub


Code eingefügt mit: Excel Code Jeanie



Gruß Klaus-Dieter


Anzeige
Leider nein...
10.12.2003 22:37:41
Franz W.
Hallo Klaus-Dieter,

vielen Dank für Deine Hilfe, aber die Msgbox krieg ich nicht. Wüsste auch nicht wie, denn wenn ich klicke, habe ich ja schon einen Eintrag ausgewählt und dann hat cmbKdSuchen ja schon einen Wert.

Ich habe das bei mir in einem AfterUpdate-Ereignis:


Private Sub cmbKdSuchen_AfterUpdate()
Dim KdNrUf$
Dim Found As Range
'Stop
If cmbKdSuchen = Null Then Exit Sub
End Sub


Ich provoziere das, indem ich einen Eintrag auswähle, diesen dann wieder lösche mit der Rücktaste und dann die Box verlasse. Im Einzelschrittmodus sehe ich dann, dass Exit Sub übergangen wird. Und im Lokal-Fenster sehe ich dann das oben Beschriebene.

Beste Grüße
Franz

P.S.: bin übrigens des öfteren auf deiner HP, hab schon ne MEnge daraus gelernt, danke dafür!!
Anzeige
AW: Leider nein...
10.12.2003 23:04:51
Ramses
Hallo Franz

die Variante


Private Sub cmbKdSuchen_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Me.cmbKdSuchen = ""  Then
Msgbox "Nix Da"
Cancel = True
Exit Sub
End If
End Sub


Sollte eigentlich tun, ... hab ich gerade probiert

Gruss Rainer
OFF TOPIC
10.12.2003 23:14:38
K.Rola
Hallo Rainer,

du Brutalo, so kommt user ja nie mehr aus der box, aber egal, das ist
es nicht, wozu ich deine Hilfe brauche.

Wenn ich mich recht erinnere hast du doch Excel XP?

Wenn ich eine UDF erstelle, finde ich die ja im Objektkatalog und
kann(bzw. konnnte unter E 2000) mit Rechtsklick dort eine kurze
Hilfe eintragen, die dann auch im Funktionsassi angezeigt wird.
Unter Excel 2000 klappt das aber nicht unter XP.
Noch verrückter, ich geb unter XP das was ein, bei erneutem Aufruf
ist der Dialog leer und auch im Assi wird nix angezeigt.

Speichere ich dir Datei und öffne sie mit E 2000, ist das dort zu sehen,
sowhl im Objektkatalog als auch im Assi.

Uff, nun meine Bitte, kannst du das mal bei dir testen und Laut geben?
Ich hab eigentlich keine Lust, die Beschreibung immer zur Laufzeit
mit API zu erzeugen.

Gruß K.Rola
Anzeige
AW: OFF TOPIC
10.12.2003 23:30:00
Ramses
Hallo K.Rola

Bisher hatte ich keine Probleme damit.
Ich mache es immer so:

UDF erstellen
Objectkatalog öffnen
Funktion suchen
Rechte Maustaste > Eigenschaften
Dialog "Elementoptionen" öffnet sich.
Dann kann ich unter "Beschreibung" den Hilfetext eingeben. Der wird auch im Assistenten dann angezeigt.

Ja, ich habe XP,... auch unter 2003 funktioniert es noch so.

War das hilfreich für dich ?

Gruss Rainer
AW: OFF TOPIC
11.12.2003 00:00:24
K.Rola
Hallo Rainer,

nö, hilft nicht, weil ich jetzt nur weiß, dass es wohl geht, nur
eben bei mir nicht, grübel?

Idee, lade doch hier mal eine dummy- UDF und ich auch, dann können wir
das mal gegenseitig ausprobieren, einverstanden?

Gruß K.Rola
Anzeige
Bug oder Feature...
11.12.2003 00:23:36
Ramses
Hallo K.Rola,

habe gerade was witziges festgestellt :-))
Hast du in deinem Modul NUR Funktionen ?
Dann geht es nicht ;-())))

Schreib in das Modul einfach noch rein


Sub Test()
End Sub


Dann wird die Hilfe angenommen und auch im Assi gezeigt.

Doof aber tut ....

Ich ware gerade selbst am zweifeln weil es nicht funkionierte,... dann habe ich genau die Datei nochmal aufgemacht die ich vorhin hatte und da war noch ein Makro drin.
Also habe ich das Makro reinkopiert, und siehe da, der Hilfe-Text der vorher nicht sichtbar war, wurde im Object-katalog plötzlich angezeigt.

Gruss Rainer
Anzeige
AW: Bug oder Feature...
11.12.2003 00:47:08
K.Rola
Hallo Rainer,

das ist ja too much! Excel ist schon eine Riesenwundertüte.

Danke für deine Hilfe.

Gruß K.Rola
Leider nochmal nein...
10.12.2003 23:17:37
Franz W.
Hallo Rainer,

danke, dass Du Dich zu so später Stunde noch mal reinhängst. Aber es tut sich leider nichts. Bedingung nicht erfüllt, Anweisung wird übersprungen. Wenn ich einen Stop setze und mit der Maus über das Me.cmbKdSuchen gehe, erscheint im Tipp-Fenster: Me.cmbKdSuchen = Null . Es steht da nicht Me.cmbKdSuchen = "" ! Und das wird übergangen.

Kann das mit den eingestellten Eigenschaften was zu tun haben? Und falls ja, mit welcher möglicherweise? Daten hab ich z.B. eingelesen im Eigenschaftsfenster über RowSource, und zwar mit dem Namen eines Tabellenbereiches. Die Box ist 4-spaltig, BoundColumn = 1, TextColumn = 3. Was köönnte vielleicht noch von Bedeutung sein ???

Resignierte, trotzdem herzliche Grüße
Franz
Anzeige
AW: Leider nochmal nein...
10.12.2003 23:30:46
Ramses
Hallo Franz

da kommen wir wohl ohne das vermal.... hochladen der Datei nicht rum.
Wie gesagt:
Der Code funktioniert bei mir.

Gruss Rainer
Pfade und Bilder...
11.12.2003 00:14:25
Ramses
Hallo Franz

Leider funktioniert die Datei nocht so wie du meinst,... ich habe die Bilderpfade nicht :-).
Anyway:
nachdem ich das laden des Bildes ausdokumentiert habe konnte den Dialog öffnen,... und mit dem Code funktioniert es ? !


Private Sub cmbKdSuchen_Exit(ByVal Cancel As MSForms.ReturnBoolean)
  Dim KdNrUf$
    Dim Found As Range
'Stop
        Debug.Print "1" & Me.cmbKdSuchen.Value
    Debug.Print Len(Me.cmbKdSuchen.Value)
    If IsNull(Me.cmbKdSuchen) Then
        MsgBox ("JUHU")
        Exit Sub
    End If
    
    KdNrUf = Format(cmbKdSuchen, "000")
    Set Found = Range("KdNrn").Find(KdNrUf, LookIn:=xlValues)
'KK Bei Verlassen von cmbKdSuchen wird dieses Makro ein zweites Mal aufgerufen, _
    und zwar vom Makro "DatenFuerUf" in der 5.-letzten Zeile " .cmbTitel.SetFocus ". _
    Und beim zweiten Durchgang hat "Found" keine Wert mehr und es kommt ein Fehler. _
    Das wird mit der Booleschen Variablen "bolSperren" unterbunden. _
    Sie wird gesetzt am Anfang und am Ende des Makros " DatenFuerUf " _
    und hier ausgewertet:
    'If bolSperren Then Exit Sub
    'Call AenderungenEintragen
    
'KK Es könnte jetzt noch der fast unwahrscheinliche, theoretische Fall eintreten, _
    dass in der Combobox ein Eintrag ausgewählt wird, dieser dann wieder gelöscht wird _
    und dann die Box verlassen wird, ohne Eintrag. Dann hätte Found keinen Wert _
    und es gäbe eine Fehlermeldung. _
    Und nur für diesen einen Fall ist noch die On Error-Anweisung nötig:
    'On Error Resume Next
    'Found.Offset(0, 2).Select
    'On Error GoTo 0
    
    'Call KdDatenEinlesen
    'Call DatenFuerUf

End Sub 
     Code eingefügt mit Syntaxhighlighter 1.16



Probiers nochmal.

Gruss Rainer
Anzeige
IsNull: damit geht's !!!
11.12.2003 00:22:38
Franz W.
Hallo Rainer,

sorry mit den Bildern, hab ich nicht dran gedacht.

Aber: ES GEHT!! "IsNull" ist das, was ich gesucht habe und nicht gewusst/gefunden habe. Noch was dazu gelernt heute nacht :-))). Ganz herzlichen Dank dafür!! Ist wohl sauberer als meine Lösung, direkter, werde ich einsetzen, toll!!

(Bei der Mühe und der fortgeschrittenen Stunde betrachte ich den "Gutschein" als eingelöst :-))))))))))))

Noch mal vielen Dank und Gute Nacht
Franz
Merci :-))) Geschlossen. o.T.
11.12.2003 00:24:40
Ramses
...
LÖSUNG !!!
11.12.2003 00:15:08
Franz W.
Hallo Rainer,

weiß nicht ob das die schönste Lösung ist, aber so geht's:

If Format(cmbKdSuchen, "000") = "" Then Exit Sub

Was hältst Du davon??

Grüße
Franz
Anzeige
AW: Combobox = "Null"
10.12.2003 23:20:22
K.Rola
Hallo,

ich habe den Verdacht, dir ist die Reihenfolge der Ereignisse nicht so
ganz klar?

AfterUpdate tritt nach BeforeUpdate und vor Exit auf, läßt sich aber
n i c h t abbrechen(siehe auch Hilfe dazu).

Nutz dazu das BeforeUpdate- Ereignis:

if cbo1 = "" then Cancel = true

Gruß K.Rola
AW: Combobox = "Null"
10.12.2003 23:27:04
Franz W.
Hallo K.Rola,

vielen Dank für Deine Antwort. Bevor ich das ganz verstanden habe, hier kurz mein Problem:


Private Sub cmbKdSuchen_AfterUpdate()
Dim KdNrUf$
Dim Found As Range
Stop
If Me.cmbKdSuchen = "" Then Exit Sub
KdNrUf = Format(cmbKdSuchen, "000")
Set Found = Range("B4:B75").Find(KdNrUf, LookIn:=xlValues)
If bolSperren Then Exit Sub
Call AenderungenEintragen
'    On Error Resume Next
Found.Offset(0, 2).Select
'    On Error GoTo 0
Call KdDatenEinlesen
Call DatenFuerUf
End Sub


Wenn ich die Box verlassen ohne einen Eintrag, ist Found = Nothing und es kommt eine Fehlermeldung. Um diese nicht mit On-Error umgehen zu müssen (was klappen würde), wollte ich das mit obiger Anweisung " If Me.cmbKdSuchen = "" Then Exit Sub " abfangen. Und genau das geht aber nicht. Auch wenn die Box "leer" ist, also keinen Eintrag zeigt, wird "Exit Sub" übergangen. Im Lokal-Fenster steht bei cmbKdSuchen.Value: Null, Typ: Variant/Null. Ich komme nicht weiter.

Beste Grüße
Franz
Anzeige
AW: Combobox = "Null"
11.12.2003 16:13:23
q
Hallo,
ich weiss nicht ob es dir hilft. Um den Beispiel zu testen, bruachst du UserForm mit Button cmdTest und mehreren Combos, wo eine davon heisst cboNichtLeer. Gruss q

Option Explicit


Private Sub cmdTest_Click()
Dim vComboList As Variant
Dim ctl As Control
For Each ctl In Me.Controls
If (TypeName(ctl) = "ComboBox") Then
vComboList = ctl.List
' Null Value bedeutet, das Variant enthalt keine gultige Daten
If (IsNull(vComboList) = True) Then
MsgBox "Combo " & ctl.Name & " ist leer."
Else
MsgBox "Combo " & ctl.Name & " ist NICHT leer."
End If
End If
Next ctl
End Sub



Private Sub UserForm_Initialize()
With Me.cboNichtLeer
.AddItem "A"
.AddItem "B"
.AddItem "C"
End With
End Sub

AW: Combobox = "Null"
11.12.2003 17:03:10
Franz W.
Danke, werd ich mir auf jeden Fall anschauen.

Beste Grüße
franz

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige