[[20130205183212]] 『VBAについて』(とほほ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『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.