我是VBA的新手,我正在excel 2010 VBA中创建客户数据库。我在excel表中输入了一些从A1到C50的值,但是从D4到G50是空的。当我尝试使用UserForm输入数据时,它将数据添加到D51,E51,F51和G51,但我希望从D4,E4,F4和G4输入数据,然后再次输入到下一行。请帮忙!
以下是代码:
Private Sub Cmdcreate_Click()
Dim iRow As Long
Dim ws As Worksheet
Set ws = Worksheets("My.Sheet")
'''find first empty row in database
''iRow = ws.Cells(Rows.Count, 1)
'' .End(xlUp).Offset(1, 0).Row
'revised code to avoid problems with Excel tables in newer versions
iRow = ws.Cells.Find(What:="*", SearchOrder:=xlRows, _
SearchDirection:=xlPrevious, LookIn:=xlValues).Row + 1
'check for a Name
If Trim(Me.TextBox1.Value) = "" Then
Exit Sub
End If
'copy the data to the database
ws.Cells(iRow, 5).Value = ComboBox1.Value
ws.Cells(iRow, 6).Value = TextBox1.Value
ws.Cells(iRow, 7).Value = TextBox2.Value
'clear the data
TextBox1.Value = ""
TextBox2.Value = ""
ComboBox1.Value = ""
If ComboBox1.Value = True Then Cells(iRow, 5).Value = ComboBox1
End Sub
答案 0 :(得分:0)
我认为使用下面的代码,您在整个工作表中搜索输入到单元格的任何值,find函数在A50单元格中查找值并将该行存储为50.这就是为什么您的其他代码从51开始。
iRow = ws.Cells.Find(What:="*", SearchOrder:=xlRows, _
SearchDirection:=xlPrevious, LookIn:=xlValues).Row + 1
如果你想坚持使用find功能,你可以将“cells”更改为只包含D列的范围。否则你可以使用下面的代码来识别最后一行
iRow = ws.range("D1").End(xlDown).Row