Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Select Case wird nicht durch geführt

Forumthread: 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
Anzeige

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
Anzeige
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
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige