Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


15053 / 76734 ←次へ | 前へ→

【67166】Re:任意の配列変数に格納された値を合計して表示したい。
回答  Hirofumi  - 10/11/12(金) 20:33 -

引用なし
パスワード
   こんなのでは

Option Explicit

Public Sub Sample_1()

  Dim i As Long
  Dim lngRows As Long
  Dim rngList As Range
  Dim a() As Variant
  Dim vntData() As Variant
  Dim vntResult As Variant
  Dim vntStart As Variant
  Dim vntEnd As Variant
  Dim strProm As String

  'Listの先頭セル位置を基準とする(先頭列の列見出しのセル位置)
  Set rngList = ActiveSheet.Range("A1")

  With rngList
    '行数の取得
    lngRows = .Offset(Rows.Count - .Row).End(xlUp).Row - .Row
    If lngRows <= 0 Then
      strProm = "データが有りません"
      GoTo Wayout
    End If
    'A、B列データを配列に取得
    vntData = .Offset(1).Resize(lngRows, 2).Value
    '数量×重量の配列を確保
    ReDim a(.Row + 1 To .Row + lngRows)
    '数量×重量を計算
    For i = 1 To lngRows
      a(i + .Row) = vntData(i, 1) * vntData(i, 2)
    Next i
  End With
  
  '集計開始行取得
  vntStart = Application.InputBox(Prompt:="集計開始行を入力して下さい", _
            Default:=LBound(a), Type:=1)
  If VarType(vntStart) = vbBoolean Then
    strProm = "マクロがキャンセルされました"
    GoTo Wayout
  Else
    '集計開始行が範囲外なら
    If vntStart < LBound(a) Or UBound(a) < vntStart Then
      strProm = "集計開始行が範囲から外れて居ます"
      GoTo Wayout
    End If
  End If
    
  '集計終了行取得
  vntEnd = Application.InputBox(Prompt:="集計終了行行を入力して下さい", _
            Default:=UBound(a), Type:=1)
  If VarType(vntEnd) = vbBoolean Then
    strProm = "マクロがキャンセルされました"
    GoTo Wayout
  Else
    '集計終了行が範囲外なら
    If vntEnd < LBound(a) Or UBound(a) < vntEnd Then
      strProm = "集計終了行が範囲から外れて居ます"
      GoTo Wayout
    End If
  End If
  
  '開始行が終了行より大きかったら
  If vntStart > vntEnd Then
    strProm = "'開始行が終了行より大ので集計出来ません"
    GoTo Wayout
  End If
    
  'Key列に就いて繰り返し
  For i = vntStart To vntEnd
    vntResult = vntResult + a(i)
  Next i
  
  strProm = "集計結果は、" & vntResult
   
Wayout:

  Set rngList = Nothing
   
  MsgBox strProm, vbInformation
     
End Sub

0 hits

【67163】任意の配列変数に格納された値を合計して表示したい。 リス 10/11/12(金) 19:13 質問
【67164】Re:任意の配列変数に格納された値を合計し... kanabun 10/11/12(金) 19:51 発言
【67165】Re:任意の配列変数に格納された値を合計し... kanabun 10/11/12(金) 20:00 発言
【67166】Re:任意の配列変数に格納された値を合計し... Hirofumi 10/11/12(金) 20:33 回答
【67167】お礼 Kanabun様 Hirofumi様 リス 10/11/12(金) 21:59 お礼
【67173】Re:お礼 Kanabun様 Hirofumi様 kanabun 10/11/14(日) 0:29 発言
【67209】Re:お礼 Kanabun様 Hirofumi様 リス 10/11/15(月) 22:24 お礼

15053 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free