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

家計簿を作成中です。前の日にちの残高から収入をたし、支出を引き残高を計算したいのですが、
B列収入、C列支出、D列残高
Range("D3").Select
ActiveCell.FormulaR1C1 = "=R[-1]C+RC[-2]-RC[-1]"
Range("D4").Select
と言う計算式を"D3"などの数値ではなく変数など代入式をつかった式を教えてください。

A 回答 (5件)

こんにちは



 以下でいかがでしょうか?

Sub test()
Dim Rng As Range
Set Rng = Cells(Cells.Rows.Count, 4).End(xlUp).Offset(1)

If Intersect(Rng, Cells(2, 4)) Is Nothing Then
Rng.FormulaR1C1 = "=R[-1]C+RC[-2]-RC[-1]"
Else
Rng.FormulaR1C1 = "=RC[-2]-RC[-1]"
End If
End Sub

参考URL:http://www2.odn.ne.jp/excel/waza/macro.html#SEC17
    • good
    • 0
この回答へのお礼

回答ありがとうございます。うまく動きました。式の方も、簡潔でわかりやすかったです。ホームページの方も参考に見てみたいと思います。

お礼日時:2001/09/11 12:07

D列に =R[-1]C+RC[-2]-RC[-1] という式を、下へ向かって入力していきたいのなら、下記がつかえます。


For i = 3 to 10
 Cells(i,4).FormulaR1C1 = "=R[-1]C+RC[-2]-RC[-1]"
Next i

この例では10行目まで式をいれています。

この回答への補足

nishi6さんの補足とおなじです。宜しくお願いします。

補足日時:2001/09/10 15:51
    • good
    • 0

nishi6さんのSanshiki1と殆ど一緒です。


これの場合はCellsを使った書き方です。
Cellsの書式:Cells(行数,列数)
Range("D3") = Cells(3,4) 。。D3セルは3行目の4列目

Dim tRow As Integer '行数の変数名
For tRow = 3 To 33
Cells(tRow, 4) = Cells(tRow - 1, 4) + Cells(tRow, 2) - Cells(tRow, 3)
Next
(この例だと、D2に前月末日の残高が入っているのが前提です。)

家計簿の記入方法に拠るかもしれませんが、マクロより式を使った方が良いかもしれません。
式の例:=D2+B3-C3 (これをD3に入れて、オートフィルをする)
(この例だと、D2に前月末日の残高が入っているのが前提です。)

この回答への補足

nishi6さんの補足とおなじです。宜しくお願いします。

補足日時:2001/09/10 15:50
    • good
    • 0

マクロ記録をした算式と思いますが、下のSanshiki1は質問にある、R1C1参照形式で書いた例です。

マクロ記録で作られた、Selectなどは使用していません(削除しています)
xを変数にして、D3から31個(下に向かって)算式を書く例です。

2つ目の式は直接書くならこんな感じかなと作ったものです。
マクロを書く場合、セル操作については、Range、Cells、Offsetを理解すれば、たいていの記録したマクロは汎用に書き換えることができると思います。
ご参考に。

Sub Sanshiki1()
  Dim x As Integer
  For x = 3 To 33
    Range("D" & x).Formula = "=R" & (x - 1) & "C4" & "+R" & x & "C2" & "-R" & x & "C3"
  Next
End Sub

Sub Sanshiki2()
  Dim rg As Range
  For Each rg In Range("D3:D33")
    With rg
      .Formula = "=" & .Offset(-1, 0).Address & "+" & .Offset(0, -2).Address & "-" & .Offset(0, -1).Address
    End With
  Next
End Sub

この回答への補足

説明が少し足りなかったようです。A列の日付、例えばA2の9/1のD2残高x円から
コマンドボタンを押すと、B3の収入y円、C3の支出z円を計算し、D3残高x'円を出したいのですが、
コマンドボタンを押すたびD4、D5と計算したいのですが。
宜しくお願いします。

補足日時:2001/09/10 15:44
    • good
    • 0

こんばんは。



変数を使った代入式ということですが、

Sub test()

Dim strWork As String
Dim intI As Integer

For intI = 1 To 10
strWork = "D" & intI
Range(strWork).Select
'-----
'処理'
'-----
Next

End Sub

こういった感じでしょうか?

はずしていたら、ごめんなさい。

この回答への補足

ActiveCell.FormulaR1C1 = "=R[-1]C+RC[-2]-RC[-1]"
この式を組み込めばよいのでしょうか。うまく動かなかったもので・・・

補足日時:2001/09/10 15:43
    • good
    • 0

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