Наверное я уже всех достал, но я еще только учусь и пытаюсь разобраться методами научного тыка и консультаций, и вашей помощи Возник вопрос с автонумератором с столбца. Нужно что бы в столбце A вставлялся порядковый номер 1,2,3,4 и так далее при заполнение UserForm вот код [vba]
Код
Private Sub CommandButton1_Click() EmptyRows = WorksheetFunction.CountA(Range("B:B")) + 1
If ComboBox1.ListIndex = -1 Then Worksheets("Породы гнезда").Cells(Worksheets("Породы гнезда").Cells(Rows.Count, "B1:B").End(xlUp).Row + 1, "B").Value = ComboBox1.Value Cells(EmptyRows, 2) = ComboBox1.Value
If ComboBox2.ListIndex = -1 Then Worksheets("Окрасы").Cells(Worksheets("Окрасы").Cells(Rows.Count, "C1:C").End(xlUp).Row + 1, "C").Value = ComboBox2.Value Cells(EmptyRows, 3) = ComboBox2.Value
Private Sub CommandButton2_Click() Call UserForm_Initialize End Sub
Private Sub CommandButton3_Click() UserForm1.Hide End Sub
Private Sub UserForm_Initialize()
ComboBox1.Clear: ComboBox1.Text = ""
For I = 1 To Worksheets("Породы гнезда").Cells(Rows.Count, "A").End(xlUp).Row ComboBox1.AddItem Worksheets("Породы гнезда").Cells(I, "A").Value Next I
ComboBox2.Clear: ComboBox2.Text = ""
For I = 1 To Worksheets("Окрасы").Cells(Rows.Count, "A").End(xlUp).Row ComboBox2.AddItem Worksheets("Окрасы").Cells(I, "A").Value Next I
ComboBox3.Clear For I = 1 To Worksheets("Породы гнезда").Cells(Rows.Count, "B").End(xlUp).Row ComboBox3.AddItem Worksheets("Породы гнезда").Cells(I, "B").Value Next I TextBox1.Text = Format(Now(), "dd.mm.yyyy") 'дата' TextBox2.Value = "" 'количество голов'
TextBox3.Value = "" 'из них кур'
TextBox4.Value = "" 'цена инкубационного яйца'
TextBox5.Value = "" 'цена суточного цыпленка'
End Sub
[/vba]
Наверное я уже всех достал, но я еще только учусь и пытаюсь разобраться методами научного тыка и консультаций, и вашей помощи Возник вопрос с автонумератором с столбца. Нужно что бы в столбце A вставлялся порядковый номер 1,2,3,4 и так далее при заполнение UserForm вот код [vba]
Код
Private Sub CommandButton1_Click() EmptyRows = WorksheetFunction.CountA(Range("B:B")) + 1
If ComboBox1.ListIndex = -1 Then Worksheets("Породы гнезда").Cells(Worksheets("Породы гнезда").Cells(Rows.Count, "B1:B").End(xlUp).Row + 1, "B").Value = ComboBox1.Value Cells(EmptyRows, 2) = ComboBox1.Value
If ComboBox2.ListIndex = -1 Then Worksheets("Окрасы").Cells(Worksheets("Окрасы").Cells(Rows.Count, "C1:C").End(xlUp).Row + 1, "C").Value = ComboBox2.Value Cells(EmptyRows, 3) = ComboBox2.Value
Private Sub CommandButton2_Click() Call UserForm_Initialize End Sub
Private Sub CommandButton3_Click() UserForm1.Hide End Sub
Private Sub UserForm_Initialize()
ComboBox1.Clear: ComboBox1.Text = ""
For I = 1 To Worksheets("Породы гнезда").Cells(Rows.Count, "A").End(xlUp).Row ComboBox1.AddItem Worksheets("Породы гнезда").Cells(I, "A").Value Next I
ComboBox2.Clear: ComboBox2.Text = ""
For I = 1 To Worksheets("Окрасы").Cells(Rows.Count, "A").End(xlUp).Row ComboBox2.AddItem Worksheets("Окрасы").Cells(I, "A").Value Next I
ComboBox3.Clear For I = 1 To Worksheets("Породы гнезда").Cells(Rows.Count, "B").End(xlUp).Row ComboBox3.AddItem Worksheets("Породы гнезда").Cells(I, "B").Value Next I TextBox1.Text = Format(Now(), "dd.mm.yyyy") 'дата' TextBox2.Value = "" 'количество голов'
AranyHunter, в Private Sub CommandButton1_Click() добавьте один из 2-х вариантов
1) Если использовать формулу для нумерации, то [vba]
Код
Cells(EmptyRows, 1).FormulaR1C1 = "=ROW()-1"
[/vba] формула вычисляет - текущая строка минус 1 (у Вас же первая строка шапка)
2) через прибавление к предыдущей строке [vba]
Код
If EmptyRows = 2 Then Cells(EmptyRows, 1) = 1 'если первая запись (т.е строка 2) ставим № 1 Else Cells(EmptyRows, 1) = Cells(EmptyRows - 1, 1) + 1 'если запись вторая и больше (т.е. строка 3 и больше), то к значению в предыдущей строке прибавляем 1 End If
[/vba] Здесь плохо, то что при удалении какой либо записи, надо дописывать еще код на перенумерацию. А с формулой автоматически будет пересчитываться.
Кстати, 3 вариант [vba]
Код
Cells(EmptyRows, 1)= EmptyRows-1
[/vba] но здесь тоже придется дописывать на перенумерацию.
[p.s.]Нет файла с примером, не проверял что написал
AranyHunter, в Private Sub CommandButton1_Click() добавьте один из 2-х вариантов
1) Если использовать формулу для нумерации, то [vba]
Код
Cells(EmptyRows, 1).FormulaR1C1 = "=ROW()-1"
[/vba] формула вычисляет - текущая строка минус 1 (у Вас же первая строка шапка)
2) через прибавление к предыдущей строке [vba]
Код
If EmptyRows = 2 Then Cells(EmptyRows, 1) = 1 'если первая запись (т.е строка 2) ставим № 1 Else Cells(EmptyRows, 1) = Cells(EmptyRows - 1, 1) + 1 'если запись вторая и больше (т.е. строка 3 и больше), то к значению в предыдущей строке прибавляем 1 End If
[/vba] Здесь плохо, то что при удалении какой либо записи, надо дописывать еще код на перенумерацию. А с формулой автоматически будет пересчитываться.
Кстати, 3 вариант [vba]
Код
Cells(EmptyRows, 1)= EmptyRows-1
[/vba] но здесь тоже придется дописывать на перенумерацию.
[p.s.]Нет файла с примером, не проверял что написалdevilkurs
Сообщение отредактировал devilkurs - Среда, 09.12.2015, 17:50
2) через прибавление к предыдущей строке If EmptyRows = 2 Then Cells(EmptyRows, 1) = 1 'если первая запись (т.е строка 2) ставим № 1 Else Cells(EmptyRows, 1) = Cells(EmptyRows - 1, 1) + 1 'если запись вторая и больше (т.е. строка 3 и больше), то к значению в предыдущей строке прибавляем 1 End If
2) через прибавление к предыдущей строке If EmptyRows = 2 Then Cells(EmptyRows, 1) = 1 'если первая запись (т.е строка 2) ставим № 1 Else Cells(EmptyRows, 1) = Cells(EmptyRows - 1, 1) + 1 'если запись вторая и больше (т.е. строка 3 и больше), то к значению в предыдущей строке прибавляем 1 End If
Вопрос в том, кто справился? Вы четвертый? день бомбите два форума одними и теми же вопросами, и НИГДЕ не считаете нужным сообщить об этом. В одной из ваших тем ответил. Сожалею.
Написал по этому поводу на Планете
Цитата
Вопрос в том, кто справился? Вы четвертый? день бомбите два форума одними и теми же вопросами, и НИГДЕ не считаете нужным сообщить об этом. В одной из ваших тем ответил. Сожалею.
RAN, я дублирую темы для того что бы быстрее справиться со своей задачей! где мне подсказали там я отвечаю постом со скриптом! а на параллельном форуме отвечаю что вопрос закрыт!
RAN, я дублирую темы для того что бы быстрее справиться со своей задачей! где мне подсказали там я отвечаю постом со скриптом! а на параллельном форуме отвечаю что вопрос закрыт!AranyHunter