Чтобы немного повысить эффективность вашего кода, вы можете переписать его, как показано ниже, но ваша логика c выглядит надежно, и я ожидаю правильных результатов? Ниже коде предполагает, что referralname
должно быть в строке ниже:
Private Sub CommandBox_Click()
Dim emptyRow as Long
Dim TargetSheet as Worksheet
'Direct code to run on Sheet1
Set TargetSheet = ThisWorkbook.Sheet1 'Could also be ThisWorkbook.Sheets("SheetNameHere")
With TargetSheet
'Determine emptyRow
emptyRow = TargetSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1
'Transfer Information
.Cells(emptyRow, 1).Value = Me.ClientFirstName.Value
.Cells(emptyRow, 2).Value = Me.ClientLastName.Value
'Assuiming you want the referral name values in the row below the client name,
'include 'Offset(1, 0) to offset the target by 1 row.
.Cells(emptyRow, 1).Offset(1, 0).Value = Me.Referral1FirstName.Value
.Cells(emptyRow, 2).Offset(1, 0).Value = Me.Referral1LastName.Value
End with
End Sub
Теперь мы не полагаемся на то, что ActiveSheet
является правильным листом во время выполнения. Иногда вы можете получить несколько забавных результатов с тем, как вы находили последнюю строку, где метод, который я использовал, аналогичен переходу к концу таблицы и удерживанию Ctrl + ↑ .