powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / форма перехода на нужную строку
37 сообщений из 37, показаны все 2 страниц
форма перехода на нужную строку
    #36844567
king_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В ячейке А1 нужна постоянно активная форма (окошко ввода) чтобы при вводе данных автоматически перемещаться на нужную строку.
...
Рейтинг: 0 / 0
форма перехода на нужную строку
    #36845121
DV68
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
king_k,

Можно через гиперссылку:
...
Рейтинг: 0 / 0
форма перехода на нужную строку
    #36845252
Cursky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
king_k,

Когда-то собирался сделать себе нечто подобное с поиском. Немного недоделал, форма иногда пропадает.
Вот ваш пример:
...
Рейтинг: 0 / 0
форма перехода на нужную строку
    #36845748
king_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Немножко не то. Я тут более подробно привел пример каким поиском я сейчас пользуюсь.
Жму кнопку ПОИСК , открывается макрос, ввожу например 0200 жму ентер и оно автоматически переходит на нужною строку.
Я хочу все то же, но чтобы вместо кнопки ПОИСК было окошко в которое можна сразу вводить данные для поиска.
...
Рейтинг: 0 / 0
форма перехода на нужную строку
    #36846428
Cursky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
king_k,

Ну почему же не то? Там всё есть, просто в модуле формы frmSearch закомментируйте AddValue и
раскомментируйте Search. Я расчитывал, что вы разберётесь сами.
...
Рейтинг: 0 / 0
форма перехода на нужную строку
    #36846446
Cursky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
форма перехода на нужную строку
    #36846517
king_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уже то, раньше было не то) Раньше не переходило на нужную строку а добавляло внизу новые данные.
...
Рейтинг: 0 / 0
форма перехода на нужную строку
    #36846526
king_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо большущее! Теперь будет намного удобней работать. Это для поиска по коду товара ассортимент больше 2-х тысяч.
А возможно к этому окошку прикрепить например 4-х значное число чтобы при вводе первой цыфры кода скажем "2" автоматически осуществлялся переход на позиции которые начинаются с 2-ки?
...
Рейтинг: 0 / 0
форма перехода на нужную строку
    #36846560
Cursky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
king_kРаньше не переходило на нужную строку а добавляло внизу новые данные.
Это был бонус, может когда-нибудь пригодится. И это ещё не всё: если вы проявите любопытство, то можете найти в обоих примерах процедуру,
которая создаёт пользовательскую панель инструментов для поиска. Если будет нужно - раскомментируйте её вызов. Тогда, правда, придётся сместить расположение формы по оси Y.
...
Рейтинг: 0 / 0
форма перехода на нужную строку
    #36846599
Cursky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
king_kСпасибо большущее! Теперь будет намного удобней работать. Это для поиска по коду товара ассортимент больше 2-х тысяч.
А возможно к этому окошку прикрепить например 4-х значное число чтобы при вводе первой цыфры кода скажем "2" автоматически осуществлялся переход на позиции которые начинаются с 2-ки?
Можно попробовать. Если что-то надо подправить, то доделаем завтра. Вот посмотрите:
...
Рейтинг: 0 / 0
форма перехода на нужную строку
    #36846730
king_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо еще раз! Все прекрасно работает, очень удобно работать именно с последним вариантом.
Много плюсов,например при выделении оно выделяет всю строку и если в документе много столбиков без проблем можно найти нужное значение. При удалении данных в окошке в обратном порядке возвращает вверх списка. Именно то что я хотел. Експортировал форму с макросами в робочий документ, подправил чуток, перенес вверх в удобное место и пожалуй все. Ну разве что кнопку с макросом которая будет очищать и активировать окошко для следующего ввода.
...
Рейтинг: 0 / 0
форма перехода на нужную строку
    #36847774
king_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нашел проблемку, после замены значения на листе 2 пропадает форма. Работает только с лист 1.

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If ActiveSheet.Name = "ТОВАР" Then
FormShow
Else
Unload frmSearch
End If
End Sub

изменил на

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If ActiveSheet.Name = "ТОВАР" Then
FormShow
Else
Unload frmSearch
End If
If ActiveSheet.Name = "ТОВАР 2" Then
FormShow
Else
Unload frmSearch
End If
End Sub

после чего начал работать лист 2 и перестал работать лист 1:)

Что делать?
...
Рейтинг: 0 / 0
форма перехода на нужную строку
    #36847869
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
king_k
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If ActiveSheet.Name = "ТОВАР" Then
        FormShow
    Else
        Unload frmSearch
    End If
    If ActiveSheet.Name = "ТОВАР 2" Then
        FormShow
    Else
        Unload frmSearch
    End If
End Sub

после чего начал работать лист 2 и перестал работать лист 1:)

Что делать?Данный код можно было бы и написать покороче, проблемы вашу наверно не решит, но более наглядно. На всякий случай ещё применил Ucase:
Код: plaintext
1.
2.
3.
4.
5.
6.
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If UCASE(ActiveSheet.Name) = "ТОВАР" Or UCASE(ActiveSheet.Name) = "ТОВАР 2" Then
        FormShow
    Else
        Unload frmSearch
    End If
End Sub
...
Рейтинг: 0 / 0
форма перехода на нужную строку
    #36847888
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя наверно правильнее так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Option Explicit

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
 On Error Resume Next
 
 If UCase(ActiveSheet.Name) = "ТОВАР" Or UCase(ActiveSheet.Name) = "ТОВАР 2" Then
     Unload frmSearch
     FormShow
  Else
     Unload frmSearch
 End If

End Sub
...
Рейтинг: 0 / 0
форма перехода на нужную строку
    #36848070
king_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все работает уже, подошло, спасибо)
...
Рейтинг: 0 / 0
форма перехода на нужную строку
    #36848094
king_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне If ActiveSheet.Name = "ТОВАР" Or ActiveSheet.Name = "ТОВАР 2" Then надо было написать, спасибо еще раз.
...
Рейтинг: 0 / 0
форма перехода на нужную строку
    #36848164
king_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Djon PlayerХотя наверно правильнее так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Option Explicit

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
 On Error Resume Next
 
 If UCase(ActiveSheet.Name) = "ТОВАР" Or UCase(ActiveSheet.Name) = "ТОВАР 2" Then
     Unload frmSearch
     FormShow
  Else
     Unload frmSearch
 End If

End Sub


решило проблему, очищает форму как я хотел но не активирует ее. То есть при вводе нового кода все равно придется щелкать форму чтобы появился курсор.
...
Рейтинг: 0 / 0
форма перехода на нужную строку
    #36848426
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
king_k[quot Djon Player]решило проблему, очищает форму как я хотел но не активирует ее. То есть при вводе нового кода все равно придется щелкать форму чтобы появился курсор.Чуть чуть поподробнее,не совсем понял, что имеется ввиду.
...
Рейтинг: 0 / 0
форма перехода на нужную строку
    #36848504
king_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Djon Playerking_k[quot Djon Player]решило проблему, очищает форму как я хотел но не активирует ее. То есть при вводе нового кода все равно придется щелкать форму чтобы появился курсор.Чуть чуть поподробнее,не совсем понял, что имеется ввиду.

Например я изменил данные в любой ячейке нажал "ентер". Чтобы после нажатия "ентер" актвировалась форма, мигал курсор.
...
Рейтинг: 0 / 0
форма перехода на нужную строку
    #36848525
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
king_kНапример я изменил данные в любой ячейке нажал "ентер". Чтобы после нажатия "ентер" актвировалась форма, мигал курсор.Т.е. имеется ввиду, что нужно, чтобы при любом изменении значений в какой-либо ячейке Excel, сразу после нажатия кнопки Enter, чтобы курсор переходил в форму поиcка?
При этом надо, чтобы ещё и поле в форме поиска очищалось?
...
Рейтинг: 0 / 0
форма перехода на нужную строку
    #36848565
king_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Djon Playerking_kНапример я изменил данные в любой ячейке нажал "ентер". Чтобы после нажатия "ентер" актвировалась форма, мигал курсор.Т.е. имеется ввиду, что нужно, чтобы при любом изменении значений в какой-либо ячейке Excel, сразу после нажатия кнопки Enter, чтобы курсор переходил в форму поиcка?
При этом надо, чтобы ещё и поле в форме поиска очищалось?

Да, оно уже очищается но не активируется.
...
Рейтинг: 0 / 0
форма перехода на нужную строку
    #36848570
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поидее надо в объекты Товар и Товар 2 поместить процедуры вида
Код: plaintext
1.
2.
Private Sub Worksheet_Change(ByVal Target As Range)
 FormShow
End Sub

А в самой процедуре FormShow сделать так, чтобы TextBox1 стал активным.
Давно формами не занимался, поэтому забыл уже некоторые вещи, поэтому говорю приблизительно.
...
Рейтинг: 0 / 0
форма перехода на нужную строку
    #36848965
king_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
textBox1.Focus()
показывает курсор но у меня не получается
...
Рейтинг: 0 / 0
форма перехода на нужную строку
    #36849103
king_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Private Sub UserForm_Initialize()
TextBox1.SetFocus
End Sub

не хочет работать(
...
Рейтинг: 0 / 0
форма перехода на нужную строку
    #36849422
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для начала вопрос к гуру VB-VBA

Есть к примеру событие TextBox_Change

Можно ли сделать так, чтобы выполнить команду присвоения, к примеру TextBox.Value=1, но чтобы при этом событие TextBox_Change не выполнялось.
Т.е. что то наподобие Application.EnableEvents = False для событий в Excel.
Без этой фишки на ум лишь приходит использование переменных и в зависимости от них обрабатывать событие, либо нет. А надо, чтобы событие в принципе не запускалось, пока это не потребуется.
...
Рейтинг: 0 / 0
форма перехода на нужную строку
    #36849768
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
king_k,

Что-то никак не пойму, в чем-же тут проблема. Эксперементировал по всякому.
При изменении ячейки и нажатия Enter, фокус переходит в поле формы, но курсор не отображается. Если нажимать кнопку Backspace, то содержимое текстового поля стирается по символьно после каждого нажатия, но если нажимать какие-то буквы или цифры, то они не появляются в форме, как будто какая-то фильтрация на ввод символов.
...
Рейтинг: 0 / 0
форма перехода на нужную строку
    #36849801
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
king_k,

Что-то никак не пойму, в чем-же тут проблема. Эксперементировал по всякому.
При изменении ячейки и нажатия Enter, фокус переходит в поле формы, но курсор не отображается. Если нажимать кнопку Backspace, то содержимое текстового поля стирается по символьно после каждого нажатия, но если нажимать какие-то буквы или цифры, то они не появляются в форме, как будто какая-то фильтрация на ввод символов.
...
Рейтинг: 0 / 0
форма перехода на нужную строку
    #36849804
Cursky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Djon Player,
Всё дело в функциях WinAPI, которые выводят форму на экран. Для себя я не стал заморачиваться и
сделал обычную маленькую форму с текстовым полем, которая появляется в определённом месте экрана.
...
Рейтинг: 0 / 0
форма перехода на нужную строку
    #36849815
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cursky,

Я уже заремарил код, который меняет стиль формы с помощью WinAPI, теперь он не используется и файл перезапускал, всё равно эффект такой-же.
...
Рейтинг: 0 / 0
форма перехода на нужную строку
    #36849941
Cursky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Djon Player,

Кстати, модуль modForm был мной позаимствован из этой надстройки, с последующим удалением лишних деталей.
...
Рейтинг: 0 / 0
форма перехода на нужную строку
    #36850498
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
king_k,

В конец запутавшись в чужом коде, решил подстроить его под себя, убрал всё лишнее
Кажется получилось.
Правда содержимое листов Товар и Товар 2 попорчено в ходе экспериментов.
...
Рейтинг: 0 / 0
форма перехода на нужную строку
    #36850585
Cursky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Djon Player,

Ну вот примерно так и я себе сделал. Извиняюсь, что не выложил, а заставил вас ломать голову. Лень было.:))
Там ещё функцию, определяющая последнюю ячейку надо немного поправить или заменить на другую,
т.к. если в столбце есть пустые ячейки, то не все данные будут найдены.
Вот все 3 варианта:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Public Function LastCell(Sheet As String, Column As Long) As Long
    LastCell = Application.CountA(Sheets(Sheet).Columns(Column))
End Function

Public Function LastCell2(Sheet As String, Column As Long) As Long
    LastCell2 = Sheets(Sheet).Cells(Sheets(Sheet).Rows.Count, Column).End(xlUp).Row
End Function

Public Function LastCell3(Sheet As String, Column As Long) As Long
    LastCell3 = Sheets(Sheet).Columns(Column).SpecialCells(xlCellTypeLastCell).Row
End Function
...
Рейтинг: 0 / 0
форма перехода на нужную строку
    #36850642
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CurskyDjon Player,

Ну вот примерно так и я себе сделал. Извиняюсь, что не выложил, а заставил вас ломать голову. Лень было.:))
Там ещё функцию, определяющая последнюю ячейку надо немного поправить или заменить на другую,
т.к. если в столбце есть пустые ячейки, то не все данные будут найдены.
Ну ничего, для мозга полезно, вспомнил былое, давно уже формы не программировал.
А так там ещё много чего поправить можно и нужно, в частности в коде, который ищет строку по значению в форме надо добавить проверку, что строка поиска не пустая, а если пустая, то искать не надо.
...
Рейтинг: 0 / 0
форма перехода на нужную строку
    #36851462
king_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Djon Playerking_k,

В конец запутавшись в чужом коде, решил подстроить его под себя, убрал всё лишнее
Кажется получилось.

Если в варианте который предложил Cursky в modForm выключить AdjustWindowStyle GetHwnd(frmSearch, False) то из него получится похожий на ваш вариант с внешним окном формы и в нем тоже после операций с данными активируется курсор.
А вот с встроенной формой AdjustWindowStyle GetHwnd(frmSearch, True) курсор не появляется и я никак не могу найти причину.
...
Рейтинг: 0 / 0
форма перехода на нужную строку
    #36851718
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
king_k,

Надо разбираться, что делает эта функция GetHwnd, когда Var2=True
Тут я помочь не могу, т.к. не знаю специфику функций WinApi GetWindowLong, SetWindowLong, SetWindowPos, возможно какой-то из параметров отключает курсор, в частности например какой-то из нулей 0.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Public Function GetHwnd(Var1 As Object, Optional Var2 As Boolean = False) As Long
    Dim Var3 As Long
    Dim Var4 As Long
    Dim Var5 As Long
    Dim PosX As Long
    Dim PosY As Long
    PosX =  10                                          'Расположение формы на листе
    PosY =  45                                         'Расположение формы на листе
    Var3 = FindWindow("ThunderDframe", Var1.Caption)
    If Var2 Then
        Var4 = GetWindowLong(Var3, GWL_STYLE)
        Var4 = Var4 And Not WS_CAPTION And Not WS_BORDER
        Var5 = SetWindowLong(Var3, GWL_STYLE, Var4)
        Var5 = SetWindowLong(Var3, GWL_EXSTYLE,  0 )
        SetWindowPos Var3,  0 , PosX, PosY,  0 ,  0 , SWP_NOSIZE Or SWP_NOOWNERZORDER Or SWP_NOZORDER Or SWP_FRAMECHANGED
    End If
    GetHwnd = Var3
End Function
...
Рейтинг: 0 / 0
форма перехода на нужную строку
    #36852110
king_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Djon Player,

Эти функции здесь описаны http://www.firststeps.ru/mfc/winapi/win/r.php?96 но не стоит ломать голову, это не столь важно. Надо будет поэкспериментировать когда будет время,а пока что форма работает как надо с внешним окном и это главное:)
...
Рейтинг: 0 / 0
форма перехода на нужную строку
    #36856669
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
king_kDjon Player,

Эти функции здесь описаны http://www.firststeps.ru/mfc/winapi/win/r.php?96 Спасибо, почитаю.
...
Рейтинг: 0 / 0
37 сообщений из 37, показаны все 2 страниц
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / форма перехода на нужную строку
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]