Один MsgBox, чтобы показать все проходы и неудачи - PullRequest
1 голос
/ 10 июня 2019

Я пытаюсь создать одно окно сообщения с пропусками и неудачами образцов.

data

Все диапазоны выше 0,24 являются ошибками, а ниже - проходами, которые показывают в одном окне проходы и неудачи с соответствующей выборкой #

Приведенный ниже код показывает поля один за другим и даже неправильно, некоторые пустые, а некоторые неправильные.

Можете ли вы помочь мне с этим, пожалуйста. Спасибо

Sub MsgB()
Dim x As Long
For x = 2 To 8
    If Sheet2.Range("B" & x).Value < 0.24 Then
       y = Sheet2.Range("A" & x).Value
      MsgBox "Pass: " & y
   Else
     MsgBox "Fail: " & y
   End If
Next

End Sub

Ответы [ 2 ]

0 голосов
/ 10 июня 2019

Вот как вы можете объединить все пропуски и сбои в одном окне сообщения, объединяя строки и предоставляя вывод только один раз:

Sub MsgB()

    Dim x As Long
    Dim passes As String, fails As String

    With Sheet2

        For x = 2 To 8
            If .Range("B" & x).Value < 0.24 Then
                passes = passes & ", " & .Range("A" & x)
            Else
                fails = fails & ", " & .Range("A" & x)
            End If
        Next x

    End With    

    MsgBox "Pass: " & Mid(passes, 3) & vbLf & "Fail: " & Mid(fails, 3)

End Sub
0 голосов
/ 10 июня 2019

Вы можете накапливать результаты в две строковые переменные, как показано ниже, и отображать результаты после завершения цикла.Кроме того, y устанавливается только в том случае, если значение меньше 0.24.Вам нужно установить y перед If.

Sub MsgB()
Dim x As Long
Dim pass as String
pass = ""
Dim fail as String
fail = ""
For x = 2 To 8
    y = Sheet2.Range("A" & x).Value
    If Sheet2.Range("B" & x).Value < 0.24 Then
        pass = pass & ", " & y
    Else
        fail = fail & ", " & y
    End If
Next
' Print pass and fail, removing the leading ", ".
pass = Right(pass, Len(pass) - 2)
fail = Right(fail, Len(fail) - 2)
MsgBox "Pass: " & pass & vbCrLf & "Fail: " & fail

End Sub

...