0

2 つの VBA プロシージャがあり、1 つは配列を構築し、それを別の配列に渡します。ただし、最初の手順を実行すると、「オブジェクトが必要です」という Excel エラー ウィンドウが表示されます。これが私が持っているコードです。このエラーの原因を見つけることができないようです。

Sub DetermineLoad()

Worksheets("Gear").Activate

Dim row_src As String
Dim strt_row As String
Dim col_storage As String
Dim Arr() As String
Dim aLength As Integer

row_src = "C"
strt_row = "9"
col_storage = "B"

Range(row_src + strt_row).Activate

While Not IsEmpty(Range(col_storage + Active.Row))
    If Not IsEmpty(ActiveCell) Then
        If ActiveCell.Value Then
            aLength = UBound(Arr) + 1
            ReDim Arr(0 To aLength)
            Arr(aLength) = String(ActiveCell.Column, ActiveCell.Row)
        End If
    End If
    ActiveCell.Offset(0, 1).Activate
Wend

DetermineWeight Arr

End Sub
Sub DetermineWeight(ParamArray Arr() As Variant)

Worksheets("Gear").Activate

Dim weight_lb_trgtCell As String
Dim weight_oz_trgtCell As String
Dim volume_cuin_trgtCell As String
Dim volume_liter_trgtCell As String
Dim col_oz As String
Dim col_lb As String
Dim weight_lb As Double
Dim weight_oz As Double
Dim oz_to_pound As Integer
Dim row_src As String
Dim src_range As Range

weight_lb_trgtCell = "H4"
weight_oz_trgtCell = "I4"

col_oz = "H"
col_lb = "I"
weight_lb = 0       ' 0 out `weight_lb`
weight_oz = 0       ' 0 out `weight_oz`
oz_to_pound = 16    ' 16 ounces to 1 pound

'get sum of weights (pounds, ounces)
For n = LBound(Arr) To UBound(Arr)

    src_range = Range(Arr(n))

    src_row = src_range.Row
    weight_oz = weight_oz + Range(col_oz + src_row).Value
    weight_lb = weight_lb + Range(col_lb + src_row).Value

Next n

'convert pounds
weight_lb = weight_lb + Int(weight_oz / oz_to_pound)
weight_oz = weight_oz - ((weight_oz / oz_to_pound) * oz_to_pound)

Range(weight_lb_trgtCell) = weight_lb
Range(weight_oz_trgtCell) = weight_oz

End Sub
4

2 に答える 2