2016-08-05 76 views
0

需要在添加if語句來控制什麼,我在我的代碼循環,通過這樣已經開始與這條線:類型不匹配應用定義範圍WorksheetFunction

If Application.WorksheetFunction.Or(checkrange.value = 0, checkrange.value = "") = "False" Then 

我已經定義checkrange爲以下

Set checkrange = finwb.Sheets("Strt_Dash_Final").Range(Cells((cfcll.Row + 1), q), Cells((cfcll.Row + (cfcll.value - 2)), q)) 

我的代碼在運行時錯誤13類型不匹配的工作表函數行停止。陳述的目的是檢查範圍是否只包含0或空格。公式OR(A1:A5 = 0,A1:A5 =「」)在Excel中工作正常,所以我假設它不接受我的範圍在其當前的形式(注意:我試圖從checkrange.value中刪除.value,但這也沒有工作)

任何幫助,一如既往,非常感謝!

編輯:Dim checkrange As range將其定義爲一個範圍

+0

什麼是checkrange定義爲/套至? –

+0

啊對不起,忘了包括,我有Dim checkrange作爲範圍 – IIJHFII

+1

你不能使用'='運算符來比較多個單元格範圍到一個值,就像你在這裏試圖做的那樣。你應該使用'Worksheetfunction.Countif'來代替。另外,您的「單元格」引用不適合您的範圍分配中的工作表。遲早會導致你的問題。 – Rory

回答

1

沒有必要是在If statement使用WorksheetFunction

If checkrange.value = 0 Or checkrange.value = "" Then 

因爲你的檢查Range不是Cell你必須使用​​或CountIf

這裏是​​一個例子:我想這應該是

If Application.WorksheetFunction.CountA(checkrange) = 0 Then 
+0

感謝您的回覆,只是嘗試過,但仍然得到類型不匹配:? – IIJHFII

+0

@IIJHFII請參閱更新 – DragonSamu

0

If Application.WorksheetFunction.Or(checkrange.value = 0, checkrange.value = "") = False Then 

tho呃這裏沒有必要使用工作表函數。試一試,讓我們看看會發生什麼。

+0

感謝您的答覆,只是嘗試過,但仍然得到類型不匹配:? – IIJHFII

0

數組公式OR(A1:A5 = 0,A1:A5 = "")檢查是否任何(1或更多)的範圍內的單元格爲0或「」。要檢查是否有任何範圍內的細胞是 0或「」那麼你可以使用這個

If WorksheetFunction.CountIfs(checkrange, "<>0", checkrange, "<>") > 0 Then 
1

需要兩個獨立的COUNTIF聲明:

If Application.WorksheetFunction.Countif(checkrange, "0") + Application.WorksheetFunction.Countif(checkrange, "") = 0 Then