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

Select Case wird nicht durch geführt

Select Case wird nicht durch geführt
13.06.2018 16:33:47
Guido
Hallo Ihr freundlichen Helfer,
habe mich entschlossen eine komplexere if-then-Prüfung mit Select-Case zu ersetzen. und verzweifle an folgendem Code und bitte Euch um Hilfe:
Private Sub selectFertigkeit()
Sheets("Artefaktfertigkeiten").Activate
For i = 1 To UBound(arrFert)
If arrFert(i, 2)  "Prüfung" Then
ActiveWindow.ScrollRow = i + 2
'ist fertigkeit eine voraussetzung?
Debug.Print arrFert(i, 1)
Debug.Print IsEmpty(arrFert(i, 10))
Debug.Print Columns(10).Find(arrFert(i, 1), LookIn:=xlValues, LookAt:=xlWhole) Is Nothing
Select Case arrFert(i, 1)
'1. Fertigkeit hat keine Voraussetzung und ist keine Voraussetzung -> listen
Case IsEmpty(arrFert(i, 10)) And _
Columns(10).Find(arrFert(i, 1), LookIn:=xlValues, LookAt:=xlWhole) Is Nothing ' lt.  _
Debug: Wahr
With Me.lbxFert
.AddItem arrFert(i, 1) 'Fertigkeit Name
.List(.ListCount - 1, 1) = arrFert(i, 2) 'Fertigkeit Bereich
.List(.ListCount - 1, 2) = arrFert(i, 3) 'Fertigkeit Kosten
End With
'2. Fertigkeit hat Voraussetzung, Vorausetzung muss gebunden sein -> listen
'3. Fertigkeit ist Voraussetzung, hat selber keine Voraussezung und nicht gebunden ->  _
listen
End Select
End If
Next i
End Sub
Die 2. Bedingung ist lt. debug.print = wahr, demnach müsste der Case ausgeführt werden, jedoch überspringt er die nachfolgende with-end-Anweisung.
Kann wer den Fehler finden?
Danke Euch
Guido

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Select Case wird nicht durch geführt
13.06.2018 16:44:17
Guido
Hallo nochmal,
beide debug-Prüfungen ergeben: wahr:
Debug.Print IsEmpty(arrFert(i, 10))
Debug.Print Columns(10).Find(arrFert(i, 1), LookIn:=xlValues, LookAt:=xlWhole) Is Nothing
Dann müsste die Case-Anweisung eigentlich ausgeführt werden - macht er aber nicht *kopfkratz* Wo liegt der Fehler?
Danke Euch
Guido
AW: Select Case wird nicht durch geführt
13.06.2018 16:59:02
Luschi
Hallo Guido,
Du hast die 'Select Case' Fallunterscheidung nicht verstanden, entscheidend ist:
das Ergebnis von 'Select Case arrFert(i, 1)'
Wenn im Array-Element nichts drin steht (also leer ist) dann so:
Case Empty
oder
Case ""
aber NIE: Case IsEmpty(arrFert(i, 10))
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Select Case wird nicht durch geführt
13.06.2018 16:53:01
Daniel
Hi
so wie du das schreibst, muss in
arrFert(i, 1)
das Ergebnis von
IsEmpty(arrFert(i, 10)) And Columns(10).Find(arrFert(i, 1), LookIn:=xlValues, LookAt:=xlWhole) Is Nothing
stehen, also TRUE oder FALSE.
das wird da aber nicht drin stehen, sondern was anderes.
ich würde bei diesen Bedingungen bei IF_THEN bleiben. Das scheint mir in diesem Fall günstiger, vorallem weil es ja auch nur einen Case-Fall gibt und nicht mehrer.
bei komplexen IF-Bedingungen kann man statt der AND-Verknüpfung auch mehrere IFs in einander schachteln, das ist dann auch oft übersichtlicher und beim Testen im Einzelstep einfacher zu kontrollieren:
If IsEmpty(arrFert(i, 10)) Then
if Worksheetfunction.countif(columns(10), arrFert(i, 1)) = 0 then
With Me.lbxFert
.AddItem arrFert(i, 1) 'Fertigkeit Name
.List(.ListCount - 1, 1) = arrFert(i, 2) 'Fertigkeit Bereich
.List(.ListCount - 1, 2) = arrFert(i, 3) 'Fertigkeit Kosten
End With
end if
end if
gruß Daniel
Anzeige
AW: Select Case wird nicht durch geführt
13.06.2018 17:33:43
Guido
Hallo Ihr,
der Zweck meiner Übung ist, dass arrFert(i, 1) in eine Listbox übernommen werden soll, wenn bestimmte Voraussetzungen erfüllt sind.
Sprich, wenn arrFert(i, 10) = Leer und der Wert aus arrFert(i, 1) in Spalte 10 Nicht vorkommt, dann soll arrFert(i, 1) aufgenommen werden.
Es gibt noch 2 weitere Varianten, die ebenfalls über die Aufnahme entscheiden. Der bisherige Code ist ein erster Entwicklungsstand.
Mit If-Then geht's auch, jedoch hatte ich die Hoffnung, dass Select Case hier Abhilfe schaffen kann. Vermutlich ist der Hinweis von Daniel der entscheidende Hinweis auf einen Denkfehler: ich teste vermutlich den falschen Wert.
Werde es später - zu Hause - noch einmal anders herum versuchen.
Danke vorerst
Guido
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige