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

こんばんはB列に上からいくつか数字が入力されているとします。
そのB列の最下行にSUM関数を入力させるマクロを作成しましたが、
なぜか計算結果が0になってしまいます。
循環になってしまっていたので反復計算にチェックをいれ、再計算させましたが思ったような答えが出ませんでした。
この計算結果が0になってしまう現象はどうやっって回避したらよいのでしょうか。合計欄をC列に変えると正常になりますが、B列に計算式を入力させると0になってしまうのは、どうしてなのでしょうか。
下記のコードが悪いのでしょうか?宜しくお願い致します。
(※通常にExcel2003を使用して、単純にセルどうしの引き算をしていても答えが0になってしまう場合があります。これも同じ循環なのかも知れませんので、回避方法を教えてください。)

Sub SUM関数を入力する()

Dim r As Integer '最下行
Dim m As Integer '対象列
Dim a As Variant
Dim siki As Variant

Worksheets(3).Activate

r = Worksheets(3).Range("B65536").End(xlUp).Row + 1
Range("B" & Format(r)).Select

m = 2
'R1C1方式で選択
a = "R" & 2 & "C" & 2 & ":R" & r & "C" & 2
siki = "=sum(" & a & ")"
Range(Cells(r, m), Cells(r, m)).FormulaR1C1 = siki

End Sub

A 回答 (3件)

循環参照になるのは、Sum関数を適用している範囲("R2C2:R4C2")にその結果を出力するセル(Cells(4, 2))が含まれているからです。


計算範囲と出力先が重ならなくなるように変更する必要があります。


Sub SUM関数を入力する()

Dim r As Integer '最下行
Dim m As Integer '対象列
Dim a As Variant
Dim siki As Variant

Worksheets(3).Activate

r = Worksheets(3).Range("B65536").End(xlUp).Row + 1

'Range("B" & Format(r)).Select 'Formatの使い方が?

m = 2
'R1C1方式で選択
a = "R2C2:R" & r - 1 & "C2" 'rからr-1に変更

siki = "=sum(" & a & ")"
Cells(r, m).FormulaR1C1 = siki

End Sub

あと余計なことですが、この種の質問はデジタルライフ>ソフトウェア>MS OfficeかOffice系ソフトのほうで質問されたほうがより迅速で的確な回答が得られると思います。
    • good
    • 0
この回答へのお礼

循環とは何ぞや???から、カテゴリーの事まで
教えていただき、色々と勉強になりました。
変数もあまり使い慣れていないので、どこが間違っているのかすらにも
気がつきませんでいた。

なんだか、まだ頭が混乱していますが、
そのまま使用させていただきました。
ありがとうございました。

お礼日時:2009/11/09 22:38

a = "R" & 2 & "C" & 2 & ":R" & r & "C" & 2


rをr-1
コメントにrは最下行と書いてあるがrは最下行の次の行になっている
r = Worksheets(3).Range("B65536").End(xlUp).Row + 1 (ここ +1)

全体的に書き方がまどろっこしい
Range("B" & Format(r)).Select
は何の意味?なくても問題ないようですが

a = "R" & 2 & "C" & 2 & ":R" & r & "C" & 2
siki = "=sum(" & a & ")"
Range(Cells(r, m), Cells(r, m)).FormulaR1C1 = siki
は下記の1行ですむ
cells(r,m).FormulaR1C1 = "=sum(R2C2:R" & r-1 & "C2)"

循環参照になっているとわかったら自分が設定した式を見てみればどこが間違っているかわかると思うのですが。
    • good
    • 0

循環してるからでしょ。

 って自分でもわかっているんですよね。
いったい何がしたいのか、何を聞きたいのかがわかりません。

この回答への補足

すみません。
自分では、どこが悪いのか見つけられませんでした。

他にも通常のExcel使用時に答えが0になってしまったことがありました。
挿入した行に、売上げ合計欄と、原価合計欄のセルを引き算した式を入れたところ答えが0になってしまったようなことがあったのです。
これも今思えば恐らく、循環だったのかも知れないと思うのですが、
循環になってしまったらどうやって対処すればよいのでしょうか。
他のサイトを検索して、「反復計算にチェックをいれる」と良いとあったのですが、思ったとおりの答えが出ず、よく理解できていません。
計算式を変更することなく、通常にセル同士を引いてくれればよいだけなのですが、思ったとおりの結果を出すにはどうすれば良いのでしょうか。宜しくお願い致します。

補足日時:2009/10/06 22:12
    • good
    • 0

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