Excel VBA: код пользовательской формы заменяет содержимое строки вместо добавления нового - PullRequest
0 голосов
/ 27 апреля 2020

Я новичок, учусь кодировать на VBA, и это мой первый пост. В последнее время я боролся за то, чтобы заставить работать мою пользовательскую форму.

Это код кнопки «Добавить» в моей пользовательской форме, когда я запускаю этот макрос (нажатием кнопки добавления), он берет верхний ряд моего листа и заменяет содержимое ячеек. ,

То, чего я пытаюсь добиться, это на самом деле добавить новую строку на лист со всей введенной мной информацией. Вот уже несколько дней я изо всех сил, поэтому (после интенсивных поисков в Google) я, наконец, решил попросить вас, ребята, о помощи :) Надеюсь, я был достаточно ясен.

Хорошего дня,

Dim L As Integer

If MsgBox("Are you sure to create a new row with those information ?", vbYesNo, "Confirmation") = vbYes Then L = Sheets("BDD").Range("A65536").End(xlUp).Row + 1 'Adding the new line to the sheet

 Range("B" & L).Value = CboResp.Text
 Range("C" & L).Value = CboStat.Text
 Range("D" & L).Value = CboNat.Text
 Range("E" & L).Value = CboPrio.Text
 Range("F" & L).Value = CboAff.Text
 Range("G" & L).Value = CboLea.Text
 Range("H" & L).Value = txtDateRD.Text
 Range("I" & L).Value = txtDateEnv.Text
 Range("J" & L).Value = CboIni.Text
 Range("K" & L).Value = CboISAV.Text
 Range("L" & L).Value = txtVin.Text
 Range("M" & L).Value = txtContrat.Text
 Range("N" & L).Value = txtClientFinal.Text
 Range("O" & L).Value = txtImmat.Text
 Range("P" & L).Value = txtNomCon.Text
 Range("Q" & L).Value = txtPrenomCon.Text
 Range("R" & L).Value = txtTelCon.Text
 Range("S" & L).Value = txtMotif.Text
 Range("T" & L).Value = txtDateRDV.Text
 Range("U" & L).Value = txtDateInter.Text
 Range("V" & L).Value = CboVH.Text
 Range("W" & L).Value = txtComment.Text
 Range("X" & L).Value = CboCon.Text

End If

1 Ответ

0 голосов
/ 27 апреля 2020

Это было бы более надежно:

Dim L As Long

If MsgBox("Are you sure to create a new row with those information ?", vbYesNo, "Confirmation") = vbYes Then

    With Sheets("BDD")
         L = .Range("A65536").End(xlUp).Row + 1 'Adding the new line to the sheet

         .Range("B" & L).Value = CboResp.Text
         .Range("C" & L).Value = CboStat.Text
         .Range("D" & L).Value = CboNat.Text
         .Range("E" & L).Value = CboPrio.Text
         .Range("F" & L).Value = CboAff.Text
         .Range("G" & L).Value = CboLea.Text
          'etc etc
     End with
End If

Предполагая, что в ColA всегда есть значение для каждой строки добавляемых данных.

...