如何将数据添加到excel中的特定行

时间:2013-02-14 03:06:27

标签: excel vba excel-vba

我想问一下如何使用Userform将数据添加到Excel电子表格的特定行中。

当我向工作表添加新产品A时,我希望新数据位于产品A的最后一行,而其他产品B和C则相同。

当我将新数据输入现有表时,有没有办法对数据进行精确排序?

我下面的代码逐行添加数据,无论我输入什么产品,使表格未分类并且显得分散。

Private Sub CommandButton1_Click()
    Dim LastRow As Object

    Set LastRow = Sheet1.Range("a65536").End(xlUp)

    LastRow.Offset(1, 0).Value = TextBox1.Text
    LastRow.Offset(1, 1).Value = TextBox2.Text
    LastRow.Offset(1, 2).Value = TextBox3.Text

    MsgBox "One record written to Sheet1"

    If MsgBox("Do you want to continue entering data?", vbYesNo + vbCritical, "Caution") = vbYes Then
        TextBox1.Text = ""
        TextBox2.Text = ""
        TextBox3.Text = ""
    Else
        End
        TextBox1.SetFocus
        Unload Me
    End If
End Sub

1 个答案:

答案 0 :(得分:0)

您可以将数据添加到上一行,然后对数据进行排序。

1)要获取最后一行,请参阅此link

2)要对数据进行排序,您可以使用此简单代码。下面的示例代码将对Col A进行排序,其中包含标题

With Sheets("Sheet1")
    .Columns("A:A").Sort Key1:=.Range("A1"), Order1:=xlAscending, Header:=xlYes, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal
End With

3)关于使用End的一个提示:请参阅this主题中的第6点。

4)所以,如果我将两个代码组合在一起,那么您的代码将看起来像这样

Option Explicit

Private Sub CommandButton1_Click()
    Dim LastRow As Long

    '~~> Change this to the releavnt sheet name
    With Sheets("Sheet1")
        LastRow = .Range("A" & .Rows.Count).End(xlUp).Row + 1

        .Range("A" & LastRow) = TextBox1.Text
        .Range("B" & LastRow) = TextBox2.Text
        .Range("C" & LastRow) = TextBox3.Text

        '~~> Sort the Data. I am assuming that Row 1 has Headers
        .Columns("A:C").Sort Key1:=.Range("A2"), Order1:=xlAscending, Header:=xlYes, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
    End With

    If MsgBox("One record written to Sheet1. Do you want to continue entering data?", vbYesNo + vbCritical, "Caution") = vbYes Then
        TextBox1.Text = ""
        TextBox2.Text = ""
        TextBox3.Text = ""
        TextBox1.SetFocus
    Else
      Unload Me
    End If
End Sub