Я пытаюсь выполнить две вещи; 1) вставьте строки (и число в A1) на основе последовательного шаблона 2) вставьте строковое значение «NA» в остальные столбцы вставленной строки. Я использую сценарий ниже, часть 1 работает, но часть 2 ставит «NA» во всех столбцах, а не в том, что используется в листе. Вот пример данных:VBA Вставить строку после вставки строки
2001 A A A
2002 A A A
2004 A A A
2005 A A A
код должен вставить 2003 ПОСЛЕ 2002 "NA" в столбцах B: D
Вот скрипт, который я в настоящее время с помощью:
Sub test()
Dim i As Long, x, r, cell, CRange As Range
Dim InputValue As String
InputValue = "NA"
'test for sequential number
For i = Range("a" & Rows.Count).End(xlUp).Row To 2 Step -1
x = Cells(i, 1) - Cells(i - 1, 1)
If x > 1 Then
Rows(i).Resize(x - 1).Insert
End If
Next
'insert row if not sequential
For Each r In Range("a1", Range("a" & Rows.Count) _
.End(xlUp)).SpecialCells(4).Areas
With r.Cells(1).Offset(-1)
.AutoFill .Resize(r.Rows.Count + 1), 2
End With
'Test for empty cell. If empty, fill cell with value given
For Each cell In Selection
If IsEmpty(cell) Then
cell.Value = InputValue
End If
Next
Next
End Sub
Вы перебираете ** Выбор **, но я не вижу, где у вас ** Выберите ** что-нибудь? –
@ joe Laviano, отлично работает, спасибо! – matt