¯\_(ツ)_/¯
Для внутреннего использования
Чтобы добавить порядковый номер строки при добавлении данных из UserForm в итоговую таблицу, можно использовать несколько подходов:
1. Использование счетчика строк
Private Sub CommandButton1_Click()
Dim ws As Worksheet
Dim lastRow As Long
' Указываем лист, куда добавляем данные
Set ws = ThisWorkbook.Sheets("ИтоговаяТаблица")
' Находим последнюю заполненную строку
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row + 1
' Добавляем данные с порядковым номером
ws.Cells(lastRow, 1).Value = lastRow - 1 ' Нумерация с 1 (минус заголовок)
ws.Cells(lastRow, 2).Value = TextBox1.Value ' Пример для других полей
ws.Cells(lastRow, 3).Value = TextBox2.Value
' ... и так далее для остальных полей
' Очищаем форму после добавления
TextBox1.Value = ""
TextBox2.Value = ""
' ...
End Sub
2. Использование нумерации с учетом фильтров/удаленных строк
Если строки могут удаляться, лучше использовать максимальный номер + 1:
Private Sub CommandButton1_Click()
Dim ws As Worksheet
Dim lastRow As Long
Dim maxID As Long
Set ws = ThisWorkbook.Sheets("ИтоговаяТаблица")
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row + 1
' Находим максимальный существующий ID
If lastRow > 2 Then ' Если есть данные кроме заголовка
maxID = Application.WorksheetFunction.Max(ws.Columns(1))
Else
maxID = 0
End If
' Добавляем данные
ws.Cells(lastRow, 1).Value = maxID + 1
ws.Cells(lastRow, 2).Value = TextBox1.Value
' ... остальные поля
End Sub
3. Использование таблицы (ListObject)
Если данные находятся в формате таблицы Excel:
Private Sub CommandButton1_Click()
Dim tbl As ListObject
Dim newRow As ListRow
' Указываем таблицу
Set tbl = ThisWorkbook.Sheets("ИтоговаяТаблица").ListObjects("Table1")
' Добавляем новую строку
Set newRow = tbl.ListRows.Add
' Заполняем данные
With newRow
.Range(1) = tbl.ListRows.Count ' Порядковый номер
.Range(2) = TextBox1.Value
.Range(3) = TextBox2.Value
' ... остальные поля
End With
End Sub
Комментарии
-
- Можно форматировать номера с ведущими нулями:
ws.Cells(lastRow, 1).Value = Format(lastRow - 1, "000")
-
- Если нужно сохранять нумерацию при удалении строк, лучше использовать отдельный столбец с ID.
-
- Для больших таблиц отключите обновление экрана во время добавления:
Application.ScreenUpdating = False
' ... код ...
Application.ScreenUpdating = True
Вариант в решении (стр. 17)
Option Explicit
Dim ShF1 As Worksheet ' объявили глоб.~ ShF1 как лист, ниже в нее присвоим лист таблицы
Dim F1ListObject As ListObject ' объяв.глоб.~ как объект F1ListObject, присвоим имя умн.табл.
Dim F1ListRow As ListRow ' глоб.~ как строка для строки диапазона
Sub ShowF1() ' показать форму
F1.Show
End Sub
Sub AddRecord() ' добавление новой записи
Set ShF1 = ThisWorkbook.Worksheets("1-7 верт ") ' присвоить в ShF1 лист
Set F1ListObject = ShF1.ListObjects("Таблица27") ' присвоить в F1ListObject диапазон Таблица27
Set F1ListRow = F1ListObject.ListRows.Add ' присвоить в ~ F1ListRow добавление новой строки в F1ListObject
F1ListRow.Range(1) = F1ListObject.ListRows.Count ' Порядковый номер (без заголовка) - в ~ F1ListObject
' все поля с ручным вводом
F1ListRow.Range(2) = F1.Tx_type.Value ' присвоить в колонку 2 (т.е. "B") поле Tx_type (Тип)DRS
F1ListRow.Range(3) = F1.Tx_article.Value ' Артикул
F1ListRow.Range(4) = F1.TextBox9.Value
F1ListRow.Range(5) = F1.TextBox7.Value
F1ListRow.Range(6) = F1.TextBox8.Value
F1ListRow.Range(18) = F1.Tx_massa.Value ' Масса
F1ListRow.Range(19) = F1.Tx_srok_sluzh.Value
F1ListRow.Range(158) = F1.TextBox1.Value
F1ListRow.Range(160) = F1.TextBox2.Value
F1ListRow.Range(162) = F1.TextBox3.Value
F1ListRow.Range(164) = F1.TextBox4.Value
F1ListRow.Range(240) = F1.TextBox5.Value ' картинки
F1ListRow.Range(241) = F1.TextBox6.Value ' картинки
' все поля с вып. списками
' блок1
F1ListRow.Range(11) = F1.Co_eaes.Value
F1ListRow.Range(14) = F1.Co_min_t.Value
' блок2
F1ListRow.Range(22) = F1.ComboBox2.Value ' 1-2
F1ListRow.Range(29) = F1.ComboBox3.Value ' 2-1
F1ListRow.Range(28) = F1.ComboBox5.Value ' 2-2
F1ListRow.Range(36) = F1.ComboBox4.Value ' 3-1
F1ListRow.Range(35) = F1.ComboBox6.Value ' 3-2
' блок3
F1ListRow.Range(42) = F1.ComboBox75.Value ' 1-1
F1ListRow.Range(43) = F1.ComboBox23.Value ' 1-2
F1ListRow.Range(44) = F1.ComboBox32.Value ' 1-3
F1ListRow.Range(47) = F1.ComboBox74.Value ' 2-1
F1ListRow.Range(48) = F1.ComboBox8.Value ' 2-2
F1ListRow.Range(49) = F1.ComboBox10.Value ' 2-3
F1ListRow.Range(52) = F1.ComboBox13.Value ' 3-1
F1ListRow.Range(53) = F1.ComboBox9.Value ' 3-2
F1ListRow.Range(54) = F1.ComboBox11.Value ' 3-3
F1ListRow.Range(57) = F1.ComboBox17.Value ' 4-1
F1ListRow.Range(58) = F1.ComboBox24.Value ' 4-2
F1ListRow.Range(59) = F1.ComboBox34.Value ' 4-3
F1ListRow.Range(62) = F1.ComboBox16.Value ' 5-1
F1ListRow.Range(63) = F1.ComboBox25.Value ' 5-2
F1ListRow.Range(64) = F1.ComboBox35.Value ' 5-3
F1ListRow.Range(67) = F1.ComboBox15.Value ' 6-1
F1ListRow.Range(68) = F1.ComboBox26.Value ' 6-2
F1ListRow.Range(69) = F1.ComboBox33.Value ' 6-3
F1ListRow.Range(72) = F1.ComboBox18.Value ' 7-1
F1ListRow.Range(73) = F1.ComboBox27.Value ' 7-2
F1ListRow.Range(74) = F1.ComboBox36.Value ' 7-3
F1ListRow.Range(77) = F1.ComboBox19.Value ' 8-1
F1ListRow.Range(78) = F1.ComboBox28.Value ' 8-2
F1ListRow.Range(79) = F1.ComboBox37.Value ' 8-3
F1ListRow.Range(82) = F1.ComboBox20.Value ' 9-1
F1ListRow.Range(83) = F1.ComboBox29.Value ' 9-2
F1ListRow.Range(84) = F1.ComboBox38.Value ' 9-3
F1ListRow.Range(87) = F1.ComboBox22.Value ' 10-1
F1ListRow.Range(88) = F1.ComboBox30.Value ' 10-2
F1ListRow.Range(89) = F1.ComboBox40.Value ' 10-3
F1ListRow.Range(92) = F1.ComboBox21.Value ' 11-1
F1ListRow.Range(93) = F1.ComboBox31.Value ' 11-2
F1ListRow.Range(94) = F1.ComboBox39.Value ' 11-3
' 4
F1ListRow.Range(104) = F1.ComboBox48.Value ' 1-1
F1ListRow.Range(109) = F1.ComboBox59.Value ' 1-2
F1ListRow.Range(110) = F1.ComboBox68.Value ' 1-3
F1ListRow.Range(115) = F1.ComboBox50.Value ' 2-1
F1ListRow.Range(116) = F1.ComboBox44.Value ' 2-2
F1ListRow.Range(117) = F1.ComboBox46.Value ' 2-3
F1ListRow.Range(122) = F1.ComboBox49.Value ' 3-1
F1ListRow.Range(123) = F1.ComboBox45.Value ' 3-2
F1ListRow.Range(124) = F1.ComboBox47.Value ' 3-3
F1ListRow.Range(129) = F1.ComboBox53.Value ' 4-1
F1ListRow.Range(130) = F1.ComboBox60.Value ' 4-2
F1ListRow.Range(131) = F1.ComboBox70.Value ' 4-3
F1ListRow.Range(136) = F1.ComboBox52.Value ' 5-1
F1ListRow.Range(137) = F1.ComboBox61.Value ' 5-2
F1ListRow.Range(138) = F1.ComboBox71.Value ' 5-3
F1ListRow.Range(143) = F1.ComboBox51.Value ' 6-1
F1ListRow.Range(144) = F1.ComboBox62.Value ' 6-2
F1ListRow.Range(145) = F1.ComboBox69.Value ' 6-3
' 7
F1ListRow.Range(158) = F1.TextBox1.Value ' 1-1
F1ListRow.Range(159) = F1.ComboBox41.Value ' 1-2
F1ListRow.Range(160) = F1.TextBox2.Value ' 2-1
F1ListRow.Range(161) = F1.ComboBox42.Value ' 2-2
F1ListRow.Range(162) = F1.TextBox4.Value ' 3-1
F1ListRow.Range(163) = F1.ComboBox73.Value ' 3-2
F1ListRow.Range(164) = F1.TextBox3.Value ' 4-1
F1ListRow.Range(165) = F1.ComboBox72.Value ' 4-2
End Sub
Sub CompliteCat() ' выпадающий список категорий
End Sub
Telegram
VK
Email
Post Views:
70