|
|
|
VBA функция для двух массивов
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. помогите дописать код для создания пользовательской функции. задав в vba два массива , выполнить поиск в них и найти необходимое значение. и можно ли сделать выпадающие списки "профиль" и "характеристика" на VBA ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2007, 15:27:20 |
|
||
|
VBA функция для двух массивов
|
|||
|---|---|---|---|
|
#18+
Посмотри, может чево пригодится. По поводу 2-х массивов не очень понял... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2007, 22:06:46 |
|
||
|
VBA функция для двух массивов
|
|||
|---|---|---|---|
|
#18+
дело в том что у меня есть массив данных Dim tablepro(1 To 122, 1 To 17) В этом массиве идет поиск по "профиль" (их 121) и по "характеристика" (их 16) Если его забить в код VBA ,то VBA ругается, что функция слишком большая ( VBA пишет : procedure too large), видимо есть ограничение на объем функции. Решил разбить на два массива. При вводе одного (Dim tablepro(1 To 122, 1 To 10)) все рабоате, а как выполнить поиск во втором (Dim tablepro(1 To 122, 1 To 7) - не знаю. наверное надо делать через SUB, а как!?! или есть какое еще решение, помимо подключения внешнего файла? файл с кодм приложил. Книга4.rar ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2007, 23:12:39 |
|
||
|
VBA функция для двух массивов
|
|||
|---|---|---|---|
|
#18+
А на скрытом листе хранить не вариант? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2007, 11:57:13 |
|
||
|
VBA функция для двух массивов
|
|||
|---|---|---|---|
|
#18+
Нет, таких массивов будет несколько, в зависимости от "профиль" и "характеристика". а потом хочу сохранить как НАДСТРОЙКУ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2007, 12:38:58 |
|
||
|
VBA функция для двух массивов
|
|||
|---|---|---|---|
|
#18+
RascenНет, таких массивов будет несколько, в зависимости от "профиль" и "характеристика". а потом хочу сохранить как НАДСТРОЙКУ. Ну так в настройке на листах и храни ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2007, 13:44:31 |
|
||
|
VBA функция для двух массивов
|
|||
|---|---|---|---|
|
#18+
Deggasad Ну так в настройке на листах и храни Ну так в надстройке на листах и храни ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2007, 13:45:59 |
|
||
|
VBA функция для двух массивов
|
|||
|---|---|---|---|
|
#18+
Вообще я согласен с Deggasad - нужно делать список на листах надстройки. Это и эффективнее и легче для чтения и редактирования. Но если уж очень хоцца, то смотри приложение... KL [MVP - Microsoft Excel] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2007, 14:57:00 |
|
||
|
VBA функция для двух массивов
|
|||
|---|---|---|---|
|
#18+
KL (XL)Вообще я согласен с Deggasad - нужно делать список на листах надстройки. Это и эффективнее и легче для чтения и редактирования. Но если уж очень хоцца, то смотри приложение... KL [MVP - Microsoft Excel] =( не открывается точнее открывается, но Excel выдает ошибку и закрывается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2007, 15:04:47 |
|
||
|
VBA функция для двух массивов
|
|||
|---|---|---|---|
|
#18+
восстановление файла пишет : Журнал восстановления файлов Microsoft Office Excel Обнаружены ошибки в файле 'D:\!Downloads\Книга4.xls' Вот список внесенных исправлений: Потерян проект Visual Basic. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2007, 15:07:38 |
|
||
|
VBA функция для двух массивов
|
|||
|---|---|---|---|
|
#18+
а так? KL [MVP - Microsoft Excel] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2007, 15:47:31 |
|
||
|
VBA функция для двух массивов
|
|||
|---|---|---|---|
|
#18+
KL (XL)а так? KL [MVP - Microsoft Excel] Работает, спасибо огромное! за оперативность ВАМ цены нет =) а то мысли уже лезли чуть ли не на разделение на процедуры, с использованием CALL в функции.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2007, 16:05:09 |
|
||
|
VBA функция для двух массивов
|
|||
|---|---|---|---|
|
#18+
KL (XL)а так? KL [MVP - Microsoft Excel] Окончательно заработало , когда поменял pro = tablepro(Application.Match(nb, tabV, 0) - 1)(Application.Match(Dpro, tabH, 0) - 1) на pro = tablepro(Application.Match(Dpro, tabH, 0) - 2)(Application.Match(nb, tabV, 0) - 1) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2007, 22:28:16 |
|
||
|
VBA функция для двух массивов
|
|||
|---|---|---|---|
|
#18+
Ну да! Или вместо этого в массиве tabH = Array(0, "b", "t", ..., "P") убрать первый элемент (т.е. 0) как совершенно бесполезный: tabH = Array("b", "t", "r1", ..., "P") KL [MVP - Microsoft Excel] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2007, 22:55:34 |
|
||
|
VBA функция для двух массивов
|
|||
|---|---|---|---|
|
#18+
Application.Match очень интересный метод... свойство..., что это? и где можно прочитать? В справке нет.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2007, 23:42:36 |
|
||
|
VBA функция для двух массивов
|
|||
|---|---|---|---|
|
#18+
RascenApplication.Match очень интересный метод... свойство..., что это? и где можно прочитать? В справке нет.. Это функция рабочего листа ПОИСКПОЗ() - в справке по Экселю смотрите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2007, 00:11:33 |
|
||
|
VBA функция для двух массивов
|
|||
|---|---|---|---|
|
#18+
RascenApplication.Match очень интересный метод... свойство..., что это? и где можно прочитать? В справке нет.. Как уже сказал Deggasad, Match - это функция рабочего листа. В VBA является членом коллекции WorksheetFunction, например Код: plaintext Код: plaintext В целях обратной совместимости с версиями предшедствовавшими Office97 был сохранен синтаксис Код: plaintext но есть различия - я где-то тут недавно писал KL [MVP - Microsoft Excel] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2007, 00:29:31 |
|
||
|
VBA функция для двух массивов
|
|||
|---|---|---|---|
|
#18+
потестировал еще. нашелся глюк. Если задаешь "характеристика" iu , значение находится, но есть в таблице похожая: Iu (различие в регистре первой буквы), то значение выдается одно и тоже, которое первым попадется в таблице при поиске. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2007, 11:16:10 |
|
||
|
VBA функция для двух массивов
|
|||
|---|---|---|---|
|
#18+
lu - это же LU l-L(буква "Л" в русском исполнении) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2007, 11:34:15 |
|
||
|
VBA функция для двух массивов
|
|||
|---|---|---|---|
|
#18+
Deggasadlu - это же LU l-L(буква "Л" в русском исполнении) нет, в таблице есть 2 "характеристики" с похожим названием iu и Iu и для "профиль" функция должна бы выдавать соответствующие значения, а она выдает только одно. видимо она приравнивает Iu к iu с считает их одинаковыми. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2007, 12:02:07 |
|
||
|
VBA функция для двух массивов
|
|||
|---|---|---|---|
|
#18+
Rascen Deggasadlu - это же LU l-L(буква "Л" в русском исполнении) нет, в таблице есть 2 "характеристики" с похожим названием iu и Iu и для "профиль" функция должна бы выдавать соответствующие значения, а она выдает только одно. видимо она приравнивает Iu к iu с считает их одинаковыми. Вобще-то это не глюк, а фича как говорят программисты :-) Сделать, чтобы заглавные отличались от строчных можно, но изменение алгоритма наверняка повлечет за собой усложнение кода и серьезную потерю в скорости. Думаю, что дешевле изменить букву в одном из кодов, тем более, что эти коды все равно введены в процедуру как константы. KL [MVP - Microsoft Excel] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2007, 14:00:05 |
|
||
|
VBA функция для двух массивов
|
|||
|---|---|---|---|
|
#18+
KL (XL) Rascen Deggasadlu - это же LU l-L(буква "Л" в русском исполнении) нет, в таблице есть 2 "характеристики" с похожим названием iu и Iu и для "профиль" функция должна бы выдавать соответствующие значения, а она выдает только одно. видимо она приравнивает Iu к iu с считает их одинаковыми. Вобще-то это не глюк, а фича как говорят программисты :-) Сделать, чтобы заглавные отличались от строчных можно, но изменение алгоритма наверняка повлечет за собой усложнение кода и серьезную потерю в скорости. Думаю, что дешевле изменить букву в одном из кодов, тем более, что эти коды все равно введены в процедуру как константы. KL [MVP - Microsoft Excel] понятно, придется изменить, раз "фича" =). есть ли возможность прочитать массив tabV = Array() и сделать выпадающий список, чтобы была возможность выбирать в любой необходимой ячейке текущего листа значения из этого масива? больше вопросов,вроде, нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2007, 14:19:59 |
|
||
|
VBA функция для двух массивов
|
|||
|---|---|---|---|
|
#18+
Rascenесть ли возможность прочитать массив tabV = Array() и сделать выпадающий список, чтобы была возможность выбирать в любой необходимой ячейке текущего листа значения из этого масива? Если речь о меню Данные-Проверка и надо обойтись без копирования массива в диапазон на листе , то в Excel97-2003 tabH можно (функция Join дост): Код: plaintext 1. 2. 3. 4. 5. 6. а tabV , если не ошибаюсь, - нельзя (в Excel2007 - можно), т.к. меню Данные-Проверка позволяет текстовую строку до 255 знаков. Но на всякий случай проверь. Если копирование массива в диапазон на листе - не рассматривается, то остается использовать контрол ActiveX ComboBox . KL [MVP - Microsoft Excel] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2007, 15:01:51 |
|
||
|
VBA функция для двух массивов
|
|||
|---|---|---|---|
|
#18+
Пардон, не дописал про функцию Join :-) Эта функция доступна начиная с Excel2000 KL [MVP - Microsoft Excel] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2007, 15:04:28 |
|
||
|
VBA функция для двух массивов
|
|||
|---|---|---|---|
|
#18+
KL (XL) Rascenесть ли возможность прочитать массив tabV = Array() и сделать выпадающий список, чтобы была возможность выбирать в любой необходимой ячейке текущего листа значения из этого масива? Если речь о меню Данные-Проверка и надо обойтись без копирования массива в диапазон на листе , то в Excel97-2003 tabH можно (функция Join дост): Код: plaintext 1. 2. 3. 4. 5. 6. а tabV , если не ошибаюсь, - нельзя (в Excel2007 - можно), т.к. меню Данные-Проверка позволяет текстовую строку до 255 знаков. Но на всякий случай проверь. Если копирование массива в диапазон на листе - не рассматривается, то остается использовать контрол ActiveX ComboBox . KL [MVP - Microsoft Excel] дописал, спасибо! Пока так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2007, 15:40:43 |
|
||
|
|

start [/forum/topic.php?fid=61&tid=2182262]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
77ms |
get topic data: |
46ms |
get forum data: |
5ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 219ms |
| total: | 437ms |

| 0 / 0 |
