如何在此脚本中实现此布尔变量?

时间:2019-04-04 19:38:50

标签: excel vba

我有这个脚本,可以用一张纸填充另一张纸的原始数据。它具有特定的嵌套IF&Do While循环,而我还有最后一件事要添加。

当用户输入工作代码时,我想知道是否仅在rFound.Offset(, 2).Value =字符串Exempt的情况下才可以在输入框中添加内容?如果该列中的值表示“豁免”以外的任何内容,则不会触发msg框。我知道这可能是布尔变量,但是我不知道该在哪里放置它?

我希望消息框显示“此雇员是否应免税,他们应该.....”

脚本的其余部分:(如果发生任何混淆,我可以在行上注释)     子tgr()

Dim rFound As Range
Dim lJobCode As String
Dim lFLSA As String
Dim lEC As String
Dim sFirst As String
Dim sResults As String
Dim sh As Worksheet
Dim rw As Long
Dim matched As Boolean


lJobCode = Application.InputBox("Please provide a job code", "Job Code", Type:=2)
lEC = Application.InputBox("Please select EC Member", "EC Member", Type:=2)

If lJobCode = "False" Or lEC = "False" Then Exit Sub   'Pressed cancel

Set sh = Sheets("Sheet1")
rw = 8
With ThisWorkbook.Worksheets("Sheet2").Columns("A")
    Set rFound = .Find(lJobCode, .Cells(.Cells.Count), xlValues, xlWhole)

    If Not rFound Is Nothing Then
        sFirst = rFound.Address
        Do
            If ThisWorkbook.Worksheets("Sheet2").Cells(rFound.Row, 9).Value = lEC Then
                matched = True

                If rFound.Offset(, 2).Value = "Exempt" Then
                    MsgBox "Is this employee exempt, and do they work consistent hours after 8pm?"
                Else

                    sh.Cells(rw, 4) = rFound.Offset(, 0).Value
                    sh.Cells(rw, 5) = rFound.Offset(, 1).Value
                    sh.Cells(rw, 6) = rFound.Offset(, 3).Value
                    sh.Cells(rw, 7) = rFound.Offset(, 5).Value
                    sh.Cells(rw, 8) = rFound.Offset(, 6).Value
                    sh.Cells(rw, 9) = rFound.Offset(, 7).Value

                    rw = rw + 1
                End If
            End If
            Set rFound = .FindNext(rFound)
        Loop While rFound.Address <> sFirst

        If Not matched Then MsgBox "Job Code [" & lJobCode & "] found, but not eligible for EC Member"

    Else
        MsgBox "Job Code [" & lJobCode & "] not eligible."
    End If

End With

End Sub

1 个答案:

答案 0 :(得分:0)

发布建议作为答案,这样可以将其标记为“已回答”。

if rFound.Offset(, 2).Value = "Exempt" then userform1.load

或作为msgbox()

if rFound.Offset(, 2).Value = "Exempt" then msgbox("content")

编辑1:

如果您希望在matched = true时提取数据,然后又想弹出msgbox,请尝试以下位置:

If ThisWorkbook.Worksheets("Sheet2").Cells(rFound.Row, 9).Value = lEC Then
    matched = True
    sh.Cells(rw, 4) = rFound.Offset(, 0).Value
    sh.Cells(rw, 5) = rFound.Offset(, 1).Value
    sh.Cells(rw, 6) = rFound.Offset(, 3).Value
    sh.Cells(rw, 7) = rFound.Offset(, 5).Value
    sh.Cells(rw, 8) = rFound.Offset(, 6).Value
    sh.Cells(rw, 9) = rFound.Offset(, 7).Value
    If rFound.Offset(, 2).Value = "Exempt" AND z = 0 Then 
        MsgBox "Is this employee exempt, and do they work consistent hours after 8pm?"
        z = 1
    End if
    rw = rw + 1
End If