1

Я хочу иметь возможность добавлять пустые строки в любом месте электронной таблицы Excel. Мне нужно указать множество различных пустых строк для ввода в различные строки в электронной таблице. Например, вставьте 100 пустых строк, начиная со строки 99.

Я новичок в макросах, скопировал макрос из Интернета и попытался его адаптировать, но не могу получить правильный стартовый ряд. Я отметил части кода, которые запутались в комментариях к коду.

Sub test()
Dim j As Long, r As Range

h = 0

j = 0


h = InputBox("type starting row")

j = InputBox("type the number of rows to be inserted")

Set r = Range("A2")  'Problem here -- I need to be able to change this to value from h'

Range(r.Offset(h, 0), r.Offset(j, 0)).EntireRow.Insert

Set r = Cells(r.Row + j, 1)

'MsgBox r.Address(the apostrophe in the beginning of this line makes this line non operable)


End Sub

2 ответа2

1

Вам просто нужно внести пару изменений в код - это очень близко к работе как есть. Смотрите мои комментарии в исправленном коде ниже.

Sub test()
Dim j As Long, r As Range

h = 0

j = 0


h = InputBox("type starting row")

j = InputBox("type the number of rows to be inserted")

'I moved this up one row so that the inserted rows are just below row h.
Set r = Range("A1")

'The second argument indicates the address of the bottom of the range. 
'This needs to take h into account so that the difference between the top and bottom is j rows.
Range(r.Offset(h, 0), r.Offset(h + j - 1, 0)).EntireRow.Insert

'The rest of the code wasn't doing anything, so I removed it.

End Sub
0
Sub Macro1()

'You should give your variables meaningfull names
'But I will leave them as h and j for now.
Dim h As Integer
Dim j As Integer

j = InputBox("How many rows do you want?")

h = InputBox("At what line do you want them?")

    'You can use the variable in the range, this is how
    Range("A" & h).Select

    'This is called a FOR loop, google them - they are easy to use and a basic part of programming.
    For i = 1 To j
    Selection.EntireRow.Insert
    Next i

End Sub

Примечание: это не самое элегантное решение, оно написано, чтобы было легко понять.

Вы также можете немного сократить его, не сначала выбирая диапазон, а затем вставляя его в выделение следующим образом:

For i = 1 To j
Range("A" & h).EntireRow.Insert
Next i

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .