• ベストアンサー

VBAで関数式を入力させて行きたい。(ループ処理)

すみません。誰か教えて頂けませんか。 D列の3行目以下に、B列の値に2を足す関数式を記述したいと 思っています。 B列に値が入っていれば、式を入れていきたいのですが、 ループ処理で式を入れていく方法があれば、ご教授頂けませんでしょうか。 宜しくお願いします。 Last_Row = Cells(Rows.Count, 2).Row for a = 3 to Last_Row if Cells(a,2).Value <> "" then 'D列に式代入 End if Next a [D3].Formula = "=R3C2+2" [D4].Formula = "=R4C2+2" [D5].Formula = "=R5C2+2" [D6].Formula = "=R6C2+2" [D7].Formula = "=R7C2+2"

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

無駄にループを回す必要はありません。 sub macro1()  dim LastRow as long  lastrow = cells(rows.count, "B").end(xlup).row  with range("D3:D" & lastrow)   .formula = "=IF(B3="""","""",B3+2)"   .specialcells(xlcelltypeformulas, xltextvalues).clearcontents  end with end sub #実際には""のままほっぽいといて構わないなら、そのようにもっと簡素化してしまいます。 #参考 一応ご質問の直接の回答としては、次のようにできます。 sub macro2()  dim h as range  on error resume next  for each h in range("B:B").specialcells(xlcelltypeconstants, xlnumbers).areas   h.offset(0, 2).formular1c1 = "=RC[-2]+2"  next end sub または sub macro3()  dim h as range  on error resume next  for each h in range("B:B").specialcells(xlcellformulas, xlnumbers).areas   h.offset(0, 2).formular1c1 = "=RC[-2]+2"  next end sub

sabiro
質問者

お礼

keithin様 ありがとうございます。とても分かりやすく 助かりました。

関連するQ&A

専門家に質問してみよう