Как бы я проверить, если строка списка пуста - PullRequest
2 голосов
/ 14 января 2020

Я пытаюсь написать оператор IF в VBA, чтобы определить, пуст ли первый столбец в строке списка. Если строка пуста, я хочу отобразить окно сообщения. если строка не пуста, то строка сохраняется в памяти.

Пока мой код:

Private Sub RiskLogReviewListBox_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
   With RiskLogReviewListBox
      If IsNull(Me.RiskLogReviewListBox, 0, 0) Then
         MsgBox "Item is not a Valid Entry"
      Else
         str1$ = .List(.ListIndex, 0)
         str2$ = .List(.ListIndex, 1)
         str3$ = .List(.ListIndex, 2)
         str4$ = .List(.ListIndex, 3)
         str5$ = .List(.ListIndex, 4)
         str6$ = .List(.ListIndex, 5)
         str7$ = .List(.ListIndex, 6)
         str8$ = .List(.ListIndex, 7)
         str9$ = .List(.ListIndex, 8)
         str10$ = .List(.ListIndex, 9)
   End With
   End If

   Unload Me

   RiskRecordEditForm.Show
End Sub

1 Ответ

1 голос
/ 14 января 2020

определяет, является ли первый столбец вдоль строки списка пустым.

Вы можете использовать Len() и Trim(), чтобы проверить, находится ли первый столбец вдоль строки список пуст.

Это то, что вы пытаетесь?

Option Explicit

'~~> Add sample data
Private Sub CommandButton1_Click()
    With RiskLogReviewListBox
        .AddItem
        .List(UBound(.List), 0) = "aa"
        .List(UBound(.List), 1) = "bb"

        .AddItem
        .List(UBound(.List), 0) = "cc"
        .List(UBound(.List), 1) = "" '<~~ Empty
    End With
End Sub

Private Sub RiskLogReviewListBox_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    If RiskLogReviewListBox.ListIndex = -1 Then Exit Sub

    If Len(Trim(RiskLogReviewListBox.List(RiskLogReviewListBox.ListIndex, 1))) = 0 Then _
    MsgBox "First Column of selected row is empty"
End Sub

enter image description here

Кстати, у вас есть End With до End If. Может быть, опечатка?

ПРИМЕЧАНИЕ : я рассматриваю второй столбец как первый столбец. Если вы имели в виду первый столбец, как в первом столбце, то вместо 1 используйте 0. Например, RiskLogReviewListBox.List(RiskLogReviewListBox.ListIndex, 0)

Option Explicit

'~~> Add sample data
Private Sub CommandButton1_Click()
    With RiskLogReviewListBox
        .AddItem
        .List(UBound(.List), 0) = "aa"
        .List(UBound(.List), 1) = "bb"

        .AddItem
        .List(UBound(.List), 0) = "" '<~~ Empty
        .List(UBound(.List), 1) = "cc" 
    End With
End Sub

Private Sub RiskLogReviewListBox_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    If RiskLogReviewListBox.ListIndex = -1 Then Exit Sub

    If Len(Trim(RiskLogReviewListBox.List(RiskLogReviewListBox.ListIndex, 0))) = 0 Then _
    MsgBox "First Column of selected row is empty"
End Sub

enter image description here

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