Уважаемые специалисты-форумчане! есть рабочий макрос. который добавляет новую строку по введенным в юзерформу данным. Необходимо, чтобы после введения строки, была выделена первая ячейка именно из этой введенной строки. Причем, даже после проведения сортировки, указанной в макросе. СПАСИБО. Это нужно для того, чтобы после введения новой строки не искать ее с помощью поисковика. [vba]
Код
Private Sub CommandButton1_Click() Application.Worksheets("Лист2").Activate If номер.Text = "" Then MsgBox ("Поле данных необходимо заполнить") Exit Sub End If Nom = 0 While Worksheets("Лист2").Cells(Nom + 2, 3).Value <> "" Wend For i = 1 To Nom If CStr(Worksheets("Лист2").Cells(i + 1, 4).Value) = _ CStr(номер.Text) Then MsgBox ("Такой номер уже встречался") Exit Sub End If Next Worksheets("Лист2").Cells(i + 1, 4).Value = номер.Text Worksheets("Лист2").Cells(i + 1, 1).Value = TextBox1.Text Worksheets("Лист2").Cells(i + 1, 2).Value = TextBox2.Text Worksheets("Лист2").Cells(i + 1, 3).Value = TextBox3.Text MsgBox ("Информация внесена") Unload Me Nom = Nom + 1 UserForm3.Hide Range("A1:D19").Select 'сортировка ActiveWorkbook.Worksheets("Лист2").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Лист2").Sort.SortFields.Add Key:=Range("D1:D13"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Лист2").Sort .SetRange Range("A1:D13") .Header = xlGuess .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Range("A1").Select End Sub
[/vba]
Уважаемые специалисты-форумчане! есть рабочий макрос. который добавляет новую строку по введенным в юзерформу данным. Необходимо, чтобы после введения строки, была выделена первая ячейка именно из этой введенной строки. Причем, даже после проведения сортировки, указанной в макросе. СПАСИБО. Это нужно для того, чтобы после введения новой строки не искать ее с помощью поисковика. [vba]
Код
Private Sub CommandButton1_Click() Application.Worksheets("Лист2").Activate If номер.Text = "" Then MsgBox ("Поле данных необходимо заполнить") Exit Sub End If Nom = 0 While Worksheets("Лист2").Cells(Nom + 2, 3).Value <> "" Wend For i = 1 To Nom If CStr(Worksheets("Лист2").Cells(i + 1, 4).Value) = _ CStr(номер.Text) Then MsgBox ("Такой номер уже встречался") Exit Sub End If Next Worksheets("Лист2").Cells(i + 1, 4).Value = номер.Text Worksheets("Лист2").Cells(i + 1, 1).Value = TextBox1.Text Worksheets("Лист2").Cells(i + 1, 2).Value = TextBox2.Text Worksheets("Лист2").Cells(i + 1, 3).Value = TextBox3.Text MsgBox ("Информация внесена") Unload Me Nom = Nom + 1 UserForm3.Hide Range("A1:D19").Select 'сортировка ActiveWorkbook.Worksheets("Лист2").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Лист2").Sort.SortFields.Add Key:=Range("D1:D13"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Лист2").Sort .SetRange Range("A1:D13") .Header = xlGuess .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Range("A1").Select End Sub
Добрый вечер. Что то не очень похоже на рабочий макрос. Что вызывает вопросы: 1. В теле цикла While - Wend ничего не происходит, и если ячейка C2 не пустая, то цикл будет бесконечный. 2. Цикл For - Next не выполняется ни разу, т.к. переменная Nom = 0. После цикла переменная i = 1 и значения из текстбоксов всегда будут вставляться в строку 2. Это нужно исправлять. А что касается сути вопроса, то можно сделать например так - перенести закрытие формы в конец макроса, а после сортировки вставить строку [vba]
Код
Range("D1:D10000").Find(номер.Text).Select
[/vba] . Если в таблице очень много строк, то можно так [vba]
Добрый вечер. Что то не очень похоже на рабочий макрос. Что вызывает вопросы: 1. В теле цикла While - Wend ничего не происходит, и если ячейка C2 не пустая, то цикл будет бесконечный. 2. Цикл For - Next не выполняется ни разу, т.к. переменная Nom = 0. После цикла переменная i = 1 и значения из текстбоксов всегда будут вставляться в строку 2. Это нужно исправлять. А что касается сути вопроса, то можно сделать например так - перенести закрытие формы в конец макроса, а после сортировки вставить строку [vba]
Код
Range("D1:D10000").Find(номер.Text).Select
[/vba] . Если в таблице очень много строк, то можно так [vba]