VBA пропускает ячейки при вводе данных - PullRequest
0 голосов
/ 20 февраля 2020

У меня проблема с моим кодом VBA, возможно, кто-то может объяснить, где я допустил ошибку и как ее можно исправить. Моя цель - создать 7 столбцов без пропусков ячеек. У меня есть 7 текстовых полей, но не все из них должны быть заполнены при каждом вводе данных. В тот момент, когда данные добавляются только в текстовом поле «Имя», создается новая строка, но при добавлении только фамилии пропускаются первые пустые строки и вводится по диагонали в поле «Имя» (как во вложении) Excel img

Также возникает ошибка, когда я хочу добавить запись в другие текстовые поля, введенные данные просто перемещаются.

Private Sub CommandButton1_Click()

   Dim LR As Long

   LR = Cells(Rows.Count, 1).End(xlUp).Row + 1

   Cells(LR, 1).Value = Name.Value
   Cells(LR, 2).Value = Surname.Value
   Cells(LR, 3).Value = Address.Value
   Cells(LR, 4).Value = Phone.Value
   Cells(LR, 5).Value = City.Value
   Cells(LR, 6).Value = Car.Value
   Cells(LR, 7).Value = Job.Value

   Name.Value = ""
   Surname.Value = ""
   Address.Value = ""
   Phone.Value = ""
   City.Value = ""
   Car.Value = ""
   Job.Value = ""


End Sub

1 Ответ

0 голосов
/ 20 февраля 2020

Вы всегда ищете последнюю строку в столбце A, поэтому она добавляет фамилию на одну строку ниже последней строки столбца A. Если вы хотите узнать последнюю строку другого столбца, вам нужно изменить 1 после Rows.Count в соответствующий номер. Вы также можете сделать это в одну строку, иметь гусак:

Private Sub CommandButton1_Click()

   Cells(Cells(Rows.Count, 1).End(xlUp).Row + 1, 1).Value = Name.Value
   Cells(Cells(Rows.Count, 2).End(xlUp).Row + 1, 2).Value = Surname.Value
   Cells(Cells(Rows.Count, 3).End(xlUp).Row + 1, 3).Value = Address.Value
   Cells(Cells(Rows.Count, 4).End(xlUp).Row + 1, 4).Value = Phone.Value
   Cells(Cells(Rows.Count, 5).End(xlUp).Row + 1, 5).Value = City.Value
   Cells(Cells(Rows.Count, 6).End(xlUp).Row + 1, 6).Value = Car.Value
   Cells(Cells(Rows.Count, 7).End(xlUp).Row + 1, 7).Value = Job.Value

   Name.Value = ""
   Surname.Value = ""
   Address.Value = ""
   Phone.Value = ""
   City.Value = ""
   Car.Value = ""
   Job.Value = ""

End Sub
...