так вот я имею этот код в Excel VBAВыбор широкий диапазон значений в Excel VBA
Sub GetValue()
Dim rRH, rYear, r1 As Range
Dim RowIndex, ColIndex, yearRow As Integer
Dim rh1 As Integer
Dim rh1Pct As Double
Dim year As String
RowIndex = 30
yearRow = 10
Do While RowIndex < (RowIndex + yearRow)
Set rRH = ThisWorkbook.Sheets("CF-Apar").Range("M" & CStr(RowIndex))
If rRH.Value <> "" Then
rh1 = rRH.Value
year = ThisWorkbook.Sheets("CF-Apar").Range("A" & CStr(RowIndex)).Value
Exit Do
End If
RowIndex = RowIndex + 1
Loop
RowIndex = 12
rh1Pct = Range("D12").Value
ColIndex = 0
Set rYear = Range("D120")
Do While ColIndex < yearRow
If CInt(year) > CInt(rYear.Value) Then
Set r1 = rYear
r1.Offset(123, 0).Value = "0"
End If
If year = rYear.Value Then
rYear.Offset(123, 0).Value = rh1 * rh1Pct
Exit Do
End If
Set rYear = rYear.Next
Set r1 = r1.Next
Loop
End Sub
код, чтобы изменить или переместить значение в текущей ячейке всякий раз, когда значение CF-Apar листа является изменен, но текущий код охватывает только один диапазон (для этого случая это M, в индексе CF-Apar), вопрос в том, как добавить дополнительную ячейку диапазона, например от M30 до Q40, как наилучшим образом сделать это?
Вам нужно добавить еще один цикл, который будет «накрывать» «Do ... Loop», который у вас уже есть. Вы можете попытаться использовать 'For i = 13 до 17', который будет отображать столбцы' M to Q'. Но, чтобы сделать его эффективным, вам нужно изменить внутренние ссылки ваших диапазонов: из '.Range (« M »и Cstr (rowindex)» в '.Cells (rowindex, i)'. Надеюсь, вы справитесь с этим предложением. –
хорошо, я понимаю, что вы имеете в виду, но я бы предпочел сделать несколько циклов (вложенных), любую идею? –
Я только что предложил вложенную петлю ... 'Для i ... >> Do while ... >> ваш внутренний код цикла >> loop >> next i' –