Как использовать оператор case для исключения нескольких значений из строки? - PullRequest
0 голосов
/ 17 мая 2019

Я получаю некоторые значения из листа, который я отображаю в списке, как вы можете в верхней части скриншота (комнаты)

enter image description here

Я использую следующий код

ElseIf Left(sh.Cells(r, 8), 1) = "Y" Then ' <<< display all rooms that are working      
        .AddItem
        .List(lC, 0) = sh.Cells(r, 1)
        .List(lC, 1) = sh.Cells(r, 2)
        .List(lC, 2) = sh.Cells(r, 3)
        .List(lC, 3) = sh.Cells(r, 4)
        .List(lC, 4) = sh.Cells(r, 5)
        .List(lC, 5) = sh.Cells(r, 6)
        .List(lC, 6) = sh.Cells(r, 7)
        .List(lC, 7) = sh.Cells(r, 8)

        lC = lC + 1
    End Select          
End If

Однако я использую другой фрагмент кода, который возвращает комнаты, которые уже используются (в нижней части скриншота), в поле со списком.

Я пытаюсь исключить эти номера (4,7,6,2,1) из комнат в верхнем списке (комнаты)

Моя идея заключалась в том, чтобы поместить их в переменную с кавычками и запятыми, например,

roomsInUse = roomsInUse & Chr(34) & sh1.Cells(row, 23) & Chr(34) & ", "

затем удалите запятую

roomsinuseformatted = Left(roomsInUse, Len(roomsInUse) - 2)

Затем используйте регистр в моем коде выше, чтобы исключить показ номеров этих номеров, например,

ElseIf Left(sh.Cells(r, 8), 1) = "Y" Then ' <<< display all rooms that are working
    Select Case sh.Cells(r, 1)
    Case roomsinuseformatted 
      Me.lstRooms.AddItem "No Interviews"
      MsgBox ("test")
    Case Else
    'MsgBox (UsedRooms)

        .AddItem
        .List(lC, 0) = sh.Cells(r, 1)
        .List(lC, 1) = sh.Cells(r, 2)
        .List(lC, 2) = sh.Cells(r, 3)
        .List(lC, 3) = sh.Cells(r, 4)
        .List(lC, 4) = sh.Cells(r, 5)
        .List(lC, 5) = sh.Cells(r, 6)
        .List(lC, 6) = sh.Cells(r, 7)
        .List(lC, 7) = sh.Cells(r, 8)

        lC = lC + 1
    End Select   
End If

... но это не работает, я знаю, это выглядит неряшливо, и я уверен, что есть лучший способ сделать это - но не был уверен?

P.S. Select Case sh.Cells(r, 1) - номер комнаты из первого списка на скриншоте.

полная пастина: https://pastebin.com/QpTKR4V4

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...