VBA代码移动到Excel中的下一行

时间:2011-01-13 16:18:38

标签: ms-access

我有一个小型酒店的MS Access数据库。在主表单上,我有访客信息字段...(姓名,地址,电话号码等)。我还有一个Excel文件,可以跟踪酒店的预订情况。以下代码从Access中的表单中获取Guest信息,并填充Excel文件中的标记单元格。

Private Sub Command73_Click()
Set objXLApp = CreateObject("Excel.Application")
Set objXLBook = objXLApp.Workbooks.Open("Y:\123files\Edmond\Hotel Reservation Daily.xls")
objXLApp.Application.Visible = True

i = i + 1

objXLBook.ActiveSheet.Cells(i + 1, 1).Value = Me.GuestFirstName & " " & GuestLastName
objXLBook.ActiveSheet.Cells(i + 1, 2).Value = Me.PhoneNumber
objXLBook.ActiveSheet.Cells(i + 1, 3).Value = Me.cboCheckInDate
objXLBook.ActiveSheet.Cells(i + 1, 4).Value = Me.cboCheckOutDate
objXLBook.ActiveSheet.Cells(i + 1, 5).Value = Me.GuestNo
objXLBook.ActiveSheet.Cells(i + 1, 6).Value = Me.RoomType
objXLBook.ActiveSheet.Cells(i + 1, 7).Value = Me.RoomNumber
objXLBook.ActiveSheet.Cells(i + 1, 8).Value = Date
objXLBook.ActiveSheet.Cells(i + 1, 9).Value = Me.Employee
End Sub

有没有更好的方法可以移动到我的Excel文件的下一行,以获取新的访客信息?

EX。我接受了我的第一个客人信息,它填充了我的Excel文件的第A2行。对于我的下一位客人,它将填充我的Excel文件的第A3行,依此类推....

此外,当我在Access中关闭我的表单时,它会重置Excel文件,以便下次打开表单时进行新的预订,从A2开始,最终会覆盖已存在于Excel文件中的所有预留。

2 个答案:

答案 0 :(得分:1)

' here is how you find the next blank row in the sheet
Dim row as Integer
row = objXLBook.ActiveSheet.UsedRange.Rows.Count + 1

objXLBook.ActiveSheet.Range("B" & row) = Me.GuestFirstName & " " & GuestLastName
objXLBook.ActiveSheet.Range("C" & row) = Me.PhoneNumber
'etc…

答案 1 :(得分:0)

如果你需要给定范围内的最后一行,但不是第一行完全空行,你也可以使用它:

Dim lastRow as Integer
lastRow = objXLWbook.ActiveSheet.Range("A1").End(xlDown).Row
'...