dポイントプレゼントキャンペーン実施中!

VBAで変数に関数式の結果をセットする場合の記述でご教示ください。

使用する関数としては
=IF(CountIf("A:A", "E5"), "×", "○")
これをVBAで変数にセットする場合

Judge_1 = Application.IF(CountIf("A:A", "E5"), "×", "○")

として記述していますが、CouiIfの箇所でコンパイルエラーが出ます。
【Sub または Functionが定義されていません。】

IFとCountIfの2つの関数があるのが原因かな?とも思いますが、
このような場合の正しい記載方法はどのようにするのでしょうか?

A 回答 (2件)

WorksheetFunctionと言いますが,どんな関数でもあるワケじゃありません。


たとえばワークシート関数のIFはありません。オブジェクトブラウザでWorksheetFunctionを調べ,そこに並んでいるヤツが使えます。
またCountifはありますがこんな具合に使います。

Judge_1 = iif(application.worksheetfunction.countif(worksheets("シート名").range("A:A"), worksheets("シート名").range("E5"))>0, "×", "○")



#思いつきでテキトーやっても時間の無駄ですから,一渡りの参考資料は見るようにしましょう。通常はVBAのヘルプだけで70%ぐらいの事は調べが付きます。
    • good
    • 0
この回答へのお礼

遅くなりました。

すごい!こういう使い方をするんだ!!

いっぱつOKでした。
丁寧、敏速な対応をありがとうございました。

お礼日時:2011/03/08 15:00

(1)VBAで使える関数:IFはエクセル関数にもちろんありますが、VBAのIFステートメントにあります。

こちらを使えば仕舞いの話で、VBAではApplicationをIFにつけてもIFの役割をさせるのは、ダメではないかな。
式をセルに埋め込むのなら使えると思うが、結果はセルの値としてセットされるので、それを改めてみないといけない。
(2)使い方:それとエクセルと同形の関数を使うとき、セル範囲はRangeをつけないとだめだったりするから、慎重に勉強のこと。

Sub test01()
MsgBox Application.CountIf(Range("A1:A10"), "a")
End Sub
ーー
Sub test02()
If Application.CountIf(Range("A1:A10"), "a") > 0 Then
MsgBox "aのセル有り"
Else
MsgBox "aのセルなし"
End If
End Sub
    • good
    • 0
この回答へのお礼

ほんとここではみなさまの知恵で1つ1つ階段をあがることができます!
本当に感謝いたします。

ありがとうございました!!

お礼日時:2011/03/08 18:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A