2016-09-28 70 views
1

我有一些麻煩,寫我的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之間的數字時不會出錯?

+1

試圖縮進你的代碼中有一個'Loop'哪裏是'待辦事項While'或其他啓動陳述? –

+0

問題是我試圖擴展現有文件的公式。循環開始進一步,但是這是一大堆代碼。 我想要做的也許不會在VBA代碼中解釋它將會是以下檢查: 如果單元格C3中的值以3開頭,並且單元格D3中的值不在單元格AG2:AG23的範圍內工作表元數據,則出現錯誤消息「請輸入WBS元素」 – Claudia

+0

D列中的值是否被格式化爲數字? Id是,沒有用'Left(Cells(CLine,4).Value,7)<>「1000000」'只需使用'Cells(CLine,4).Value <> 1000000'或'Cells(CLine,4 ).Value> 1000000' –

回答

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") 

其次,當小區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 
+0

這很棒,似乎部分工作。當我輸入一個數字小於8000000的3或4的數字時,它確實給我帶來了錯誤,但是如果我輸入的數字高於範圍內的最大值,它仍然不會給我錯誤,因爲我很奇怪確定你的代碼應該工作 – Claudia

+0

哦,我剛剛看到它只是給了我另一個錯誤信息,從代碼的更深層次...我將不得不檢查爲什麼這不起作用...我還有一個其他問題,我發現了與新的錯誤...我無法將成本類型數字格式化爲數字,因爲如果我這樣做,Vlookup將無法工作...因此,有文本,我可能應該檢查代碼,如果該值在我的範圍內,但那麼最小/最大值東西不行,對吧? – Claudia

+0

它的工作原理!由於我自己的愚蠢,它的拳頭沒有。我甚至不能複製/過去:-)可能一直在處理這個文件,並且製作了兩個「和」而不是一個「和」一個「或」像你一樣......非常感謝你的幫助! – Claudia