如果数字不在其他工作表的范围内,则出现错误日志

时间:2016-09-28 13:47:14

标签: excel vba excel-vba

我在编写VBA宏时遇到了一些麻烦,它执行以下操作:

在单元格C3中,我将进入成本中心,在单元格D3中将输入成本类型编号。

现在我要做的是显示弹出的错误信息,当C3中的值以3开头且D3中的值(总是7个数字)不在单元格AG2:AG23中列出的数字范围内时另一个名为元数据的工作表。

到目前为止,我的代码如下:

'Do While...

    '...

    If Left(Cells(CLine, 3).Value, 1) = "3" Then

        If Cells(CLine, 5).Value = blank Then
            If SLine = 1 Then
                ErrLog = ErrLog & "Costcenter in Line" & " " & Dline
                SLine = SLine + 1
            Else
                ErrLog = ErrLog & ", " & Dline
            End If
        End If

    End If

    Dline = Dline + 10
    CLine = CLine + 1

Loop

If SLine > 1 Then
    ErrLog = ErrLog & " requires WBS Element." & vbCrLf
End If

现在,如果我像第If Left(Cells(CLine, 3).Value, 1) = "3" and Left(Cells(CLine, 4).Value, 7) <> "1000000" Then这样展开第一行,它就可以正常工作,只有当在单元格D3中输入另一个超过1000000的值时,我的错误信息才会出现。

但是一旦我开始使用&lt; 1000000和&gt; 2000000之类的东西(为了在使用1000000和2000000之间的数字时没有收到消息),我会在出错后收到错误。

有人可以帮助我并告诉我如何以简单的方式在我的代码的第一行中包含“Between”,这样一旦输入介于10000000和2000000之间的数字,我就不会收到任何错误吗?

1 个答案:

答案 0 :(得分:0)

首先,您可以定义要检查单元格D3是否位于以下值中的范围:

Dim Rng     As Range

' set-up check range (modify Sheet name and Range to your needs)
Set Rng = Sheets("metadata").Range("AG2:AG23")

其次,当Cell C3以“3”开头,并且Cell D3值超出该范围时显示错误消息,请使用以下行:

  If Left(Cells(CLine, 3).Value, 1) = "3" And _
    (Cells(CLine, 4).Value < WorksheetFunction.Min(Rng) Or _
    Cells(CLine, 4).Value > WorksheetFunction.Max(Rng)) Then

第三,要检查某个单元格是否为空(或为空),请更改您的行:

If Cells(CLine, 5).Value = blank Then

致:

If IsEmpty(Cells(CLine, 5)) Then