【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?

エクセルVBA初心者です。

test1 = .Range("H28") * .Range("H31") * .Range("H32") * .Range("H33") * .Range("H34") * .Range("H35") * .Range("H35")

と置いているのですが
例えば、H31が空欄の場合もあります。
そうしますと、乗算の結果が0になってしまうので、空欄を無視して答えを出したいです。

エクセルではPRODUCT関数を使っていたのですが
VBAですと、どのように記述してよいのか分かりませんでした。

アドバイスをいただけると幸いです。

A 回答 (2件)

 WorksheetFunction プロパティを利用して、VBA上でPRODUCT関数を動作させると良いと思います。



test1 = WorksheetFunction.Product(.Range("H28"), .Range("H31:H35"), .Range("H35"))

【参考URL】
 よねさんのWordとExcelの小部屋 > Excel VBA入門 > 17.ワークシート関数を利用する > ワークシート関数を利用する(WorksheetFunction)
  http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/v …
    • good
    • 0
この回答へのお礼

うまくできました!
ありがとうございます。

参考URLが、VBA初心者の私には他にも役立つ内容が
色々とありましたので
ベストアンサーとさせていただきました。
これからも少しずつ勉強していきたいと思います。

お礼日時:2014/01/14 23:24

こんばんは!


質問のセル範囲の最後部分
>* .Range("H35") * .Range("H35")

>* .Range("H35") * .Range("H36")
だとして・・・
色々やり方はあると思いますが、VBAでもそのままPRODUCT関数が使用できますので、

Sub Sample1()
Dim myRange As Range
Set myRange = Union(Range("H28"), Range("H31:H36"))
MsgBox WorksheetFunction.Product(myRange)
End Sub

※ メッセージボックスに表示させているだけです。
みたいな感じではどうでしょうか?m(_ _)m
    • good
    • 0
この回答へのお礼

早々のご回答ありがとうございます!
ご指摘の通り* .Range("H35") * .Range("H36")が正解です。お恥ずかしい記述ミスをしてしまいました(苦笑)

うまくできました。ありがとうございます。

お礼日時:2014/01/14 23:20

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


おすすめ情報