2013-04-21 6 views
0

Я занимаюсь брандмауэром для VBA и испытываю проблемы с выходом из этого UserForm.VBA Excel - проверка содержимого ячеек перед написанием

Private Sub btnSubmit_Click() 
Dim RowCount As Long 

...

RowCount = Worksheets("Assignments").Range("A3").CurrentRegion.Rows.Count 
With Worksheets("Assignments").Range("A3") 
    .Offset(RowCount, 0).Value = Me.txtReportAddress.Value 
    .Offset(RowCount, 1).Value = Me.cmbCityCounty.Value 
    .Offset(RowCount, 2).Value = Me.txtFee.Value 
    .Offset(RowCount, 3).Value = Me.txtDate.Value 
    .Offset(RowCount, 4).Value = Me.cmbPropertyType.Value 
    .Offset(RowCount, 5).Value = Me.txtComments.Value 
End With 

Это дает правильный вывод, но все последующие записи перезаписать прошлое заходы.

Любая помощь приветствуется!

ответ

0

Не знаком с «CurrentRegion», но похоже, что вы подсчитываете строки, а затем переписываете последнюю строку; вы считаете 5 строк, а затем записываете в 5-ю строку, которая является последней строкой, содержащей данные, так же просто, как добавить 1 к RowCount?

Кроме того, что я сделал с вещами, как это:

RowCount = Application.CountA(Worksheets("Assignments").Columns("A")) 
    ' Depending on what is in rows 1 and 2 of colomn A you may need to adjust 
    ' ie if row 2 is blank then the count will be 1 higher than needed so you 
    ' can adjust accordingly 
Dim c as Range 
Set c = Worksheets("Assignments").Range("A" & RowCount + 1) 
With c 
    .value = Me.txtReportAddress.Value 
    .Offset(0,1).Value... etc as per your code 

Надеется, что это ответ на ваш вопрос.

Смежные вопросы