Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Добавление макросом строки в базу данных и ее выделение - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Добавление макросом строки в базу данных и ее выделение
Egider Дата: Вторник, 01.07.2025, 18:18 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 56
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Уважаемые специалисты-форумчане! есть рабочий макрос. который добавляет новую строку по введенным в юзерформу данным. Необходимо, чтобы после введения строки, была выделена первая ячейка именно из этой введенной строки. Причем, даже после проведения сортировки, указанной в макросе. СПАСИБО. Это нужно для того, чтобы после введения новой строки не искать ее с помощью поисковика.
[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
[/vba]

Автор - Egider
Дата добавления - 01.07.2025 в 18:18
i691198 Дата: Вторник, 01.07.2025, 21:43 | Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 423
Репутация: 131 ±
Замечаний: 0% ±

2016
Добрый вечер. Что то не очень похоже на рабочий макрос. Что вызывает вопросы:
1. В теле цикла While - Wend ничего не происходит, и если ячейка C2 не пустая, то цикл будет бесконечный.
2. Цикл For - Next не выполняется ни разу, т.к. переменная Nom = 0.
После цикла переменная i = 1 и значения из текстбоксов всегда будут вставляться в строку 2.
Это нужно исправлять. А что касается сути вопроса, то можно сделать например так - перенести закрытие формы в конец макроса, а после сортировки вставить строку [vba]
Код
Range("D1:D10000").Find(номер.Text).Select
[/vba] . Если в таблице очень много строк, то можно так [vba]
Код
Application.Goto Range("D1:D10000").Find(номер.Text), True
[/vba] , экран прокрутится до выделенной строки.
 
Ответить
СообщениеДобрый вечер. Что то не очень похоже на рабочий макрос. Что вызывает вопросы:
1. В теле цикла While - Wend ничего не происходит, и если ячейка C2 не пустая, то цикл будет бесконечный.
2. Цикл For - Next не выполняется ни разу, т.к. переменная Nom = 0.
После цикла переменная i = 1 и значения из текстбоксов всегда будут вставляться в строку 2.
Это нужно исправлять. А что касается сути вопроса, то можно сделать например так - перенести закрытие формы в конец макроса, а после сортировки вставить строку [vba]
Код
Range("D1:D10000").Find(номер.Text).Select
[/vba] . Если в таблице очень много строк, то можно так [vba]
Код
Application.Goto Range("D1:D10000").Find(номер.Text), True
[/vba] , экран прокрутится до выделенной строки.

Автор - i691198
Дата добавления - 01.07.2025 в 21:43
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!