Добавьте новую строку и отформатируйте добавленную новую строку - PullRequest
0 голосов
/ 08 декабря 2018

У меня есть лист с динамическим числом строк.Я пытаюсь добавить макрос, который добавляет новую строку после каждой активной строки, и он должен добавить текст «Не показывать» в столбце C каждой новой добавленной строки, и он должен добавить значение ячейки E5 в столбце D. Вотпример ниже:

Текущий лист:

enter image description here

После макроса: (тест в E5 - выходной)

enter image description here

У меня есть макрос для добавления новых пустых строк, но я не уверен, как интегрировать другие его части.

Sub Insert_Blank_Rows()

   Selection.End(xlDown).Select

   Do Until ActiveCell.Row = 1

      ActiveCell.EntireRow.Insert shift:=xlDown

      ActiveCell.Offset(-1, 0).Select
   Loop

End Sub

Ответы [ 3 ]

0 голосов
/ 08 декабря 2018

цикл в обратном направлении:

Option Explicit

Sub Insert_Blank_Rows()
    Dim iRow As Long
    Dim myText As String

    myText = Range("E5").Text
    With Selection
        For iRow = .Rows.Count To 1 Step -1
            .Rows(iRow + 1).EntireRow.Insert shift:=xlDown
            With .Rows(iRow + 1)
                .Range("A1:B1").Value = .Offset(-1).Range("A1:B1").Value
                .Range("C1:D1").Value = Array("No Show", myText)
            End With
        Next
    End With
End Sub
0 голосов
/ 08 декабря 2018
Sub FFF()
    Dim r&, vE5
    vE5 = [E5]: r = Cells(Rows.Count, 1).End(xlUp).Row + 1
    While r > 1
        Rows(r).Insert
        Cells(r, 1).Resize(, 4) = Array(Cells(r - 1, 1).Resize(, 2), "No Show", vE5)
        r = r - 1
    Wend
End Sub
0 голосов
/ 08 декабря 2018

если я понял ваш вопрос, вы можете:

в этом примере, я полагаю, что у вас в ячейке E5 текст Holiday.

я пытался не изменять ваш код

РЕДАКТИРОВАНИЕ ИЗОБРАЖЕНИЯ и КОДА

(потому что раньше я использовал ячейку E1, а я не записывал AB ... в новый столбец)

ДО ВЫПОЛНЕНИЯ МАКРОСА

enter image description here

ПОСЛЕ МАКРО

enter image description here

Sub Insert_Blank_Rows()
Dim text, textCell_E5 As String
Dim myRow As Long

text = "no Show" ' this thext goes into column C
textCell_E5 = Cells(5, 5) ' Holiday
ActiveSheet.Range("A1").Select ' or cells(1,1).Activate

Selection.End(xlDown).Select
myRow = ActiveCell.Row + 1
Cells(myRow, 1).Offset(0, 2) = text
Cells(myRow, 1).Offset(0, 3) = textCell_E5
Cells(myRow, 1).Offset(0, 0) = Cells(myRow, 1).Offset(-1, 0) 
Cells(myRow, 1).Offset(0, 1) = Cells(myRow, 1).Offset(-1, 1)

  Do Until ActiveCell.Row = 1

      ActiveCell.EntireRow.Insert shift:=xlDown

      myRow = ActiveCell.Row ' get the current row
      Cells(myRow, 1).Offset(0, 2) = text ' write into column C the no Show
      Cells(myRow, 1).Offset(0, 3) = textCell_E5 ' add Holiday Text
      Cells(myRow, 1).Offset(0, 0) = Cells(myRow, 1).Offset(-1, 0) 'write into column A (new row)
      Cells(myRow, 1).Offset(0, 1) = Cells(myRow, 1).Offset(-1, 1) ' write into column B (new row)

      ActiveCell.Offset(-1, 0).Select
  Loop

End Sub

Я попробовал коди работает.

Надеюсь, это поможет

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