2017-10-17 380 views
0

名前のあるセルの範囲を検索して、ゼロより大きい数値を含むセルがあるかどうかを調べようとしています。エラー1004:CountIfプロパティを取得できません

Dim YTDclauses As Boolean 
Dim ytdrng As Range 

Set ytdrng = Worksheets("Sheet1").Range("z1AY:z1BB,z1BG:z1BJ") 

'Employer 1 
If Sheet1.[z1AG] = "No" And WorksheetFunction.CountIf(ytdrng, ">0") = 0 Then 
    MsgBox "Works!" 
Else 
    MsgBox "Does Not Work" 
End If 

私は戻って、「ファイル名を指定して実行時エラー 『1004』:WorksheetFunctionクラスのCOUNTIFSプロパティを取得できません」などのエラーを取得しています:ここで私は、現在持っているコードです。他の質問を見ると、ytdrngの設定方法に構文エラーがあるかもしれないと思いますが、別の方法で名前を付ける方法は多々あります。どんな助けもありがとう、ありがとう!

注:Sheet1の名前は "Main Checklist"です。また、ytdrngの設定でこれを試しましたが、同じエラーが発生しました。

+1

これはオブジェクト 'WorksheetFunction'に' CountIf'メソッド/プロパティがないことを意味します。つまり、 'WorksheetFunction'はVBAが知っているオブジェクトではありません....あなたは' application .worksheetfunction.countif' – jsotola

+0

「アプリケーション」を追加しましたが、同じエラーが発生しています。 – Kim

+3

切断された範囲でCOUNTIFを使用することはできません。 –

答えて

1

@ScottCranerに記載されているように、分割範囲でcountifを実行することはできません。あなたは範囲内の各セルをループでcountifを実装するために、わずかにルーチンを変更することができます。

Dim YTDclauses As Boolean 
Dim ytdrng As Range 
Dim SRCountif As Long 
Dim cel As Object 

Set ytdrng = Worksheets("Sheet1").Range("z1AY:z1BB,z1BG:z1BJ") 

SRCountif = 0 
For Each cel In ytdrng.Cells 
    If cel.Value > 0 Then SRCountif = SRCountif + 1 
Next 

'Employer 1 
If Sheet1.[z1AG] = "No" And SRCountif = 0 Then 
    MsgBox "Works!" 
Else 
    MsgBox "Does Not Work" 
End If 

(変数SRCountifがS plit Rアンジュを意味することを意図するCOUNTIF)
。なお、値が数値0と比較されるので、Execは0より大きい任意のテキストを取ります。したがって、範囲内にテキストがある可能性がある場合は、テストを調整することができます。

+0

これは本当に良いアイデアです。私はちょうど2つの異なる範囲に分割してCountIfを別々にやりましたが、あなたの答えは私の概念知識に役立ちました。私はVBAをちょうど開始しています。ありがとう! – Kim

関連する問題