Форум программистов, компьютерный форум, киберфорум
Наши страницы

VBA

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 2, средняя оценка - 5.00
Petr357
1 / 1 / 0
Регистрация: 05.06.2015
Сообщений: 2
07.08.2015, 10:00 #91
Здравствуйте. Нужна консультация по вопросу. Как создать в VBA Excel поле класса типа динамический массив? Т.е. нужен класс, у которого имелось бы несколько полей ("Имя", "Дата") и поле с динамическим массивом, чтобы можно было его (массив) заполнять и получать значения, обращаясь к этому полю объекта по индексу. Возможно ли такое?
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.08.2015, 10:00
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Профессиональные проблемы, решения, рекомендации и ошибки (VBA):

Указать, почему программа останавливается на операторе Stop, найти пути решения проблемы - VBA
ВНИМАНИЕ! все что написано в данном сообщении - просьба прочитать внимательно! Коллеги, объявляется конкурс. (а если серьезно - понять...

Проблемы с алгоритмом решения задачи - C++
Нужно написать алгоритм решения задачи. Т.е. что и как делает прога, желательно построчно, ну или близко к этому. Собственно задача: ...

Прошу помощи решения проблемы в перекрестном... - MS Access
Ребята, прошу помощи. Есть перекрестный запрос: TRANSFORM Count(.TypObor) AS SELECT .LICS, Count(.TypObor) AS Всего FROM ...

USB устройство, проблемы и пути решения. - Носители информации
Народ, что делать с флешкой - сохраняю на ней файлы (форматы разные), после не могу их открыть, пишет что файлы созданы в других...

Каковы возможные решения проблемы рывков в эмуляторе? - Программирование Android
пишу игру, кадры перерисовываются в методе, который контролируется таймером. поставил 60 кадров. на телефоне все прекрастно, естественно....

BDE - ошибки и решения - Delphi БД
Доброго всем дня. Нужна помощь/совет. Есть программа на Delphi, исходников нету - не мной написана. Работает через BDE с базами Paradox...

117
Аксима
5742 / 1192 / 188
Регистрация: 12.12.2012
Сообщений: 984
07.08.2015, 15:54 #92
Здравствуйте, Petr357,
Да, такое возможно.

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

С уважением,
Аксима
0
Petr357
1 / 1 / 0
Регистрация: 05.06.2015
Сообщений: 2
07.08.2015, 16:50 #93
Спасибо, огромное. Я нашёл решение. Решение описано на странице http://stackoverflow.com/questions/5...m-property-get
Я переделал его под (динамический массив) свои нужды.
0
StepInLik
1062 / 100 / 4
Регистрация: 19.12.2012
Сообщений: 396
01.10.2015, 11:13  [ТС] #94
Не правильно работает функция ROUND() в VBA Access
0
StepInLik
1062 / 100 / 4
Регистрация: 19.12.2012
Сообщений: 396
23.11.2015, 18:33  [ТС] #95
А вы знали, что если от "05.01.2015" отнять 0,000001, то получится та же дата "05.01.2015"
И если логично, что ...
НОМНЕД("05.01.2015";2) =2
НОМНЕД("05.01.2015"-0,000001;2) =1
то на экране в случае "05.01.2015"-0,000001, будет светиться "05.01.2015"
Пользователей это БЕСИТ )))

Добавлено через 7 минут
Добавляйте после "errHndl:" строчку с DoEvents.
Это позволит вам отловить ошибки, когда во многих случаях код не удается остановить, а ...
- вы забыли убрать resume
- ошибка в функции, которая содержит структуры на повтор действий кода в случае ошибок
- когда в ходе работы кода возникают ошибки (не всегда критичные) и вы хотите их промониторить
- во многих других случаях ...
По крайней мере, увлекаясь нажатием Ctrl+Break вы будете надеяться, что если где-то есть ошибка - код встанет на DoEvents )

Добавлено через 4 минуты
Рассмотрите кусок кода, маленькие идеи которого возможно будут для вас полезны:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
errHndl: 
 DoEvents 
 If Len(Err.Description) <> 0 Then 
  If "dErrNumber(" & Err.Number & "),dErrDescription(" & Err.Description & ")" <> dКлючПрежнейОшибки$ Then 
   dКлючПрежнейОшибки$ = "dErrNumber(" & Err.Number & "),dErrDescription(" & Err.Description & ")" 
   dКоличествоПовторовОшибок& = 0 
  End If 
  
  dКоличествоПовторовОшибок& = dКоличествоПовторовОшибок& + 1 
  If dКоличествоПовторовОшибок& <= 3 Then 
   Application.Wait Now + TimeSerial(0, 0, 5) 
   Resume 
  End If 
 End If
2
StepInLik
1062 / 100 / 4
Регистрация: 19.12.2012
Сообщений: 396
24.11.2015, 11:11  [ТС] #96
Чтобы потом жОстко не обломаться, когда локальный кеш не влезает в функцию (в частности), держите в голове:
0
Изображения
 
Казанский
13811 / 5574 / 1407
Регистрация: 24.09.2011
Сообщений: 8,746
25.11.2015, 16:31 #97
Цитата Сообщение от StepInLik Посмотреть сообщение
в случае ="05.01.2015"-0,000001, будет светиться "05.01.2015"
Пользователей это БЕСИТ )))
(добавил = в формулу)
Бесящимся установите формат ячейки
Код
ДД.ММ.ГГ ч:мм:сс,00
А вообще, округление помогает.
0
StepInLik
1062 / 100 / 4
Регистрация: 19.12.2012
Сообщений: 396
27.11.2015, 13:30  [ТС] #98
1. Берем чистую книга
2. Объединяем A1-A5 и A6-A11
3. Скролим вниз на один щелчок колесика (так, чтобы часть объединенной ячейки A1-A5 ушла вверх, но еще была видна снизу).
4. Выделяем нижнюю A6-A11
5. С контролом добавляем к выделению ту часть первой A1-A5, которая видна снизу
6. Скролим вверх
7. Снимаем выделение ...
и наслаждаемся квадратиком (фантомными линиями в области верхнего объединения) )))
мелочь, а приятно ... что не день, то новый баг ) ... надоедает, согласитесь?!
Excel Professional 2010x64(14.0.6112.5000) ... но что-то мне подсказывает, что я не одинок
3
StepInLik
1062 / 100 / 4
Регистрация: 19.12.2012
Сообщений: 396
04.03.2016, 21:25  [ТС] #99
ЖЖем?
1. Берем A1, кладем 1
2. Берем A2, кладем 1
3. Берем A2, добавляем примечание ... например с текстом "qwe"
4. Выделяем A2, жмем Ctrl+C, специальная вставка "значение" ...
все сработало. все верно? ВЕРНО! - все как и должно быть ...

а теперь фокус:
1. Берем A1, кладем 1
2. Делаем в A2 ссылку на A1, т.е. пишем "=A1"
3. Берем A2, добавляем примечание ... например с текстом "qwe"
4. Выделяем A2, жмем Ctrl+C, специальная вставка "значение" ...
все сработало? все верно? НЕ ВЕРНО! - а где наше примечание?! ау ... пропало!
... кумекаем ... кумекаем ... кумекаем еще ... и недоуменно жмем Shift+F2 ... а вот ОНО!!!

при этом, если вызвать контекст - там так же как и в пустой ячейке будет "Вставить примечание", но так же будет и "Удалить примечание".

косячок'с однако
Excel Professional 2010x64(14.0.7112.5000)
0
StepInLik
1062 / 100 / 4
Регистрация: 19.12.2012
Сообщений: 396
04.03.2016, 21:44  [ТС] #100
продолжаем )
1. Рисуем табличку как "Таблица" как на рисунке (см. первый рисунок)
2. Выделяем B2, Закрепить области\Закрепить области
3. Выделяем A1
4. Подводим мышь слева от ячейки A1 так, чтобы курсор мыши превратился в стрелку направленную вправо
5. жмем на мышь ...
все хорошо? да, все как и должно быть - выделяется строка заголовка таблички

а теперь пробуем следующее(начиная с 3 пункта):
3. Выделяем любую ячейку вне области таблицы (отгадка загадки)
4. Повторяем пункты 4 и 5 предыдущих действий ...
все хорошо? а почему выделилась мало того что вся таблица, но и какая-то дополнительная область под ней?! (см. второй рисунок)

что сказать заказчику, когда он заявляет, что его ЭТО мягко говоря "не устраивает"?!
вот так и живем ...
0
Изображения
  
StepInLik
1062 / 100 / 4
Регистрация: 19.12.2012
Сообщений: 396
04.03.2016, 22:03  [ТС] #101
Хочу просто обратить ваше внимание. Может запомнится/вспомнится и не потеряется лишнее время на разбор полетов в следующий раз.
Если у вас табличка с значениями, где в столбце встречается "бла-бла" и "бла-бла ", то фильтр по этому столбцу покажет только одно значение "бла-бла", а вот суммесли в условии отбора будет уже строже! и условие "<>бла-бла" (как пример) учтет уже только одну строку ... а вы будете сидеть и думать глядя на список значений в фильтре "ну там же одно значение и 2 строки! почему он посчитал только одну строку?!"

Добавлено через 3 минуты
(при включении: "Параметры сводной таблицы""Вывод""Автоматически изменять ширину столбцов при обновлении")
Первый вариант. Берем сводную, берем поле и тащим в диалоги столбцов/строк - тащится?! отлично! теперь тащим на лист в зону сводной чтобы кинуть в нее ... тащится и кидается!
Второй вариант (печальный). Берем сводную, берем поле и тащим на лист в зону сводной чтобы кинуть в нее, потом передумываем и тащим в диалоги столбцов/строк - кидается?! НЕА!
0
StepInLik
1062 / 100 / 4
Регистрация: 19.12.2012
Сообщений: 396
11.03.2016, 16:26  [ТС] #102
Зачем, если мы изначально установили формат ячейки как "Текст", при ее редактировании и вводе формулы в "Строке формулы", отражается и цветовая подсветка ссылок на ячейки и сами ячейки кантуются цветовой подсветкой?!
Ведь после энтера, все что было введено - станет строкой, т.е. вся формула превратится в тупой набор символов. Зачем обманывать пользователя, что он вводит формулу, а не строку?!
Неужели так трудно сначала проверять формат будущего текста, а затем сразу не форматировать его как формулу?!

По опыту, пользователей это сбивает с толку и при дальнейшем отражении введенной формулы как строки и ставит их в тупик.
0
StepInLik
1062 / 100 / 4
Регистрация: 19.12.2012
Сообщений: 396
01.04.2016, 13:19  [ТС] #103
Если мы используем локальную(Private) константу (переменную, функцию) в модуле, то при ее использовании в другом модуле, клик на "Definition" в контекстном меню этой константы нам ничего не даст ... вернее, выдаст "Indentifier under cursor is not recognized"
и это правильно.
А вот если мы используем директивную константу "#Const dКонстанта=...", то при ее использовании в другом модуле и "Definition" на ней в этом (другом) модуле, IDE вывалится на строчку ее объявления. Т.е. пользователь ее видит, а вот интерпретатор (при исполнении кода) ее(директиву) не увидит (хотя, она тоже Private).
что очень сомнительно с т.зрения правильности
0
StepInLik
1062 / 100 / 4
Регистрация: 19.12.2012
Сообщений: 396
06.04.2016, 12:05  [ТС] #104
А вы знали, что:
Visual Basic
1
ThisWorkbook.Worksheets(dИмяЛиста$).Cells.SpecialCells(xlLastCell).Column
вернее SpecialCells
генерит Worksheet_SelectionChange?! при том, что реальный Selection не трогает!!! причем, опять же - 2 раза ...
0
StepInLik
1062 / 100 / 4
Регистрация: 19.12.2012
Сообщений: 396
07.04.2016, 13:06  [ТС] #105
1. Если пользователь находится в ячейке
2. В ячейке есть примечание
3. Это примечание при переходе в него находится в километре от редактируемой ячейки (а возможно и за видимой областью листа, которая видна на экране(на которой находится эта ячейка))

, то пользователю крайне неудобно, когда после редактирования примечания, активной(видимой) областью листа остается та, на которой располагался прямоугольник примечания ... т.к. после этого, пользователю приходится возвращаться скролами или смещением курсора выделения ячейки, а это еще и лишние эвенты программного кода (которые не всегда нужны).
Почему так сложно возвращать видимую область на место?!


Добавлено через 14 минут
1. Выделяем область A1:B1
2. Объединяем
3. Выделяем область A1:B5
4. Жмем Ctrl+1/Граница/устанавливаем любой вариант линии справа
5. Наблюдаем - все правильно, граница появилась ...

теперь,
1. Выделяем область A1:B1
2. Объединяем
3. Выделяем столбец B (нажатием на заголовок столбца)
4. Жмем Ctrl+1/Граница/устанавливаем любой вариант линии справа
5. И наблюдаем - справа появилась граница у всех ячеек столбца, за исключением границы нашей объединенной ячейки A1:B1

Где логика такого разного поведения?!
Excel Professional 2010x64(14.0.7166.5000)
0
07.04.2016, 13:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.04.2016, 13:06
Привет! Вот еще темы с ответами:

Реестровый триал(ошибки и решения) - Delphi
Привет, всем. Пишу свою программу. Ну и создал даже модуль триала через реестр, вот основа: unit RegTrial; interface uses Windows,...

Укажите ошибки и пути их решения - C (СИ)
#include &lt;stdlib.h&gt; #include &lt;stdio.h&gt; int main(int argc, char* argv) { const n = 8; float m; ...

Какие проблемы Вы видите при решении данной задачи? Предложите алгоритм решения - Алгоритмы
Здравствуйте, помогите с заданием для зачета пожалуйта. Информация о том, сколько людей прописано, сколько отсутствует, сколько...

Найти способ решения проблемы - функция setPixel() работает очень медленно (SFML) - SFML
В sfml функция setPixel() работает очень медленно, можно-ли попиксельно редактировать изображение другим способом?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
105
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru