Я пытаюсь запустить макрос на трех разных диапазонах, один за другим. Как только диапазон выбран, код работает просто отлично (где определены переменные F и L). Я хотел бы установить r1-r3
как необходимые мне диапазоны, а затем использовать строковую переменную для объединения чисел диапазона вместе. Этот код работает, но не дает номера начальной и конечной строки в выбранном диапазоне. Это важно, потому что он сообщает макросу «TableCalc», когда нужно начинать и останавливать код. Затем я хотел бы перейти к следующему диапазону. Спасибо за вашу помощь.excel vba конвертировать строку в диапазон
Sub TestRangeBC()
WS.Select
Dim r1 As Range
Dim r2 As Range
Dim r3 As Range
Dim rngx As String
Dim num As Integer
Dim rng As Range
Set r1 = WS.Range("ONE")
Set r2 = WS.Range("TWO")
Set r3 = WS.Range("THREE")
For num = 1 To 3
rngx = "r" & num
Set rng = Range(rngx)
Dim F As Integer
Dim L As Integer
F = rng.Row + 1
L = rng.Row + rng.Rows.Count - 2
Cells(F, 8).Select
Do While Cells(F, 8) <> "" And ActiveCell.Row <= L
'INSERT SITUATIONAL MACRO
Call TableCalc
WS.Select
ActiveCell.Offset(1, 0).Select
Loop
Next num
End Sub
Что вы имеете в виду под «он говорит макрос TableCalc, когда для запуска и остановки код»? Я не вижу никаких параметров или глобальных переменных. – Comintern
[Не используйте '.Select'] (https://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros) в вашей« ситуационной макросъемке ». Это может помочь. Кроме того, ваши именованные диапазоны имеют одну строку? Или несколько строк? Что означает 'F', если вы просматриваете макрос с помощью' F8'? Кроме того, вам нужно указать, на каком листе вы ожидаете получить «Ячейки (F, 8)». – BruceWayne
@Tony Abadie - это код 'TableCalc' в том же модуле с этим' Sub'? Почему '' Cells (F, 8) <> "" "продвигается в цикле' Do While'? –