我想问一下如何使用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
答案 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