Модифікація макросу VBA для додавання кількох порожніх рядків у будь-якому місці електронної таблиці


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

Замість цього Set r = Range("A2")використовувати Set r = Range(h). Крім цього, я не знаю, що з цим не працює. Вам потрібно бути більш конкретним. Що ви пробували. Які помилки ви отримуєте тощо
Уес Сайєд

Відповіді:


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

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

Відмінно працює, дякую тобі за допомогу, це значно полегшило моє життя.
Б Келлі

@BKelly Ласкаво просимо на сайт! Радий, що можу допомогти. Прошу прочитати цю довідкову сторінку: Що мені робити, коли хтось відповість на моє запитання?
Excellll

Я вважаю за краще цей спосіб відповіді +1
Raystafarian
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.