重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

Sum = Application.Subtotal(9, Range("b2:b10"))
Range("d1").Value = Sum


Excelの関数だと抽出すると合計の値が切り替わりますが
VBAでやると抽出した結果が変わりません。
よい方法ないでしょぅか。
  金額      金額 SubTotal
   1   1
   2 合計  1  エクセルの場合
   3      VBAで実行すると値に変化なし
   4
   5
   6
   7
   8
   9
合計

A 回答 (2件)

いつも、ボツにされていますので、期待はしていませんが……。



'① ユーザー定義関数にする

Function myCalc(Rng as Range)
Dim dSum As Variant
dSum = Application.Subtotal(9, rng)
myCalc = dSum
End Function

'②イベント型
同じシートのどこか、見えないところに、
=NOW()  とNOW関数をおき、見えないように、書式を ;;;
としておきます。

後は、Calculate イベントで計算させます。
なお、Sum は関数名ですから、dSum としておきます。
Application.Subtotal とするのですから、データ型は、Variant 型

'//
Private Sub Worksheet_Calculate()
Dim dSum As Variant
dSum = Application.Subtotal(9, Range("B2:B10"))
Range("D1").Value = dSum
End Sub
'補足:Dim dSum As Variant '本来は、Double型ですが、Worksheet関数は、Variant型にする
    • good
    • 1
この回答へのお礼

ありがとうござます

ユーザー定義関数これを
できるようになるといろいろ
幅が広がりそうです。

お礼日時:2018/05/02 11:40

VBAを実行しないと値は変わりません。


書いたVBA全体を晒してはいかがでしょう。
    • good
    • 0
この回答へのお礼

やはりそうでしたか
有難うこざいました。

お礼日時:2018/04/19 12:46

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