Построить альтернативный диапазон ячеек VBA

Мое намерение построить динамический диапазон альтернативных ячеек как неудачное, очевидно, из-за недостатка знаний.

For j = 1 To numFrame
    Set MaxStRange_OD_OUT = ActiveSheet.Range(Cells(1, 2 * (j + 1)))
    MaxVal = Application.Max(MaxStRange_OD_OUT)
    Debug.Print MaxVal
Next j

что я хотел бы достичь

MaxStRange_OD_OUT = ActiveSheet.Range(Cells(1, 4),Cells(1, 6),Cells(1, 8))

конечно, количество ячеек может варьироваться, скажем, от 1 до 10 (numFrame)

Спасибо

2 ответа

Решение

Вы могли бы использовать Application.Union создать диапазон.

Sub UnionRangeExample()

Dim rng As Range
Dim i As Long

    For i = 1 To 20 Step 2

    If rng Is Nothing Then

    Set rng = ActiveSheet.Cells(i, 1)

    Else

    Set rng = Application.Union(rng, ActiveSheet.Cells(i, 1))
    End If

    Next i

MsgBox rng.Address

End Sub

В вашей ситуации вы можете использовать это так:

Sub UnionRangeExample_v2()

Dim rng As Range
Dim j As Long
Dim numFrame As Long


numFrame = 10


    For j = 1 To numFrame
        If rng Is Nothing Then

        Set rng = ActiveSheet.Cells(1, 2 * (j + 1))

        Else

        Set rng = Application.Union(rng, ActiveSheet.Cells(1, 2 * (j + 1)))
        End If
    Next j

MsgBox "max for: " & rng.Address & " is " & Application.Max(rng)

End Sub

Вы можете попробовать этот код здесь

Function MyMaxValue() as Double
    Dim maxValue As Double, numFrame As Double, i As Integer, currentValue As Double

    numFrame = 7

    For i = 1 To numFrame
        currentValue = Cells(1, 2 * (j + 1)).value
        If currentValue > maxValue Then
            maxValue = currentValue
            Debug.Print "new value = " & maxValue
        End If
    Next i

    MyMaxValue = maxValue    
End Function
Другие вопросы по тегам