いつもお世話になってます。マクロ初心者なのでよろしくお願いします。
ひょんなことからマクロをすることになり、いろいろ探してやっているのですが、どうしてもうまくいかないので、ご教授願います。
内容は for next の使い方なのですが、
やりたいことは、D列にあるデータとE列にあるデータを足して、D列に表示させるのですが、
行数が300行となるので、for nextを使おうと考えました。
Dim i As Long
For i = 1 To 300
Worksheets("sheet1").cell(5 + i, 4) = Worksheets("sheet1").cell(5 + i, 4).Value + Worksheets("sheet1").cell(5 + i, 5).Value
Next i
と、マクロを入れたら、実行時エラー’438’ オブジェクトは、このプロパティまたはメッソドをサポートしていません。
と、表示されます。
どのように書き込んだらよろしいでしょうか。よろしくお願いします。
また、もっと簡単な書き方があればお願いします。
こんにちは!
>cell(5 + i, 4)
としている部分すべてを
>Cells(5 + i, 4)
のように「s」を付けてください。
>もっと簡単な書き方があればお願いします
というコトですので、
結局6行目~305行目までをループさせたいというコトですので、
Dim i As Long
For i = 6 To 305
With Worksheets("Sheet1")
.Cells(i, "D") = .Cells(i, "D") + .Cells(i, "E")
End With
Next i
といった感じでも大丈夫だと思います。m(_ _)m
>やりたいことは、D列にあるデータとE列にあるデータを足して、D列に表示させる
マクロ以前に「エクセルの使い方」の知識があると,たとえば
sub macro1()
worksheets("Sheet1").range("E1:E300").copy
worksheets("Sheet1").range("D1").pastespecial paste:=xlpastevalues, operation:=xladd, skipblanks:=true
application.cutcopymode = false
end sub
といった具合で十分可能です。
#参考
for nextやfor to nextで一つずつ一つずつ対象セルを総ナメしてくのは「判りやすい」かもしれませんが,一番遅いマクロになります。可能な限り「ひとまとめに処理」できるエクセルの使い方で工夫します。
お礼
なんと、初歩的なミスですね。 ありがとうございます。 少しずつマクロを勉強しながら、いかに簡単に書くかということを最近意識するようになってきました。 また、お世話になるかもしれません。その時はよろしくお願いします。