2016-07-06 3 views
0

退屈な作業をしているセルがあるPersonal Budgetワークシート用のマクロを作成しようとしています。私は次のようである私は、セルで行われた操作の背後にあるコーディング、トレースされた「マクロの記録」ボタンを使用して他のシートのデータを含むループを作成する

:あなたが見ることができるように

Sub calculo_otherex() 
' calculo_otherex Macro 
' Cálculo de otros gastos con tarjeta. 
' 
    ActiveCell.FormulaR1C1 = _ 
     "=Extractos!R[-89]C[-2]-('Home Expenses'!R[-105]C+'Home Expenses'!R[-60]C+'Home Expenses'!R[-16]C+Health!R[-105]C+Health!R[-67]C+Health!R[-29]C+Gifts!R[-99]C+'Daily Living'!R[-87]C+'Daily Living'!R[-29]C+'Daily Living'!R[20]C+'Daily Living'!R[59]C+'Daily Living'!R[102]C+Entertainment!R[-105]C+Entertainment!R[-67]C+Entertainment!R[-29]C+Entertainment!R[9]C+Transportation!R[-105]C)" 
    Range("H129").Select 

End Sub 

は、式Iは、他のシートを参照すると、特定の月(この場合は7月)と特定のサブセット(クレジットカードへの請求)の結果を反映する特定のセルに適用されます。

私がやりたいことは、ループを挿入してこの手順を何ヶ月も繰り返すことですが、問題は、Extractos!R [-89]の右側の7番目のセルごとにシートExtractosのデータが表示されることです] C [-2]」と表示され、次の列に表示されます。

どうすればこの問題を解決できますか? ありがとうございます。

+2

「for loop step」をグーグルで試してみてください。 – findwindow

答えて

0

R1C1を読むのは難しいので少し変更して、最初の月のセル参照にすべての "A1"リファレンスを置き換える必要があります。また、for loopは1年に12回~12ヶ月しかループしません。これを手動で変更することもできます。最後に、式はactivecellに書き込まれ、次の式は右の次のセル/列に書き込まれます。

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
'instead of using R1C1, use ranges with offsets - it's much easier to read :) '' 
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 

'I used "A1" as a placeholder. Replace this with the actual cell reference for the first month 
'The first loop will use the "A1" range. Then, the 2nd and following loops will move over 1 or 7 columns 
'i = move over 1 column 
'x = move over 7 columns 

For i = 0 To 11 'this will loop through 12 times 0-11 
    ActiveCell.Offset(0, i).Formula = _ 
     "=Extractos!" & Range("A1").Offset(0, x).Address _ 
     & "-('Home Expenses'!" & Range("A1").Offset(0, i).Address _ 
     & "+'Home Expenses'!" & Range("A1").Offset(0, i).Address _ 
     & "+'Home Expenses'!" & Range("A1").Offset(0, i).Address _ 
     & "+Health!" & Range("A1").Offset(0, i).Address _ 
     & "+Health!" & Range("A1").Offset(0, i).Address _ 
     & "+Health!" & Range("A1").Offset(0, i).Address _ 
     & "+Gifts!" & Range("A1").Offset(0, i).Address _ 
     & "+'Daily Living'!" & Range("A1").Offset(0, i).Address _ 
     & "+'Daily Living'!" & Range("A1").Offset(0, i).Address _ 
     & "+'Daily Living'!" & Range("A1").Offset(0, i).Address _ 
     & "+'Daily Living'!" & Range("A1").Offset(0, i).Address _ 
     & "+'Daily Living'!" & Range("A1").Offset(0, i).Address _ 
     & "+Entertainment!" & Range("A1").Offset(0, i).Address _ 
     & "+Entertainment!" & Range("A1").Offset(0, i).Address _ 
     & "+Entertainment!" & Range("A1").Offset(0, i).Address _ 
     & "+Entertainment!" & Range("A1").Offset(0, i).Address _ 
     & "+Transportation!" & Range("A1").Offset(0, i).Address & ")" 

    'add 7 to x variable 
    x = x + 7 

'loop and add 1 to i 
Next i 

'macro done, select H129 
Range("H129").Select 
+0

ありがとうございました。あなたがそれを構造化した方法は、私がこのマクロを完成させるために必要だったものです。しかし、私はそれを実行しようとすると結果は0であり、入力データが与えられた場合には0 <数値が返されます。なぜこのことが分かるのですか? Shure私はDim!Integerを使っていますか? – chrisro12

+0

あなたのコードをより完全にするには、 'Dim x as integer'を' i'に含めることができますが、必ずしも必要ではありません。あなたは実際のワークシートのセルに書かれた数式をチェックするだけです。マクロは正解です。数式を修正する必要があります:それだけです:)幸運! – CRUTER

+0

ええ、私は見つかりましたマクロの実行中に、マクロが選択されたセルだけでなく、数式に含まれていた別のセルでも実行された「循環参照」エラーが発生しました。助けは、本当に役立った。 – chrisro12

関連する問題