Изменить строку начальной точки - PullRequest
0 голосов
/ 04 марта 2019

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

Код должен добавить переменное количество строк (что он и делает).Но проблема является отправной точкой.Начальная точка «по умолчанию» будет «A20», но ее нужно изменить в зависимости от количества строк, ранее добавленных над ней с помощью другого макроса.(Ws1.Range. ( "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

Ответы [ 2 ]

0 голосов
/ 05 марта 2019

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

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

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

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

Удачи!

0 голосов
/ 04 марта 2019

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

Set startrow = ws2.Range("a20").offset(ws1.Range("D45").Value, 0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...