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

Вход

Регистрация

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

 

= Мир MS Excel/добавление уникальных элементов в несколько ComboBox - Страница 3 - Мир MS Excel

Старая форма входа
  • Страница 3 из 3
  • «
  • 1
  • 2
  • 3
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » добавление уникальных элементов в несколько ComboBox (Макросы/Sub)
добавление уникальных элементов в несколько ComboBox
RAN Дата: Четверг, 17.04.2014, 22:26 | Сообщение № 41
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
поэтому вставляю часть макроса.

Если не секрет - зачем?
В этой части ошибок нет. :)
Что просили, то и пишет.


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
поэтому вставляю часть макроса.

Если не секрет - зачем?
В этой части ошибок нет. :)
Что просили, то и пишет.

Автор - RAN
Дата добавления - 17.04.2014 в 22:26
Wasilich Дата: Пятница, 18.04.2014, 09:28 | Сообщение № 42
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
Я тоже не телепат, но попробуйте
После MsgBox .......
дописать Exit Sub
 
Ответить
СообщениеЯ тоже не телепат, но попробуйте
После MsgBox .......
дописать Exit Sub

Автор - Wasilich
Дата добавления - 18.04.2014 в 09:28
sos-13 Дата: Пятница, 18.04.2014, 10:53 | Сообщение № 43
Группа: Пользователи
Ранг: Новичок
Сообщений: 45
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Спасибо всем за помощь и критику. Уже разобрался.
 
Ответить
СообщениеСпасибо всем за помощь и критику. Уже разобрался.

Автор - sos-13
Дата добавления - 18.04.2014 в 10:53
sos-13 Дата: Пятница, 18.04.2014, 11:41 | Сообщение № 44
Группа: Пользователи
Ранг: Новичок
Сообщений: 45
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Подскажите пожалуйста, как можно в переменную записать текущую дату?
 
Ответить
СообщениеПодскажите пожалуйста, как можно в переменную записать текущую дату?

Автор - sos-13
Дата добавления - 18.04.2014 в 11:41
sos-13 Дата: Пятница, 18.04.2014, 11:53 | Сообщение № 45
Группа: Пользователи
Ранг: Новичок
Сообщений: 45
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Типа как в excel формула "=тдата()"
 
Ответить
СообщениеТипа как в excel формула "=тдата()"

Автор - sos-13
Дата добавления - 18.04.2014 в 11:53
RAN Дата: Пятница, 18.04.2014, 12:01 | Сообщение № 46
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Date Function
Time Function
Now Function

F1 в помощь


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Пятница, 18.04.2014, 12:02
 
Ответить
СообщениеDate Function
Time Function
Now Function

F1 в помощь

Автор - RAN
Дата добавления - 18.04.2014 в 12:01
sos-13 Дата: Среда, 30.04.2014, 22:07 | Сообщение № 47
Группа: Пользователи
Ранг: Новичок
Сообщений: 45
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Доброго всем вечера! Хочу еще раз всех поблагодарить за помощь, за критику и т.д. Все практически готово. И форма как хотел и программка именно то что и задумывал. Остались некоторые нюансы.
Хочу сразу предупредить, что удалил из файла все бланки (отпускной, командировка и т.д.), так же удалил все данные с листа "Данные" все из-за размера, никак файл не хотел влазить в размер 100Кб.
Суть вопроса в следующем: есть листы: "База данных(отпуск)","База данных(командировка)" и "База данных(ведомость)" ( в дальнейшем будут ещё листы). Необходимо сделать так, чтобы при наборе фамилии в форме и нажатии на кнопку "Найти" выдавалось окно (пример на рисунке) с данными на человека где и когда он был в отпуске, командировке и т.д.


Проблему попытался решить следующим образом: создал лист "Поиск данных" (в последующем будет скрыт от посторонних глаз, если он вообще понадобиться), а потом выводить данные из ячеек этого листа в MsgBox.
Но запутался в циклах.
Всю процедуру поиска и вывода попытался сделать в Sub поиск().
Прошу Вас помочь, может быть можно все решить намного проще. Помогите пожалуйста.
К сообщению приложен файл: __-_-.zip (87.5 Kb)
 
Ответить
СообщениеДоброго всем вечера! Хочу еще раз всех поблагодарить за помощь, за критику и т.д. Все практически готово. И форма как хотел и программка именно то что и задумывал. Остались некоторые нюансы.
Хочу сразу предупредить, что удалил из файла все бланки (отпускной, командировка и т.д.), так же удалил все данные с листа "Данные" все из-за размера, никак файл не хотел влазить в размер 100Кб.
Суть вопроса в следующем: есть листы: "База данных(отпуск)","База данных(командировка)" и "База данных(ведомость)" ( в дальнейшем будут ещё листы). Необходимо сделать так, чтобы при наборе фамилии в форме и нажатии на кнопку "Найти" выдавалось окно (пример на рисунке) с данными на человека где и когда он был в отпуске, командировке и т.д.


Проблему попытался решить следующим образом: создал лист "Поиск данных" (в последующем будет скрыт от посторонних глаз, если он вообще понадобиться), а потом выводить данные из ячеек этого листа в MsgBox.
Но запутался в циклах.
Всю процедуру поиска и вывода попытался сделать в Sub поиск().
Прошу Вас помочь, может быть можно все решить намного проще. Помогите пожалуйста.

Автор - sos-13
Дата добавления - 30.04.2014 в 22:07
sos-13 Дата: Четверг, 01.05.2014, 10:54 | Сообщение № 48
Группа: Пользователи
Ранг: Новичок
Сообщений: 45
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Ребят помогите пожалуйста, проблема только в этом осталась
 
Ответить
СообщениеРебят помогите пожалуйста, проблема только в этом осталась

Автор - sos-13
Дата добавления - 01.05.2014 в 10:54
sos-13 Дата: Понедельник, 02.06.2014, 14:49 | Сообщение № 49
Группа: Пользователи
Ранг: Новичок
Сообщений: 45
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Все сделал, всем огромное спасибо. Есть маленькие недочеты, если не трудно подскажите.
Как определить последнюю заполненную ячейку, именно заполненную. Лучше объясню на примере, есть много строк:
Например:
N п/п
.
.
.
546
547
Пустая ячейка
549
550
и т.д.
Необходимо определить номер пустой ячейки, т.е. 548-ой
Конструкция sheets.cells(rows.count,1).end(xlup).row определяет 550-ю ячейку, мне необходимо, чтобы определило 548-ю.
Подскажите пожалуйста.
 
Ответить
СообщениеВсе сделал, всем огромное спасибо. Есть маленькие недочеты, если не трудно подскажите.
Как определить последнюю заполненную ячейку, именно заполненную. Лучше объясню на примере, есть много строк:
Например:
N п/п
.
.
.
546
547
Пустая ячейка
549
550
и т.д.
Необходимо определить номер пустой ячейки, т.е. 548-ой
Конструкция sheets.cells(rows.count,1).end(xlup).row определяет 550-ю ячейку, мне необходимо, чтобы определило 548-ю.
Подскажите пожалуйста.

Автор - sos-13
Дата добавления - 02.06.2014 в 14:49
Матраскин Дата: Понедельник, 02.06.2014, 15:12 | Сообщение № 50
Группа: Друзья
Ранг: Обитатель
Сообщений: 375
Репутация: 81 ±
Замечаний: 0% ±

20xx
sos-13,
[vba]
Код
Cells.SpecialCells(xlLastCell).Address
[/vba]

p.s. лучше не называть заполненную ячейку - пустой. Возникает диссонанс <_<


в интернете опять кто-то не прав

Сообщение отредактировал Матраскин - Понедельник, 02.06.2014, 15:15
 
Ответить
Сообщениеsos-13,
[vba]
Код
Cells.SpecialCells(xlLastCell).Address
[/vba]

p.s. лучше не называть заполненную ячейку - пустой. Возникает диссонанс <_<

Автор - Матраскин
Дата добавления - 02.06.2014 в 15:12
sos-13 Дата: Понедельник, 02.06.2014, 15:57 | Сообщение № 51
Группа: Пользователи
Ранг: Новичок
Сообщений: 45
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Матраскин, а не подскажете как именно написать для моего случая:
N=Sheets("база данных").cells(rows.count, "a").end(xlup).row. "а" это столбец А с номерами по порядку, N -переменная которой присваиваю порядковый номер. Как именно будет выглядеть запись?
 
Ответить
СообщениеМатраскин, а не подскажете как именно написать для моего случая:
N=Sheets("база данных").cells(rows.count, "a").end(xlup).row. "а" это столбец А с номерами по порядку, N -переменная которой присваиваю порядковый номер. Как именно будет выглядеть запись?

Автор - sos-13
Дата добавления - 02.06.2014 в 15:57
_Boroda_ Дата: Понедельник, 02.06.2014, 16:08 | Сообщение № 52
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
если
Необходимо определить номер пустой ячейки, т.е. 548-ой
, которая выше последней заполненной (если я правильно понял), то можно так:
[vba]
Код
N = Sheets("база данных").Cells(Rows.Count, "a").End(xlUp).End(xlUp).Row - 1
[/vba]Если таковых нет, то N=0


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщениеесли
Необходимо определить номер пустой ячейки, т.е. 548-ой
, которая выше последней заполненной (если я правильно понял), то можно так:
[vba]
Код
N = Sheets("база данных").Cells(Rows.Count, "a").End(xlUp).End(xlUp).Row - 1
[/vba]Если таковых нет, то N=0

Автор - _Boroda_
Дата добавления - 02.06.2014 в 16:08
sos-13 Дата: Понедельник, 02.06.2014, 16:38 | Сообщение № 53
Группа: Пользователи
Ранг: Новичок
Сообщений: 45
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Не совсем так, после пустой ячейки может быть еще много ячеек заполненных, т.е. Нужно определить не ту, которая выше последней заполненной, а именно ту ячейку которая в общем списке пустая. Объясню на примере: есть допустим 600 строк заполненных с данными, и допустим я убрал (не удалил строку!) из строки 548 все данные, т.е. Осталась просто пустая строка. Вот мне и необходимо узнать номер этой строки.
 
Ответить
СообщениеНе совсем так, после пустой ячейки может быть еще много ячеек заполненных, т.е. Нужно определить не ту, которая выше последней заполненной, а именно ту ячейку которая в общем списке пустая. Объясню на примере: есть допустим 600 строк заполненных с данными, и допустим я убрал (не удалил строку!) из строки 548 все данные, т.е. Осталась просто пустая строка. Вот мне и необходимо узнать номер этой строки.

Автор - sos-13
Дата добавления - 02.06.2014 в 16:38
sos-13 Дата: Понедельник, 02.06.2014, 20:28 | Сообщение № 54
Группа: Пользователи
Ранг: Новичок
Сообщений: 45
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Например:
N п/п
.
.
.
546
547
Пустая ячейка
549
550
и т.д.

, которая выше последней заполненной (если я правильно понял), то можно так:

N = Sheets("база данных").Cells(Rows.Count, "a").End(xlUp).End(xlUp).Row - 1
Если таковых нет, то N=0

В моем примере последняя заполненная 550, т.е. получается выше последней заполненной будет 549? Или я ошибаюсь?
 
Ответить
Сообщение
Например:
N п/п
.
.
.
546
547
Пустая ячейка
549
550
и т.д.

, которая выше последней заполненной (если я правильно понял), то можно так:

N = Sheets("база данных").Cells(Rows.Count, "a").End(xlUp).End(xlUp).Row - 1
Если таковых нет, то N=0

В моем примере последняя заполненная 550, т.е. получается выше последней заполненной будет 549? Или я ошибаюсь?

Автор - sos-13
Дата добавления - 02.06.2014 в 20:28
sos-13 Дата: Понедельник, 02.06.2014, 21:49 | Сообщение № 55
Группа: Пользователи
Ранг: Новичок
Сообщений: 45
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
_Boroda_, если не сложно то можно "на пальцах" расписать что сия конструкция означает: Sheets("база данных").Cells(Rows.Count, "a").End(xlUp).End(xlUp).Row - 1
1) Sheets("база данных") - это я понимаю, это лист "база данных"
2) Cells(Rows.Count, "a") - это ячейка (Rows.Count - не понимаю) столбика "а"
ну и т.д.
если не сложно конечно.
 
Ответить
Сообщение_Boroda_, если не сложно то можно "на пальцах" расписать что сия конструкция означает: Sheets("база данных").Cells(Rows.Count, "a").End(xlUp).End(xlUp).Row - 1
1) Sheets("база данных") - это я понимаю, это лист "база данных"
2) Cells(Rows.Count, "a") - это ячейка (Rows.Count - не понимаю) столбика "а"
ну и т.д.
если не сложно конечно.

Автор - sos-13
Дата добавления - 02.06.2014 в 21:49
_Boroda_ Дата: Вторник, 03.06.2014, 00:24 | Сообщение № 56
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Sheets("база данных").Cells(Rows.Count, "a").End(xlUp).End(xlUp).Row - 1
0. Лист - понятно;
1. Rows.Count - количество строк на листе (1 048 576 в Excel старше 2003-го);
2. Cells(Rows.Count, "a") - ячейка А1048576;
3. Cells(Rows.Count, "a").End(xlUp - от п.2 прыгаем наверх до первой заполненной ячейки (как если бы нажали Контрл Стрелка_вверх);
4. Cells(Rows.Count, "a").End(xlUp).End(xlUp) - от п.3 еще раз как бы жмем Контрл Стрелка_вверх - попадаем в ячейку, которая перед самой нижней непустой (ко всему этому .Row - получаем номер строки этой ячейки)
5. вычитаем 1 - попадаем в последнюю пустую, которая выше последней непустой.
Косяк (пока писал, понял) - если последняя заполненная А150, а последняя незаполненная А149 (предыдущая ), то такой метод не прокатит.

придумал, как поизвращаться :D
[vba]
Код
N = Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row).SpecialCells(xlCellTypeBlanks)(Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row).SpecialCells(xlCellTypeBlanks).Count).Row
[/vba]Все это в одну строку, тут просто не помещается
Или в 2 строки[vba]
Код
N = Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row).SpecialCells(xlCellTypeBlanks _
)(Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row).SpecialCells(xlCellTypeBlanks).Count).Row
[/vba]

1. Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row) - мы только что выше писали объяснялку - получаем все ячейки от А1 до Апоследняя_заполненная
2. добавив к п.1 .SpecialCells(xlCellTypeBlanks), получаем из массива п.1 только пустые ячейки
Это мы сейчас говорим про кусок
Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row).SpecialCells(xlCellTypeBlanks),
3. а кусок Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row).SpecialCells(xlCellTypeBlanks).Count дает нам количество пустых ячеек из п.2
Если короче и по-русски, то получается Range(п.2)(п.3).Row - из кучи пустых ячеек мы выбираем ту, у которой самый большой порядковый номер (он равен количеству этих пустых ячеек - например Selection(5) - это пятая по счету ячейка из выделенных; Range("A1:A10)(7) - это А7) и присваиваем переменной N значение номера строки этой найденной ячейки.


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеSheets("база данных").Cells(Rows.Count, "a").End(xlUp).End(xlUp).Row - 1
0. Лист - понятно;
1. Rows.Count - количество строк на листе (1 048 576 в Excel старше 2003-го);
2. Cells(Rows.Count, "a") - ячейка А1048576;
3. Cells(Rows.Count, "a").End(xlUp - от п.2 прыгаем наверх до первой заполненной ячейки (как если бы нажали Контрл Стрелка_вверх);
4. Cells(Rows.Count, "a").End(xlUp).End(xlUp) - от п.3 еще раз как бы жмем Контрл Стрелка_вверх - попадаем в ячейку, которая перед самой нижней непустой (ко всему этому .Row - получаем номер строки этой ячейки)
5. вычитаем 1 - попадаем в последнюю пустую, которая выше последней непустой.
Косяк (пока писал, понял) - если последняя заполненная А150, а последняя незаполненная А149 (предыдущая ), то такой метод не прокатит.

придумал, как поизвращаться :D
[vba]
Код
N = Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row).SpecialCells(xlCellTypeBlanks)(Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row).SpecialCells(xlCellTypeBlanks).Count).Row
[/vba]Все это в одну строку, тут просто не помещается
Или в 2 строки[vba]
Код
N = Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row).SpecialCells(xlCellTypeBlanks _
)(Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row).SpecialCells(xlCellTypeBlanks).Count).Row
[/vba]

1. Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row) - мы только что выше писали объяснялку - получаем все ячейки от А1 до Апоследняя_заполненная
2. добавив к п.1 .SpecialCells(xlCellTypeBlanks), получаем из массива п.1 только пустые ячейки
Это мы сейчас говорим про кусок
Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row).SpecialCells(xlCellTypeBlanks),
3. а кусок Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row).SpecialCells(xlCellTypeBlanks).Count дает нам количество пустых ячеек из п.2
Если короче и по-русски, то получается Range(п.2)(п.3).Row - из кучи пустых ячеек мы выбираем ту, у которой самый большой порядковый номер (он равен количеству этих пустых ячеек - например Selection(5) - это пятая по счету ячейка из выделенных; Range("A1:A10)(7) - это А7) и присваиваем переменной N значение номера строки этой найденной ячейки.

Автор - _Boroda_
Дата добавления - 03.06.2014 в 00:24
sos-13 Дата: Вторник, 03.06.2014, 06:43 | Сообщение № 57
Группа: Пользователи
Ранг: Новичок
Сообщений: 45
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
%) спасибо огромное. Теперь конечно еще больше вопросов, но я попробую.
 
Ответить
Сообщение%) спасибо огромное. Теперь конечно еще больше вопросов, но я попробую.

Автор - sos-13
Дата добавления - 03.06.2014 в 06:43
sos-13 Дата: Вторник, 03.06.2014, 08:25 | Сообщение № 58
Группа: Пользователи
Ранг: Новичок
Сообщений: 45
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Попробовал, выдает ошибку "не найдено ни одной ячейки, удовлетворяющей указанным условиям."
Может можно как-то проще сделать?
 
Ответить
СообщениеПопробовал, выдает ошибку "не найдено ни одной ячейки, удовлетворяющей указанным условиям."
Может можно как-то проще сделать?

Автор - sos-13
Дата добавления - 03.06.2014 в 08:25
Матраскин Дата: Вторник, 03.06.2014, 09:33 | Сообщение № 59
Группа: Друзья
Ранг: Обитатель
Сообщений: 375
Репутация: 81 ±
Замечаний: 0% ±

20xx
sos-13
Надеюсь _Boroda_ не обидится. Вот файл с макросом, который я просто скопировал из его поста.
К сообщению приложен файл: 5436940.xls (51.0 Kb)


в интернете опять кто-то не прав
 
Ответить
Сообщениеsos-13
Надеюсь _Boroda_ не обидится. Вот файл с макросом, который я просто скопировал из его поста.

Автор - Матраскин
Дата добавления - 03.06.2014 в 09:33
_Boroda_ Дата: Вторник, 03.06.2014, 09:43 | Сообщение № 60
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Цитата Матраскин, 03.06.2014 в 09:33, в сообщении № 61
Надеюсь _Boroda_ не обидится
Не, не обижусь. Просто обращу внимание на вот эту свою фразу:
Косяк (пока писал, понял) - если последняя заполненная А150, а последняя незаполненная А149 (предыдущая ), то такой метод не прокатит.
. Сотрите ячейку А599 и посмотрите, что макрос даст.


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
Цитата Матраскин, 03.06.2014 в 09:33, в сообщении № 61
Надеюсь _Boroda_ не обидится
Не, не обижусь. Просто обращу внимание на вот эту свою фразу:
Косяк (пока писал, понял) - если последняя заполненная А150, а последняя незаполненная А149 (предыдущая ), то такой метод не прокатит.
. Сотрите ячейку А599 и посмотрите, что макрос даст.

Автор - _Boroda_
Дата добавления - 03.06.2014 в 09:43
Мир MS Excel » Вопросы и решения » Вопросы по VBA » добавление уникальных элементов в несколько ComboBox (Макросы/Sub)
  • Страница 3 из 3
  • «
  • 1
  • 2
  • 3
Поиск:

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