Попытка вставить новую строку (без использования табличной функции), которая затем скопирует формулы и форматирование сверху при очистке содержимого - PullRequest
0 голосов
/ 30 сентября 2019

Я пытаюсь добавить фрагмент кода в этот макрос, чтобы скопировать формулы и форматирование из указанных выше ячеек без специального содержимого внутри ячеек. Я не хочу создавать таблицу. Данные варьируются от A: T, и в идеале все формулы переходят в новую строку.

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

Private Sub CommandButton1_Click()
    Dim rowNum As Integer
    On Error Resume Next
    rowNum = Application.InputBox(Prompt:="Enter Row Number where you want to add a row:", _
                                    Title:="Kutools for excel", Type:=1)
    Rows(rowNum & ":" & rowNum).Insert Shift:=xlDown
End Sub

Я ожидаю, что дополнительный код вставит правильное форматирование и формулы с новой строкой. Запрос на ввод строки должен занять строку над указанной ячейкой и скопировать форматирование и формулы.

1 Ответ

0 голосов
/ 01 октября 2019

Сначала вы можете выправить свой код, используя

Rows(rowNum).Insert Shift:= xlDown

Предполагая, что вы хотите копировать форматы и формулы (не константы), и не обращайте внимания на другие свойства, такие как проверки, чтобы их можно было скопировать, а также использовать (Iпрокомментировал оператор On Error Resume Next - по крайней мере, во время тестирования).

Редактировать 1:

Dim rowNum As Long

'On Error Resume Next

rowNum = Application.InputBox(Prompt:="Enter Row Number where you want to add a row:", _
                                    Title:="Kutools for excel", Type:=1)
If rowNum < 1 Then Exit Sub             

With Rows(rowNum)
    .Copy
    .Offset(1, 0).Insert
    .Offset(1, 0).SpecialCells(xlConstants).ClearContents
End With

Если вы хотите избежать копирования / вставки в коде, вы можете использовать:

Dim rowNum As Long
Dim cl As Range

'On Error Resume Next

rowNum = Application.InputBox(Prompt:="Enter Row Number where you want to add a row:", _
                                    Title:="Kutools for excel", Type:=1)
If rowNum < 1 Then Exit Sub             'This code will fail if you act on rownum 1 - you could also show an error message to the user

With Rows(rowNum)
    .Offset(1, 0).Insert
    For Each cl In .SpecialCells(xlFormulas)
        cl.Offset(1, 0).Formula = cl.Formula
    Next cl
End With

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...