[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBAについて』(とほほ)
VBAを勉強開始して間もない初心者です。 合計値を出すVBAを作ったのですが、上手くいかない 原因が分かりません。 上手くいった場合のVBAを上記に、上手くいかない VBAを下記に記載します。 なぜ上手くいかないか教えていただければ助かります。
Sub gouke() Dim i As Integer Dim g As Integer Dim t As Integer Dim n As Integer
With Worksheets("sheet3")
n = .Cells(Rows.Count, "b").End(xlUp).Row 'エンド位置 g = 0 t = 0
For i = 2 To n t = Worksheets("sheet3").Cells(i, "B").Value g = g + t Next .Cells("2", "D").Value = g End With End Sub
【以下上手くいかないコード】
Dim i As Integer, n As Integer, t As Integer, g As Integer With Worksheets("sheet3") For i = 2 To n n = Cells(Rows.Count, "b").End(xlUp).Row t = Worksheets("sheet3").Cells(i, "B").Value g = g + t Next End With End Sub
n = Cells(Rows.Count, "b").End(xlUp).Row は For の前にやらないと意味がないですね。 そこを変えてどうでしょうか。
合計が65536 超えるとエラーになるとか、小数は切り捨てられるとか、 セルが文字だったらどうなるかとか、いろいろ気になるところはありますけれど。 (Mook)
以下がうまくいかないコードですね!! Sub test() Dim i As Integer, n As Integer, t As Integer, g As Integer With Worksheets("sheet3") For i = 2 To n n = Cells(Rows.Count, "b").End(xlUp).Row t = Worksheets("sheet3").Cells(i, "B").Value g = g + t Next End With End Sub
問題は、ここ For i = 2 To n この時点で nには、0が入っています。
For i=start to end
という書式で start>end の場合、ループ処理は行われず、Nextの次に制御が移るからです。
Sub test1() Dim i As Long For i = 1 To 1 MsgBox i & "回目処理" Next End Sub Sub test2() Dim i As Long For i = 1 To 0 MsgBox i & "回目処理" Next End Sub
上記のtest1,test2の結果の違いで確認して下さい
ichinose
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.