Форма для поиска данных excel

Если строка данных очень широка и требует многократной горизонтальной прокрутки, рассмотрите возможность использования формы данных для добавления, изменения, поиска и удаления строк.

Общие сведения о форме данных

Форма данных обеспечивает удобный способ ввода и отображения строк данных из диапазонов или таблиц, при котором не нужна горизонтальная прокрутка. Использовать форму данных может быть проще, чем перемещаться между столбцами, когда их слишком много для одновременного отображения на экране. Форму данных можно применять тогда, когда достаточно простой формы с текстовыми полями, в качестве подписей которых используются заголовки столбцов, и когда не требуются сложные или пользовательские возможности, например списки и счетчики.

Пример типичной формы данных

Microsoft Excel может автоматически создавать встроенные форма данных для диапазон или таблица. Такая форма представляет собой диалоговое окно, в котором все заголовки столбцов отображаются в виде подписей. Каждой подписи соответствует текстовое поле, в которое можно вводить данные для столбца (максимальное количество столбцов — 32). В форме данных можно вводить новые строки, искать строки с помощью навигации, а также (в зависимости от содержимого ячеек) обновлять строки или удалять их. Если ячейка содержит формула, ее результат отображается в форме данных, но саму формулу в форме данных изменить нельзя.

Примечание: Форму данных нельзя распечатать. Кроме того, поскольку эта форма является модальным диалоговым окном, то, пока она открыта, в Excel невозможно воспользоваться командой Печать и кнопкой Печать. При необходимости можно сделать снимок формы (с помощью клавиши Windows Print Screen) и скопировать его в Microsoft Paint или другую программу.

Добавление кнопки «Форма» на ленту

  1. При необходимости добавьте заголовки во все столбцы диапазона или таблицы. На основе этих заголовков создаются подписи для всех полей формы.

    Важно: Убедитесь, что в диапазоне данных нет пустых строк.

  2. Щелкните ячейку в диапазоне или таблице, куда нужно добавить форму.

  3. Чтобы добавить кнопку формы Кнопка «Форма» панели быстрого доступа, сделайте следующее:

    1. Щелкните стрелку рядом с панелью быстрого доступа и выберите пункт Другие команды.

    2. В поле «Выбор команд» щелкните «Все команды«, а затем нажмите кнопку «Форма Кнопка «Форма» в списке.

    3. Нажмите кнопку Добавить, а затем — кнопку ОК.

  4. На панели быстрого доступа нажмите кнопку «Форма » Кнопка «Форма».

Важно:  Если отображается сообщение «В форме данных слишком много полей», необходимо сократить число столбцов: в форме данных их должно быть не более 32. Один из способов решения этой проблемы (при работы с диапазоном столбцов) — вставить пустой столбец, разбив диапазон на два. Затем, если необходимо, создайте отдельную форму данных для столбцов справа от пустого столбца.

Использование формы данных

Форму данных можно использовать для добавления, поиска, изменения и удаления строк в диапазоне или таблице.

Добавление строки данных

  1. В форме данных нажмите кнопку Добавить.

  2. В открывшейся форме данных введите данные для новой строки в показанных полях.

    Чтобы перейти к следующему полю в строке, нажмите клавишу TAB. Чтобы перейти к предыдущему полю, нажмите клавиши SHIFT+TAB.

  3. Указав нужные данные, нажмите клавишу ВВОД, чтобы сохранить изменения и добавить строку в нижнюю часть диапазона или таблицы.

    Важно: Если отображается сообщение «Невозможно расширить список или базу данных», это может означать, что существующие данные будут перезаписаны при продолжении. При добавлении строк с помощью формы данных таблицы и диапазоны расширяются вниз. Если при этом могут быть перезаписаны какие-либо данные, то появляется сообщение Невозможно расширить список или базу данных. Измените расположение данных так, чтобы диапазон или таблица могли расширяться вниз от последней строки.

Примечание: До нажатия клавиши ВВОД отменить любые изменения можно с помощью кнопки Вернуть на форме данных. При этом из полей удалятся все внесенные данные.

Поиск строки с помощью навигации

Выполните одно или несколько действий, указанных ниже.

  • Чтобы последовательно перейти от одной строки к другой, щелкните нужную стрелку на полосе прокрутки в форме данных.

  • Чтобы перейти сразу через десять строк, щелкните полосу прокрутки между стрелками.

  • Чтобы перейти к следующей строке в диапазоне или таблице, нажмите кнопку Далее.

  • Чтобы перейти к предыдущей строке в диапазоне или таблице, нажмите кнопку Назад.

Поиск строки по определенным условиям

  1. Нажмите кнопку Критерии и введите в форму данных условие сравнения.

    В форме остаются только те строки, содержимое которых начинается с указанных данных. Например, если в качестве условия сравнения ввести Ша, то будут найдены строки «Шабалин» и «Шашков». Чтобы найти текст, который содержит только определенные символы, в условиях сравнения можно использовать подстановочные знаки.

    При создании условий сравнения для фильтров, а также при поиске и замене содержимого можно использовать указанные ниже подставочные знаки.

    Подстановочный знак

    Чтобы найти

    ? (вопросительный знак)

    Любой символ (один)
    Пример: условию «стро?а» соответствуют результаты «строфа» и «строка»

    * (звездочка)

    Любое количество символов
    Пример: условию «*-восток» соответствуют результаты «северо-восток» и «юго-восток»

    ~ (тильда), за которой следует ?, * или ~

    Вопросительный знак, звездочку или тильду
    Пример: условию «ан91~?» соответствует результат «ан91?»

  2. Чтобы найти соответствующие условиям строки, нажмите кнопку Далее или Назад.

  3. Чтобы продолжить добавление, изменение или удаление строк в форме данных, нажмите кнопку Правка.

Изменение данных в строке

  1. Найдите строку, которую нужно изменить.

  2. Измените данные в строке.

    Чтобы перейти к следующему полю в строке, нажмите клавишу TAB. Чтобы перейти к предыдущему полю, нажмите клавиши SHIFT+TAB.

  3. Изменив данные, нажмите кнопку ВВОД. Строка будет обновлена.

    Переход к следующей строке производится автоматически.

    Примечание: До нажатия клавиши ВВОД отменить любые изменения можно с помощью кнопки Вернуть.

Удаление строки

  1. Найдите в форме данных строку, которую нужно удалить.

  2. Нажмите кнопку Удалить.

    Предупреждение: Откроется диалоговое окно для подтверждения операции. После подтверждения отменить удаление строки невозможно.

Закрытие формы данных

Чтобы закрыть форму данных и вернуться к листу, нажмите в ней кнопку Закрыть.

Дополнительные сведения

Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.

См. также

Общие сведения о формах, элементах управления формы и элементах ActiveX на листе

Выпадающий список с быстрым поиском

Классический выпадающий список в ячейке листа Excel, сделанный через Данные — Проверка (Data — Validation) — простая и удобная штука, которую ежедневно применяют очень многие пользователи. Однако, у этого списка есть один весьма серьезный недостаток — в нём нет быстрого поиска по первым символам, т.е. фильтрации (отбора) только тех значений, куда введённый фрагмент входит как подстрока. Это серьезно ухудшает удобство пользования даже если в списке всего пара-тройка десятков позиций, а при нескольких сотнях убивает юзабилити напрочь.

Давайте рассмотрим как всё же реализовать подобный трюк. В качестве подопытного кролика возьмём список 250 лучших фильмов по версии IMDb:

Выпаюащий список с поиском

Конечная цель — создать выпадающий список (ячейка G3), в котором можно будет быстро находить нужные фильмы, введя только жанр, год или фрагмент названия, например «гамп».

Шаг 1. Определяем, кто нам нужен

Сначала нам нужно понять, какие из исходных ячеек нужно показывать в списке, т.е. определить содержится ли введённый в выпадающем списке текст (например, жанр «детектив») в названии фильма. Для этого добавим слева от исходных данных еще один столбец с функцией ПОИСК (SEARCH), которая ищет заданную подстроку в тексте и выдает либо порядковый номер символа, где он был обнаружен, либо ошибку, если его там нет:

Ищем вхождения функцией ПОИСК

Теперь завернем нашу формулу в функцию проверки ЕЧИСЛО (ISNUMBER), которая превратит числа в логическую ИСТИНУ (TRUE), а ошибки — в ЛОЖЬ (FALSE):

Превращаем в ИСТИНУ и ЛОЖЬ

Теперь сделаем так, чтобы ЛОЖЬ превратилась в 0, а вместо ИСТИНА в столбце появились последовательно возрастающие индексы-числа 1,2,3… и т.д. Это можно сделать с помощью добавления к нашей же формуле ещё парочки функций:

Создаем индексы

Здесь функция ЕСЛИ (IF) проверяет что мы имеем (ИСТИНУ или ЛОЖЬ), и

  • если была ИСТИНА, то выводит максимальное значение из всех вышестоящих чисел + 1
  • если была ЛОЖЬ, то выводит 0

Шаг 2. Отбираем в отдельный список

Дальше — проще. Теперь банальной функцией ВПР (VLOOKUP) просто выведём все найденные названия (я добавил столбец с порядковыми номерами для удобства):

Извлекаем нужные элементы

После этого можно поиграться, вводя в жёлтую ячейку G2 разные слова и фразы и понаблюдать за тем, как наши формулы отбирают только подходящие фильмы:

Тестируем отбор

Шаг 3. Создаем именованный диапазон

Теперь создадим именованный диапазон, который будет ссылаться на отобранные фильмы. Для этого выбрем на вкладке Формулы команды Диспетчер имен — Создать (Formulas — Name Manager — Create):

Создаем именованный диапазон

Имя диапазона может быть любым (например, Фильмы), а самое главное — это функция СМЕЩ (OFFSET), которая и делает всю работу. Напомню её синтаксис, если вы подзабыли:

=СМЕЩ(начальная_ячейка; сдвиг_вниз; сдвиг_вправо; высота; ширина)

Синтаксис СМЕЩ

У нас:

  • В качестве начальной ячейки задаём первую ячейку списка отобранных элементов (E2).
  • Сдвиги вниз и вправо у нас отсутствуют, т.е. равны нулю.
  • Высота диапазона у нас соответствует максимальному значению индекса из столбца А.
  • Ширина диапазона — 1 столбец.

Осталось сделать выпадающий список.

Шаг 4. Создаем выпадающий список

Выделим жёлтую ячейку (G2) и выберем на вкладке Данные команду Проверка данных (Data — Validation). В открывшемся окне выбрем Список (List) в поле Тип данных (Allow), а в качестве источника введем имя нашего созданного диапазона со знаком равно перед ним:

Создаем выпадающий список

Чтобы Excel не ругался при вводе на неточное совпадение наших фраз с исходным списком, на вкладке Сообщение об ошибке (Error Alert) в этом окне нужно выключить флажок Выводить сообщение об ошибке (Show error alert):

Отключаем сообщение об ошибке

Вот и всё. Можно жать на ОК и наслаждаться результатом:

Выпадающий список с поиском

Для пущего удобства при вводе с клавиатуры можно использовать Ctrl+Enter вместо Enter после ввода текста (так активная ячейка не уходит вниз) и сочетание клавиш Alt+стрелка вниз, чтобы развернуть выпадающий список без мыши.

P.S. 

В принципе, можно было бы и не продолжать, но недавно Microsoft выкатила обновление вычислительного движка Excel, который теперь поддерживает динамические массивы и имеет специальные функции для работы с ними. Большинству пользователей они станут доступны в ближайшие месяцы, но даже если пока этих возможностей в вашем Excel нет — грех не показать как элементарно с их помощью решается наша задача.

Вып.список на динамических массивах

Всё, что мы делали на Шагах 1-3 заменяется одной(!) формулой, где новая функция ФИЛЬТР (FILTER) отбирает из исходного диапазона A2:A251 только те фильмы, которые содержат заданную подстроку.

А дальше останется при создании выпадающего списка указать в качестве источника первую ячейку диапазона отобранных фильмов (C2) и добавить к ней знак #, чтобы получить ссылку на весь динамический массив:

Создание вып.списка на динамическом массиве

И всё. Никаких именованных диапазонов и медленных СМЕЩ, никаких танцев с дополнительными столбцами и формулами. Песня!

Ссылки по теме

  • Что такое динамические массивы в Excel
  • Разбор трех основных функций динамических массивов: СОРТ, ФИЛЬТР и УНИК
  • 4 способа создать выпадающий список на листе Excel

Форма поиска c выводом результатов по всей книге

elo4ka07

Дата: Среда, 16.09.2015, 09:28 |
Сообщение № 1

Группа: Пользователи

Ранг: Прохожий

Сообщений: 8


Репутация:

0

±

Замечаний:
20% ±


Excel 2013

Всем доброго дня! Возникла проблема с созданием формы поиска, нашла нужный вариант, но вот под себя никак не получается исправить, опыта работы с VBA практически нет.
Смысл таков:
есть база номеров, на отдельный номер создается вкладка, где заполняются детали.

Необходимо:
1. поиск деталей по всей книге
2. вывод результатов поиска в окошке (это делается), но чтобы из этого списка можно было

выбрать и перейти на соответствующий лист.

3. Поиск идет с совпадением с начала наименования. Не ищет частичные совпадения ((

Поиск который нашла я ищет только на активном листе и соответственно гиперссылки не используются. Поиск осуществляется чрез отдельную форму.

Вот код:

[vba]

Код

Private Sub TextBox1_Change()
       Dim j As Long, i As Long, poisk As Range, iAdr$, LT%
       ListBox1.Clear
       LT = Len(TextBox1.Value)
       If LT = 0 Then Exit Sub
       j = 0
       iAdr = ActiveSheet.UsedRange.Address
       iAdr = Mid(iAdr, InStr(iAdr, «:») + 1)
       For Each poisk In ActiveSheet.Range(«A1:» & iAdr)
       If UCase(Left(poisk, LT)) = UCase(TextBox1.Value) Then
           ListBox1.AddItem poisk.Address
           ListBox1.List(j, 1) = poisk
           j = j + 1
       End If
       Next
End Sub

Private Sub ListBox1_Click()
       If ListBox1.ListIndex = -1 Then Exit Sub
       Range(ListBox1).Select
End Sub

[/vba]

Заранее огромное спасибо.

К сообщению приложен файл:

2067198.xlsm
(54.9 Kb)

Сообщение отредактировал elo4ka07Среда, 16.09.2015, 11:03

 

Ответить

SLAVICK

Дата: Среда, 16.09.2015, 13:01 |
Сообщение № 2

Группа: Модераторы

Ранг: Старожил

Сообщений: 2290


Репутация:

766

±

Замечаний:
0% ±


2019

Вот пробуйте :D

Обратите внимание на:
[vba]

Код

«*» & TextBox1.Value & «*»

[/vba]
«*» — это значит любые символы… т.е. при таком коде будет находить все ячейки в которых содержатся введенные символы
Если убрать сначала то будет искать все слова начинающиеся на введенные символы
[vba][/vba]
Если убрать в конце то будет искать все слова заканчивающиеся на введенные символы
[vba][/vba]
Можно вводить подстановочные знаки: * ?
С ними тоже будет работать, например:
М*а:
Машина
Мода
Мука…

М?р*
Морковь
но не
Микрорайон ^_^

К сообщению приложен файл:

1068260.xlsm
(61.9 Kb)


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICKСреда, 16.09.2015, 13:30

 

Ответить

nilem

Дата: Среда, 16.09.2015, 13:03 |
Сообщение № 3

Группа: Авторы

Ранг: Старожил

Сообщений: 1612


Репутация:

563

±

Замечаний:
0% ±


Excel 2013, 2016

………………… (Slavick уже нарисовал)


Яндекс.Деньги 4100159601573

Сообщение отредактировал nilemСреда, 16.09.2015, 13:06

 

Ответить

elo4ka07

Дата: Среда, 16.09.2015, 13:25 |
Сообщение № 4

Группа: Пользователи

Ранг: Прохожий

Сообщений: 8


Репутация:

0

±

Замечаний:
20% ±


Excel 2013

SLAVICK, ООООО!!!! я преклоняюсь перед вами!!! pray огромное спасибо!!!! hands всё работает и переходит, волшебство!!! first

 

Ответить

lFJl

Дата: Четверг, 17.09.2015, 13:20 |
Сообщение № 5

Группа: Проверенные

Ранг: Форумчанин

Сообщений: 236


Репутация:

6

±

Замечаний:
0% ±


Excel 2013

Еще вопрос по теме, если у нас наложен фильтр, который скрывает ячейку с данными, можно с этой ячейки убрать фильтр? или как-то по другому решить это?

 

Ответить

SLAVICK

Дата: Четверг, 17.09.2015, 13:53 |
Сообщение № 6

Группа: Модераторы

Ранг: Старожил

Сообщений: 2290


Репутация:

766

±

Замечаний:
0% ±


2019

Есть два варианта либо искать только в видимых ячейках
[vba]

Код

For Each poisk In sh.UsedRange.SpecialCells(xlCellTypeVisible) ‘ ДЛЯ ПОИСКА ТОЛЬКО В ВИДИМЫХ ЯЧЕЙКАХ

[/vba]

либо показывать скрытую ячейку
[vba]

Код

    »»»»»»»»’Для открытия спрятанной ячейки
     r.EntireRow.Hidden = False
     r.EntireColumn.Hidden = False
     »»»»»»»»»

[/vba]


Иногда все проще чем кажется с первого взгляда.

 

Ответить

urlchik

Дата: Вторник, 12.12.2017, 16:37 |
Сообщение № 7

Группа: Пользователи

Ранг: Участник

Сообщений: 68


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

SLAVICK, А как в существующей форме с листбоксом осуществить поиск?
1.Чтоб при нахождении искомого, в листбоксе автоматически выделялась строка с нужным результатом
2.При нажатии на кнопку «поиск», выполнялся поиск следующего совпадения

Познания в VBA =0,01. Пробывал в свою форму добавлять Ваш код (с исправлениями ссылок) — результата 0.

Заранее благодарен!


Век живи — век учись!

 

Ответить

Pelena

Дата: Вторник, 12.12.2017, 16:42 |
Сообщение № 8

Группа: Админы

Ранг: Местный житель

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

urlchik, прочитайте Правила форума и создайте свою тему. Эта тема закрыта


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

За исключением использования функции «Найти» в Excel, на самом деле вы можете создать собственное поле поиска для простого поиска необходимых значений. Эта статья подробно расскажет вам о двух методах создания собственного поля поиска в Excel.

Создайте собственное поле поиска с условным форматированием, чтобы выделить все результаты поиска
Создайте собственное окно поиска с формулами для вывода всех результатов поиска


Создайте собственное поле поиска с условным форматированием, чтобы выделить все результаты поиска

Вы можете сделать следующее, чтобы создать собственное поле поиска с помощью функции условного форматирования в Excel.

1. Выберите диапазон с данными, которые вам нужны для поиска в поле поиска, затем нажмите Условное форматирование > Новое правило под Главная таб. Смотрите скриншот:

2. в Новое правило форматирования диалоговое окно, вам необходимо:

2.1) Выбрать Используйте формулу, чтобы определить, какие ячейки следует форматировать. вариант в Выберите тип правила коробка;

2.2) Введите формулу = ISNUMBER (ПОИСК ($ B $ 2; A5)) в Формат значений, где эта формула истинна коробка;

2.3) Нажмите Формат кнопка, чтобы указать выделенный цвет для искомого значения;

2.4) Нажмите OK кнопку.

Заметки:

1. В формуле $ B $ 2 — это пустая ячейка, которую необходимо использовать в качестве поля поиска, а A5 — это первая ячейка выбранного диапазона, в котором необходимо искать значения. Пожалуйста, измените их по своему усмотрению.

2. В формуле не учитывается регистр.

Теперь поле поиска создано: при вводе критериев поиска в поле поиска B2 и нажатии клавиши Enter выполняется поиск всех совпадающих значений в указанном диапазоне, которые немедленно выделяются, как показано ниже.


Создайте собственное окно поиска с формулами для вывода всех результатов поиска

Предположим, у вас есть список данных, расположенный в диапазоне E4: E23, который вам нужно найти, если вы хотите перечислить все совпадающие значения в другом столбце после поиска с помощью собственного поля поиска, вы можете попробовать следующий метод.

1. Выберите пустую ячейку, которая находится рядом с ячейкой E4, здесь я выбираю ячейку D4, затем вводю формулу = ЕСЛИОШИБКА (ПОИСК ($ B $ 2; E4) + СТРОКА () / 100000; «») в строку формул, а затем нажмите Enter ключ. Смотрите скриншот:

Внимание: В формуле $ B $ 2 — это ячейка, которую необходимо использовать в качестве поля поиска, E4 — это первая ячейка списка данных, в котором необходимо выполнить поиск. Вы можете менять их по своему усмотрению.

2. Продолжайте выбирать ячейку E4, затем перетащите маркер заполнения вниз в ячейку D23. Смотрите скриншот:

3. Теперь выберите ячейку C4 и введите формулу. = ЕСЛИОШИБКА (РАНГ (D4; $ D $ 4: $ D $ 23,1); «») в панель формул и нажмите Enter ключ. Выберите ячейку C4, затем перетащите маркер заполнения до C23. Смотрите скриншот:

4. Теперь вам нужно заполнить диапазон A4: A23 порядковым номером, который увеличивается на 1 от 1 до 20, как показано на скриншоте ниже:

5. Выберите пустую ячейку, в которой будет отображаться результат поиска, введите формулу. = ЕСЛИОШИБКА (ВПР (A4; $ C $ 4: $ E $ 23,3; FALSE); «») в панель формул и нажмите Enter ключ. Продолжая выбирать ячейку B4, перетащите маркер заливки вниз до B23, как показано ниже.

С этого момента при вводе данных в поле поиска B2 все совпавшие значения будут перечислены в диапазоне B4: B23, как показано на скриншоте ниже.

Внимание: этот метод не чувствителен к регистру.


Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

124 / 3 / 0

Регистрация: 29.07.2013

Сообщений: 249

1

01.08.2013, 12:06. Показов 19206. Ответов 48


Студворк — интернет-сервис помощи студентам

Всем хорошего настроения!

Есть таблица, сделал форму для ввода данных. Необходимо чтобы при вводе данных в TextBox1 происходил поиск из первого столбца и после соответствия выводил в Textbox2 и TextBox3 значения этой строки соответственно из столбца 2 и 3, но не просто, а для редактирования. При нажатии кнопки Cange Record данные в искомой строке должны измениться.
Форма сейчас работает только на ввод, помогите с кодом поиска и редактирования.



1



124 / 3 / 0

Регистрация: 29.07.2013

Сообщений: 249

02.08.2013, 10:57

 [ТС]

2

Предложили неплохой вариант по поиску.

http://www.planetaexcel.ru/?PA… sage416815

Теперь надо чтобы редактированные данные попали на свое место.

Добавлено через 20 часов 36 минут
Нет никаких идей?



0



5590 / 1580 / 406

Регистрация: 23.12.2010

Сообщений: 2,366

Записей в блоге: 1

02.08.2013, 15:45

3

Тут идеи не нужны. Тут нужно воплощение идей.



3



124 / 3 / 0

Регистрация: 29.07.2013

Сообщений: 249

02.08.2013, 20:49

 [ТС]

4

KoGG, я оценил вложенный Вами труд детального понимания вопроса и подхода к его решению. Оч круто!!



0



6875 / 2807 / 533

Регистрация: 19.10.2012

Сообщений: 8,562

02.08.2013, 23:12

5

Как-то мне не нравится, что можно добавить уже существующий номер ещё раз. Но уже нельзя его изменить (т.к. выше есть такой же).
Т.е. нельзя изменить эту строку — номера вообще нельзя изменить (или можно изменить только на другой существующий — не вникал).



0



KoGG

5590 / 1580 / 406

Регистрация: 23.12.2010

Сообщений: 2,366

Записей в блоге: 1

03.08.2013, 17:57

6

To Hugo121 (полезно и ac1-caesar),
для решения проблемы задваивания записей с одним «Task Number» в конец процедуры formField1_Change добавить еще одну строку:

Visual Basic
1
Me.cmdbtnSave.Enabled = Not FindedFlag



2



124 / 3 / 0

Регистрация: 29.07.2013

Сообщений: 249

03.08.2013, 23:08

 [ТС]

7

Понял, отработаю и эту часть вопроса. Просто в моем случае процессы работают отдельно: — добавление новой записи и редактирование старой не пересекаются.



0



0 / 0 / 0

Регистрация: 24.03.2015

Сообщений: 1

24.03.2015, 10:55

8

Прошу помощи!!!!!!!
Имеется табличка и форма для ввода информации в данную таблицу (признаюсь сразу это вообще мой первый опыт с VBA). Необходимо что бы информацию можно было редактировать (из формы) и сохранять в том же месте, но с новыми редакциями. Для этого я вставил ComboBox -«поиск» инфа отображается, но при редактировании сохраняется только в столбце «А» и в новой строке. Получается дублирование что определенно не подходит. Перепробовал несколько вариантов из аналогичных работ по поиску, но ……. Помогите дописать код или хотя бы подскажите где можно взять.
Заранее благодарен!!!!



0



7 / 5 / 0

Регистрация: 15.05.2015

Сообщений: 342

19.10.2015, 13:36

9

Сделал табель учета рабочего времени в Excel, все считается отлично, но т.к. имеем дело с вводом времени в формате «НН:ММ» — неудобно, попросили создать форму…
В форме столкнулся с отсутствием как нужных знаний так и навыков в работе с VBA…, нужна помощь…

— При выборе Работника и Дня — не обновляется значения в соответствующих ComBox-ах, хотя при введении новых данных, все меняем без проблем — как реализовать?
Меняем значение ComBox-ов, меняются и отображаются значения связанных TexBox-ов и ячеек?!



0



3827 / 2254 / 751

Регистрация: 02.11.2012

Сообщений: 5,930

19.10.2015, 13:40

10

покажите ваши наработки.



0



mostApi

7 / 5 / 0

Регистрация: 15.05.2015

Сообщений: 342

19.10.2015, 14:08

11

Попутно спрошу, при объявлении выпадающего списка в ComboBox нельзя указать диапазон по строке?

Visual Basic
1
2
3
4
5
6
7
8
9
10
With ComboBox2
.Clear
'.AddItem Range("D10:AH10").Value - ???
.AddItem Range("D10").Value
.AddItem Range("E10").Value
.AddItem Range("F10").Value
.AddItem Range("G10").Value
и т.д.
.ListIndex = -1
End With

— или циклом заводить?
П.С. Пример табеля как бы тестовый, в созданном я не правил и не выкладывал оригинал…



0



dzug

695 / 236 / 18

Регистрация: 17.01.2011

Сообщений: 583

Записей в блоге: 1

19.10.2015, 14:26

12

попробуйте так

Visual Basic
1
ComboBox2.List = [D10:G10].Value



0



7 / 5 / 0

Регистрация: 15.05.2015

Сообщений: 342

19.10.2015, 14:31

13

Не ругается, но вы водит только первую ячейку из диапазона… Диапазон: [D10:AH10], т.е. D10 E10 F10 и т.д. по строке…



0



dzug

695 / 236 / 18

Регистрация: 17.01.2011

Сообщений: 583

Записей в блоге: 1

19.10.2015, 14:53

14

Да, это работает для столбца. Для строки сейчас посмотрю.

Добавлено через 12 минут
Вот так работает:

Visual Basic
1
2
3
4
With ComboBox2
For i = 4 To 34
.AddItem Cells(10, i)
Next



1



7 / 5 / 0

Регистрация: 15.05.2015

Сообщений: 342

19.10.2015, 15:03

15

dzug, да, циклом работает… спасибо!
Как в моем случае нужно было написать, чтоб при выборе значений в ComBox-ах обновлялись значения соответствующих TexBox-ов?



0



Vlad999

3827 / 2254 / 751

Регистрация: 02.11.2012

Сообщений: 5,930

19.10.2015, 15:08

16

можно так

Visual Basic
1
.List = Application.Transpose(Range("D10:AH10"))



1



695 / 236 / 18

Регистрация: 17.01.2011

Сообщений: 583

Записей в блоге: 1

19.10.2015, 15:19

17

Смотри Эксель — вложение к 3 посту, там есть обновление.



0



pashulka

4131 / 2235 / 940

Регистрация: 01.12.2010

Сообщений: 4,624

19.10.2015, 15:22

18

У ComboBox/ListBox есть ещё свойство Column, которое позволит осуществить желаемое, причём без цикла и транспонирования

Visual Basic
1
ComboBox2.Column = [D10:G10].Value



1



7 / 5 / 0

Регистрация: 15.05.2015

Сообщений: 342

19.10.2015, 15:34

19

dzug, pashulka, — посмотрел код, вроде как нашел где и как.., не могу понять как применить…



0



pashulka

4131 / 2235 / 940

Регистрация: 01.12.2010

Сообщений: 4,624

19.10.2015, 17:11

20

mostApi, Конкретно для Вашей таблицы (

только

заполнение TextBox/ComboBox)

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Private Sub UserForm_Initialize()
    Label5.Caption = ActiveSheet.Name
    With ComboBox1
         .Clear
         .Style = fmStyleDropDownList
         For iRow = 11 To Cells(Rows.Count, 3).End(xlUp).Row Step 2
             .AddItem Cells(iRow, 3)
         Next
         '.ListIndex = -1
    End With
    With ComboBox2
         .Clear
         .Style = fmStyleDropDownList
         .Column = Range("D10:AH10").Value
         '.ListIndex = -1
    End With
End Sub
 
Private Sub ComboBox1_Change()
    If ComboBox1.ListIndex > -1 And ComboBox2.ListIndex > -1 Then SetTime
End Sub
 
Private Sub ComboBox2_Change()
    If ComboBox1.ListIndex > -1 And ComboBox2.ListIndex > -1 Then SetTime
End Sub
 
Private Sub SetTime()
    With Columns(3).Find(ComboBox1, , xlValues, xlWhole)
         TextBox1 = Format(.Cells(1, ComboBox2.ListIndex + 2), "Long Time")
         TextBox2 = Format(.Cells(2, ComboBox2.ListIndex + 2), "Long Time")
    End With
    'Можно и через Cells + ComboBox1.ListIndex + ComboBox2.ListIndex
End Sub



1



Like this post? Please share to your friends:
  • Форма для подписи в word
  • Форма для письма word
  • Форма для опроса в word
  • Форма для оглавления в word
  • Форма для локальной сметы excel