プロが教えるわが家の防犯対策術!

添付表のB1からB6までの合計をB7に関数式で=SUM(B1:B6)としています。さらにB7の合計値から
A1からA6の数値を引いた値をA7で残高(関数式)として表示します。条件としてA1からA6の数値が全て空欄又は一部空欄の場合がある。又、B7も空欄の場合がある。
この場合のA7の処理コードを教えて下さい。

「B7の合計値を参照してA1からA6の数値」の質問画像

質問者からの補足コメント

  • 説明が悪くすみません。まず、A7に関数式を使用しません(例として入れたことが間違いでした。)その上で、①B列のみ関数で処理し、A列はVBAで処理したいと思ってます。A1~A6までは手入力です。②A7の残高はVBAで表示したい。(A7の関数式をVBAで)③A1~A6が0ならA7=B7としたい。④B7=“”又は0ならA7=0と表示させたい。よろしくお願いします。

    No.1の回答に寄せられた補足コメントです。 補足日時:2020/08/26 20:33
  • 説明が悪くすみません。まず、A7に関数式を使用しません(例として入れたことが間違いでした。)その上で、①B列のみ関数で処理し、A列はVBAで処理したいと思ってます。A1~A6までは手入力です。②A7の残高はVBAで表示したい。(A7の関数式をVBAで)③A1~A6が0ならA7=B7としたい。④B7=“”又は0ならA7=0と表示させたい。よろしくお願いします。

    No.2の回答に寄せられた補足コメントです。 補足日時:2020/08/26 20:34

A 回答 (4件)

こんにちは



すでに指摘があるように、わざわざ(自動でない)VBAを使用する意図がわかりませんが、「VBAで」とのご質問なので、そのままベタで

Sub Sample()
Range("A7").FormulaLocal = "=IF(B7="""","""",B7-SUM(A1:A6))"
Range("A7").Value = Range("A7").Value
End Sub

※ VBAを実行しないと、自動反映はされませんので。
この回答への補足あり
    • good
    • 0
この回答へのお礼

有り難う御座います。B7の関数値が0又はセルが空欄になつた場合、VBAで処理したA7のセル値を0になる様にしたい。
Warksheet_Chngeで動作するコードを教えて下さい。

お礼日時:2020/08/26 21:14

No2です



>勉強のため、どうしてもVBAを試行したかったのです。
では、勉強しましょう。

幸いにもネットにはエクセルVBAに関する情報が溢れています。
検索してみる気さえあれば、いくらでも情報やサンプルは手に入ることでしょう。
(溢れすぎているのが問題と言えば問題かも…)
「わからないこと」を教えてもらうのは恥ずかしい事ではありませんし、それを積み重ねて勉強してゆくことになりますが、通常は、回答を貰うことを勉強とは言いません。

また、No2はご質問の結果を得られるコード(質問文に明示されていない部分は勝手に想定)ではありますが、あくまでもひとつの例であって、考え方や方法は他にもたくさんあるはずです。
仮に、考え方が同じであっても、コード化すると十人十色になります。

ご参考までに、MSDNのリファレンスサイトを紹介しておきます。
MSが運営しているサイトなので、情報としては(国内では)確かかと。
(自動翻訳だったりすることもあるので、原文の方がより正確だとは思いますが)
https://docs.microsoft.com/ja-jp/office/vba/api/ …
    • good
    • 0
この回答へのお礼

有り難う御座いました。今後の参考にさせて頂きます。

お礼日時:2020/08/27 11:14

まだ、やりたい事が分かりません。



>A7に関数式を使用しません

式を使用すれば、やりたい事が実現します。
(予め?)手入力するか、VBAで入力(又は計算結果)を書き出すかの違いです。
何故、計算式を手入力しておくのはダメなんですか?

1.2.は、計算結果を求めることが目的ではなく、
勉強のため(?)に、VBAを使ってみたいと言うことですか?
であれば、No2さんの回答を参考にして、各命令を勉強してください。
3. 先に示された計算式でそうなります。
4. IF 分を使えば、実現します。
    • good
    • 0
この回答へのお礼

有り難う御座います。ご指摘のとおり、勉強のため、どうしてもVBAを試行したかったのです。ご指導に従いN02での回答を参考にします。

お礼日時:2020/08/27 06:32

うーん、やりたい事が今一分かりません。



A1~A6に空白が有っても、
=B7-(A1+A2+A3+A4+A5+A6) の式は正しい計算を行います。
 上記の式は、=B7-SUM(A1:A6)と書くべきでしょうが。

また、B7にその式が書かれているなら、空白にはなりません。
借りに、式が書かれておらず、空白になった場合でもA7の式では、
B7はゼロとして扱われ、エラーにはなりません。

#B7に式が書かれていないことをVBAでチェックするの?
VBAでなくても関数でチェックできます。

結局何がしたいか分からないです。
この回答への補足あり
    • good
    • 0
この回答へのお礼

有り難う御座います。B7の関数値が0又はセルが空欄になつた場合、VBAで処理したA7のセル値を0になる様にしたい。
Warksheet_Chngeで動作するコードを教えて下さい。

お礼日時:2020/08/26 21:14

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