Изменить строку начальной точки

#excel #vba

#excel #vba

Вопрос:

Есть форма, которую я пытаюсь изменить в зависимости от количества входных данных на другом листе. Не удается заставить приведенный ниже код работать. Я новичок в VBA, так что, вероятно, это что-то простое. Не уверен, что мои команды «Dim» и «Set» верны, поскольку я получаю ошибку «Требуется объект» для ‘startrow1’.

Код должен добавлять переменное количество строк (что он и делает). Но проблема в начальной точке. Начальной точкой по умолчанию будет «A20», но ее необходимо изменить в зависимости от количества строк, ранее добавленных над ней с помощью другого макроса. (ws1.Диапазон.(«D45»).значение). Итак, если «D45» равно 2, начальная точка должна измениться на «A22».

 Sub Addquotedrows()

Application.ScreenUpdating = False

Dim ws1     As Worksheet
Dim ws2     As Worksheet
Dim addquoted As Range
Dim startrow As Range
Dim startrow1 As Range


Set ws1 = Sheets("Input")
Set ws2 = Sheets("PakEmail")
Set addquoted = ws1.Range("D46")
Set startrow = ws2.Range("a20")

Set startrow1 = startrow   ws1.Range("D45").Value

Let X = 0
Do While X < addquoted

With ws2
    startrow1.EntireRow.Insert Shift:=xlUp
End With

X = X   1
Loop

Application.ScreenUpdating = True

End Sub
  

Ответ №1:

Просто сместите startrow на количество строк в D45.

 Set startrow = ws2.Range("a20").offset(ws1.Range("D45").Value, 0)
  

Ответ №2:

С помощью имеющегося у вас кода вам нужно будет установить startrow в целое число, затем выполнить add и установить диапазон startrow1 = в эти значения следующим образом:

 Dim startrow Integer
Set startrow = 20
Set startrow1 = Range("A" amp; startrow   
ws1.Range("D45").Value
  

Ваша проблема заключалась в том, что вы добавляли целое число в диапазон, подобно тому, как вы находитесь в центре большого города и говорите, что ищете адрес 9.
В сообщении об ошибке говорилось: «Ок, 9 чего?»
Имеет ли это смысл?

Итак, теперь у вас есть 2 варианта. 1) используйте адреса, как указано выше, со смещением 2) используйте числа, как представлено здесь. Любой из них должен работать для того, что вы хотите, просто зависит от вашего стиля, того, что имеет для вас смысл, и есть ли другой код, который может привести к сбоям, если вы используете один способ поверх другого. (вероятность этого очень мала, но все же возможна).

Удачи!