Заполните новую строку нажатием кнопки VBA - PullRequest
0 голосов
/ 07 апреля 2010

Я пытаюсь создать список, который добавляет новую строку данных при каждом нажатии кнопки. У меня следующий код, назначенный кнопке при нажатии:

    PurchaseDate = InputBox("Enter Purchase Date:")
    Sheets("TrackRecord").Select
    i = 0
    Row = i + 1
    Range("A2").Select
    ActiveCell.FormulaR1C1 = Row
    Range("B2").Select
    ActiveCell.FormulaR1C1 = "=Dashboard!R26C4*(1/Dashboard!R26C12)"
    Range("C2").Select
    ActiveCell.FormulaR1C1 = "=Dashboard!R26C2"
    Range("D2").Select
    ActiveCell.FormulaR1C1 = PurchaseDate
    Range("E2").Select
    ActiveCell.FormulaR1C1 = "=Dashboard!R26C8 + R2C4"
    Range("F2").Select
    ActiveCell.FormulaR1C1 = "=Waterfall!R[8]C[5]"
    Range("F2").Select
    Selection.AutoFill Destination:=Range("F2:I2"), Type:=xlFillDefault
    Range("F2:I2").Select
End Sub

Этот код работает нормально, но я бы хотел, чтобы он заполнял следующую строку ниже, а не перезаписывал одну и ту же строку при каждом нажатии кнопки. Я знаю, что мне нужно перебрать раздел «Range (« A2 »). Select», например, "Range (" A2 "). Выберите" -> "Range (" B2 "). Выберите" .. Но я не знаю, как это сделать в VBA для Excel. Вот почему я прошу вас, ребята; )

Спасибо,

1 Ответ

1 голос
/ 07 апреля 2010

Если вы хотите сохранить следующий ряд, даже если закроете Excel и снова откроете его, лучше каждый раз находить последний ряд.

 Dim Row As Long

    Row = GetNextRow(Sheets("TrackRecord"), "A") 

    PurchaseDate = InputBox("Enter Purchase Date:") 

    Sheets("TrackRecord").Select 

    Range("A" & Row).Select 
    ActiveCell.FormulaR1C1 = Row 
    Range("B" & Row).Select 
    ActiveCell.FormulaR1C1 = "=Dashboard!R26C4*(1/Dashboard!R26C12)" 
    Range("C" & Row).Select 
    ActiveCell.FormulaR1C1 = "=Dashboard!R26C2" 
    Range("D" & Row).Select 
    ActiveCell.FormulaR1C1 = PurchaseDate 
    Range("E" & Row).Select 
    ActiveCell.FormulaR1C1 = "=Dashboard!R26C8 + R2C4" 
    Range("F" & Row).Select 
    ActiveCell.FormulaR1C1 = "=Waterfall!R[8]C[5]" 
    Range("F" & Row).Select 
    Selection.AutoFill Destination:=Range("F" & Row & ":I" & Row), Type:=xlFillDefault 
    Range("F" & Row & ":I" & Row).Select 
End Sub 


Private Function GetNextRow(sheet As Worksheet, column As String) As Long

    'Look for the first empty row in the specified column

    Dim Row As Long

    For Row = 1 To 65535
        If sheet.Range(column & Row).Formula = "" Then
            GetNextRow = Row
            Exit For
        End If
    Next Row

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