Построить альтернативный диапазон ячеек 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