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

Вход

Регистрация

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

 

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

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Добавление макросом строки в базу данных и ее выделение
Egider Дата: Вторник, 01.07.2025, 18:18 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 58
Репутация: 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("D1:D10000").Find(номер.Text).Selectt
End Sub
[/vba]


Пенсионер

Сообщение отредактировал Egider - Среда, 02.07.2025, 13:57
 
Ответить
СообщениеУважаемые специалисты-форумчане! есть рабочий макрос. который добавляет новую строку по введенным в юзерформу данным. Необходимо, чтобы после введения строки, была выделена первая ячейка именно из этой введенной строки. Причем, даже после проведения сортировки, указанной в макросе. СПАСИБО. Это нужно для того, чтобы после введения новой строки не искать ее с помощью поисковика.
[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("D1:D10000").Find(номер.Text).Selectt
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
Egider Дата: Пятница, 04.07.2025, 16:20 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 58
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Большое спасибо за подсказку уважаемый i691198, первая и вторая строки работают. Однако, есть проблема в которой не могу решить как ее преодолеть. После добавления строки открывается нужная страница, но она не активна. Невозможно ее прокрутить или сделать еще что либо. Она становится активной только после переключения на другую страницу и затем обратно. Что происходит? СПАСИБО.


Пенсионер

Сообщение отредактировал Egider - Пятница, 04.07.2025, 16:49
 
Ответить
СообщениеБольшое спасибо за подсказку уважаемый i691198, первая и вторая строки работают. Однако, есть проблема в которой не могу решить как ее преодолеть. После добавления строки открывается нужная страница, но она не активна. Невозможно ее прокрутить или сделать еще что либо. Она становится активной только после переключения на другую страницу и затем обратно. Что происходит? СПАСИБО.

Автор - Egider
Дата добавления - 04.07.2025 в 16:20
MikeVol Дата: Пятница, 04.07.2025, 16:46 | Сообщение № 4
Группа: Проверенные
Ранг: Обитатель
Сообщений: 447
Репутация: 106 ±
Замечаний: 0% ±

MSO LTSC 2021 EN
Egider, А так?[vba]
Код
     End With

    Application.Goto ActiveWorkbook.Worksheets("Лист2").Range("D1:D10000").Find(номер.Text), True
End Sub
[/vba]


Ученик.
Одесса - Украина
 
Ответить
СообщениеEgider, А так?[vba]
Код
     End With

    Application.Goto ActiveWorkbook.Worksheets("Лист2").Range("D1:D10000").Find(номер.Text), True
End Sub
[/vba]

Автор - MikeVol
Дата добавления - 04.07.2025 в 16:46
Egider Дата: Пятница, 04.07.2025, 17:02 | Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 58
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Спасибо MikeVol, на Excel 2013 работает. На Excel 2016 активация не работала в первых двух вариантах. Вашу версию испробую только в понедельник. Еще раз спасибо за внимание ВСЕМ!!!


Пенсионер
 
Ответить
СообщениеСпасибо MikeVol, на Excel 2013 работает. На Excel 2016 активация не работала в первых двух вариантах. Вашу версию испробую только в понедельник. Еще раз спасибо за внимание ВСЕМ!!!

Автор - Egider
Дата добавления - 04.07.2025 в 17:02
MikeVol Дата: Пятница, 04.07.2025, 19:04 | Сообщение № 6
Группа: Проверенные
Ранг: Обитатель
Сообщений: 447
Репутация: 106 ±
Замечаний: 0% ±

MSO LTSC 2021 EN
Egider, Можете убрать , True так тоже прокрутит на ту ячейку с искомым значением.


Ученик.
Одесса - Украина
 
Ответить
СообщениеEgider, Можете убрать , True так тоже прокрутит на ту ячейку с искомым значением.

Автор - MikeVol
Дата добавления - 04.07.2025 в 19:04
  • Страница 1 из 1
  • 1
Поиск:

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