• ベストアンサー

Excel マクロの構文

次のマクロを記入したいのですが、うまくいきません 教えてください。 セルの値は5桁の整数です セル"D2"の値 - セル"A1"の値 が -30以下であれば セル"E2"に セル"D2"の値を表示 そうでないときは 空白で表示 この計算を セル"D12" - セル"A11" 結果を セル"E12" セル"D22" - セル"A21" 結果を セル"E22" のように10行とびごとに        セル"D102" - セル"A101" 結果を セル"E102" まで10回繰り返し計算したいのですがうまくいきません 何方か、このマクロの記入を教えてください お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

こんな感じでしょうか? Sub test() Dim ofs As Integer For ofs = 0 To 100 Step 10 If Range("D2").Offset(ofs) - Range("A1").Offset(ofs) <= -30 Then Range("E2").Offset(ofs) = Range("D2").Offset(ofs) Else Range("E2").Offset(ofs) = "a" End If Next End Sub

17gawa
質問者

お礼

hara-hara3 様 早々にご回答いただきありがとうございました。 早速マクロを試してみました。 完璧でした。ありがとうございました。 Offsetプロパテイーを使う発想はありませんでした。 他の回答者はValueプロパティーを使った回答でした。 私もそのように考えていました。 初心者なので、これからも質問すると思いますので よろしくご指導お願いします。 17gawa より

その他の回答 (2)

回答No.3

Sub test() Dim i As Integer For i = 0 To 100 Step 10 If Cells(2 + i, 4) - Cells(1 + i, 1) <= -30 Then Cells(2 + i, 5).Value = Cells(2 + i, 4) - Cells(1 + i, 1) Else Cells(2 + i, 5).Value = "" End If Next i End Sub

17gawa
質問者

お礼

winarrow07様 早速ご回答くださいましてありがとうございました。 構文の組立やCellsの使い方など大変勉強になりました 初心者なのでねこれからも質問すると思いますので ご指導くださいますようお願いいたします。 ありがとうございました。

  • myRange
  • ベストアンサー率71% (339/472)
回答No.2

方法はいくつかありますが、ひとつ。 '------------------------------------------------- Sub Test()  Dim R As Long  Dim i As Integer  For i = 0 To 100 Step 10    R = i + 2    If (Cells(R, "D").Value - Cells(R, "A")) <= -30 Then      Cells(R, "E").Value = Cells(R, "D").Value    Else      Cells(R, "E").Value = "a"    End If  Next i End Sub '------------------------------------ 変数Rを使わない場合は R = i + 2 を省き Cells(R,  のRを i+2 とすることもできます。 要するにコードの書き方は色々あるということです。 が、なるべく可読性の高いものにした方がいいでしょう。 以上です。  

17gawa
質問者

お礼

myRange 様 早速ご回答くださいましてありがとうございます。 変数の使い方とか、Cellsの使い方など大変勉強になりました 初心者なので、これからも質問することがあると思いますが ご指導くださいますようお願いいたします。 ありがとうございました。

関連するQ&A