从特定单元格添加Excel ExcelForm数据

时间:2015-01-23 07:59:12

标签: excel vba excel-vba

我是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

1 个答案:

答案 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