错误日志,如果数量不中的其他工作表
我有一些麻烦,写我的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
它工作正常,我的错误消息的第一行会只拿出当在单元格中输入超过100万的其他值D3。
但是,只要我开始使用诸如< 1000000和> 2000000之类的东西(为了在使用1000000和2000000之间的数字时不会收到消息),我会在出错后收到错误消息。
有人可以帮助我,告诉我如何在简单的方法中在代码的第一行中包含“之间”,以便在输入10000000和2000000之间的数字时不会出错?
首先,您可以定义要检查你的范围内。如果单元格D3是这样的数值内:
Dim Rng As Range
' set-up check range (modify Sheet name and Range to your needs)
Set Rng = Sheets("metadata").Range("AG2:AG23")
其次,当小区C3开始与“3”显示错误消息,细胞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
这很棒,似乎部分工作。当我输入一个数字小于8000000的3或4的数字时,它确实给我带来了错误,但是如果我输入的数字高于范围内的最大值,它仍然不会给我错误,因为我很奇怪确定你的代码应该工作 – Claudia
哦,我刚刚看到它只是给了我另一个错误信息,从代码的更深层次...我将不得不检查为什么这不起作用...我还有一个其他问题,我发现了与新的错误...我无法将成本类型数字格式化为数字,因为如果我这样做,Vlookup将无法工作...因此,有文本,我可能应该检查代码,如果该值在我的范围内,但那么最小/最大值东西不行,对吧? – Claudia
它的工作原理!由于我自己的愚蠢,它的拳头没有。我甚至不能复制/过去:-)可能一直在处理这个文件,并且制作了两个“和”而不是一个“和”一个“或”像你一样......非常感谢你的帮助! – Claudia
试图缩进你的代码中有一个'Loop'哪里是'待办事项While'或其他启动陈述? –
问题是我试图扩展现有文件的公式。循环开始进一步,但是这是一大堆代码。 我想要做的也许不会在VBA代码中解释它将会是以下检查: 如果单元格C3中的值以3开头,并且单元格D3中的值不在单元格AG2:AG23的范围内工作表元数据,则出现错误消息“请输入WBS元素” – Claudia
D列中的值是否被格式化为数字? Id是,没有用'Left(Cells(CLine,4).Value,7)“1000000”'只需使用'Cells(CLine,4).Value 1000000'或'Cells(CLine,4 ).Value> 1000000' –