2011-01-13 3 views
1

У меня есть база данных MS Access для небольшого отеля. В основной форме у меня есть поля информации о гостях ... (имя, адрес, номер телефона и т. Д.). У меня также есть файл Excel, который отслеживает бронирование для отеля. Следующий код принимает информацию гостя из моей формы в Access и заполняет помеченные ячейки в моем файле Excel.Код VBA для перехода к следующей строке в 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. Я беру информацию о моих первых гостях, и он заполняет строку A2 моего файла Excel. Для моего следующего гостя он заполнит строку A3 моего файла Excel и т. Д.

Также, когда я закрываю свою форму в Access, он сбрасывает файл Excel, поэтому в следующий раз, когда я открою свою форму, чтобы создать новую резервирование начинается с A2, что в конечном счете перезаписывает любые оговорки, которые уже были в файле Excel.

ответ

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… 
+0

Спасибо за быстрый ответ. Dim row = .... вызывает ошибку «Ожидаемое: конец отчета» – Edmond

+0

@Edmond Извините, вытащите 'Dim' – Jay

+0

@Jay Я получаю сообщение об ошибке определенного пользователем типа, не заданное при установке в листы Dim sheet As Worksheet в моих объявлениях , Разве это не туда? – Edmond

0

Если вам нужна последняя строка в заданном диапазоне, но не первый полностью пустая строка вы также можете использовать это:

Dim lastRow as Integer 
lastRow = objXLWbook.ActiveSheet.Range("A1").End(xlDown).Row 
'... 
Смежные вопросы