Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.69/603: Рейтинг темы: голосов - 603, средняя оценка - 4.69
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 458
19.02.2015, 10:02  [ТС]
Студворк — интернет-сервис помощи студентам
Excel Professional 2010x64(14.0.7106.5003)@Win7(Корпоративн ая)x64 SP1 (+ все патчи до текущего момента)
Если у вас большой файл (долго открывается) и в имени файла к примеру есть надпись в квадратных скобках (например "Имя файла плюс ([надпись]).xlsb"), то когда в процессе открытия файла в статус-баре указывается "Открытие: ... Для отмены нажмите ESC." и справа от этой надписи появляется прогресс-бар ... то квадратные скобки заменяются на круглые и надпись выглядит как "Открытие: Имя файла плюс ((надпись)).xlsb. Для отмены нажмите ESC."
То же самое при закрытии файла: "Сохранить изменения в файле 'Имя файла плюс ((надпись)).xlsb'?"
Безобразие!
Причем, почему при закрытии имя файла указывается в апострофах, а при открытии без - загадка (только потому, что "." может быть частью имени, а "?" нет?).
Добавлено 04.03.2015
В заголовке IDE - все то же: Имя файла плюс ((надпись)).xlsb

Добавлено через 20 часов 23 минуты
Обратите внимание, что как только вы используете свою функцию в качестве формулы в расчетах (где-то в ячейке) или отработки (как пример) условного форматирования, то как только происходит отработка этой вашей функции, режим конструктора (если он был включен) - сразу выключается.
Т.е. может статься так, что вы работаете в какой-то части листа и ... к примеру, удаляете строчку ... ну удалили и удалили - и ладно ... смотрите - режим конструктора как был включен, так и включен и остался ...
затем, вы не спеша двигаетесь по строчкам вверх (как пример) ... и вдруг БАЦ! и режим конструктора самопроизвольно выключается ... (а причиной всему тому - функция в правиле условного форматирования, которая отрабатывает в какой-то ячейке появившейся на экране строки)

Добавлено через 23 часа 37 минут
По всем версиям 2010 экселя
1. Пишем функцию в коде какого-то модуля:
Visual Basic
1
2
3
Public Function fПроверкаЦелостности(dПараметр$) As Boolean
 fПроверкаЦелостности = True
End Function
2. В "ЭтаКнига" пишем:
Visual Basic
1
2
3
Private Sub Workbook_Open()
 Stop
End Sub
3. Уходим с IDE в эксель и в A1 указываем правило условного форматирования:
=fПроверкаЦелостности($A$1)
4. Сохраням и закрываем книгу.
5. Открываем книгу и НЕ ловим Stop!!!
Не документированная фича работает только при передаче функции какой-то ячейки в качестве параметра, а прием ее обязательно производить в качестве типизированного значения (c Variant плюшка исчезает).
"... но есть нюанс": при открытии книги ручками - не работет ни Workbook_Open ни auto_open. А вот если открывать книгу средствами Workbooks.Open другой книги, то auto_open отрабатывает.
А самое важное, что баг возникает в том и только том случае, если ячейка с этим правилом при открытии находится в видимой зоне видимого на экране листа.
Нет слов ... при все тех же проблемах ... иногдаааааа ... вернее совсем совсем редко - оно бац! и события на открытие книги отрабатывают ... но закономерности нет совершенно никакой.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.02.2015, 10:02
Ответы с готовыми решениями:

Готовые решения, примеры и рекомендации начинающим на WPF [Элд Хасп]
В этой теме перечень полезных тем для начинающих. Обсуждение введите в самих темах. Для включения темы в этот перечень - напишите...

Обсуждение темы "Готовые решения, примеры и рекомендации начинающим на WPF"
Тема для обсуждения, критики, предложения изменений и дополнений темы https://www.cyberforum.ru/wpf-silverlight/thread2384523.html

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

126
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 458
26.02.2015, 11:30  [ТС]
Если в вашем файле есть непреодолимая проблема обновления связей. И вы НУ НИКАК не можете понять - что это за связи, как их разорвать, к чему они применены и где они находятся - одним словом "вы сдались" )
1. Переименуйте ваш файл в тот файл на который ссылаются ваши связи (путь файла можно увидеть нажав кнопку "открыть" в диалоге обновления связей), переоткройте файл, сохраните с первоначальным именем и обнаружите, что связь исчезла. Повторите все то же самое для каждого файла с которым у вас связь )
2. Если переименовать файл не получается в силу каких-то причин (сетевой путь, отсутствие прав на создание указанного пути и т.д. ...):
- переименуйте ваш XLSX-файл в ZIP
- распакуйте тем же RAR'ом
- найдите тем же FAR'ом файл в тексте которого содержится часть имени искомого файла-связи
- отредактируйте его в тот путь, который вы можете создать (к примеру на вашем локальном диске)
- создайте zip-архив из распакованного каталога (где в одном из подкаталогов в каком-то файле вы поправили ссылку на файл связи)
- переименуйте файл из zip в xlsx
- выполните п.1
наслаждайтесь
0
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 458
03.03.2015, 16:03  [ТС]
Думаю, многие здесь уже сталкивались с тем, что после установки некоторого обновления перестают добавляться на листы ActiveX-компоненты (возникает сообщение "Вставка объекта неосуществима.") ... и те, что уже были - превращаются в пикчур без реакции на нажатия (проблема возникает не на всех версиях и не на всех компьютерах).
Ранее (конец прошлого-начало текущего года) это было обновление http://support.microsoft.com/kb/2553154 - в просторах интернета об этом сказано много ... (есть не плохо работающее решение от ZVI)
Но вот те же проблемы возникают еще и при установке Майкрософт Service Pack 2 for Microsoft Office 2010 (KB2687455)... (видимо и в сервис-паках для других версий тоже).
Если вы хотите избежать проблем на корню - подумайте перед их установкой (неожиданность бывает не всегда приятной).
Изображения
  
0
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 458
04.03.2015, 12:43  [ТС]
В продолжение 81 поста - Профессиональные проблемы, решения, рекомендации и ошибки
Эксель не дает возможность создавать файлы с квадратными скобками в имени файла (попробуйте записать файл с таким именем средствами Ctrl+O - получите отказ) ...
Видимо, этому есть какая-то внутренняя техническая причина.
И вот доказательство: если имя файла содержит эти злополучные скобки(путем FSO.CopyFile или переименования ...) и в нем запустить:
Visual Basic
1
2
3
Private Function qwe()
 Application.OnKey "^+{H}", "fПоказатьФорму"
End Function
где
Visual Basic
1
2
3
Public Function fПоказатьФорму()
 MsgBox "Форма ..."
End Function
... то при нажатии Ctrl+Shift+H - эксель попытается запустить копию этого файла для выполнения функции fПоказатьФорму ... в результате чего - появится сообщение, что файл доступен только для чтения и т.д. ... и т.п. ... - что фактически будет означать, что функционал OnKey работает не корректно.
Вывод: не допускайте в имени эксель-файла символы "[" и "]".
0
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
05.03.2015, 11:20
Цитата Сообщение от StepInLik Посмотреть сообщение
Видимо, этому есть какая-то внутренняя техническая причина
Причина довольно проста: ссылка на ячейку другой книги выглядит как
Code
1
='[Книга1.xls]Лист1'!A1
3
3 / 2 / 1
Регистрация: 13.05.2014
Сообщений: 156
12.05.2015, 17:46
Хотел тему прям создать с криком о помощи, но вообщем сам решил=) и уверен дофига новичков-долбоящеров, как я, головы ломают как это сделать
Задача: подсчитать количество заполненых ячеек при условии проставления фильтра
решение:

sheets("List").Select
[n1] = WorksheetFunction.CountA([A2:A30000].SpecialCells(xlCellTypeVisible))
0
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 458
13.05.2015, 11:41  [ТС]
Еще из категории "странных и совершенно абсурдных" советов:
Если у вас есть код в какой-то части книги, где-то отрабатывающий, например типа такого:
Visual Basic
1
2
3
4
On Error Resume Next
For Each dРабочийЛистItem In ThisWorkbook.Worksheets
 Call dРабочийЛистItem.fОткрытиеОтчетов
Next
и в самой функции нет ничего кроме "Stop" (например) ... т.е. в dРабочийЛистItem следующий код:
Visual Basic
1
2
3
Public Function fОткрытиеОтчетов()
 Stop
End Function
... и на Stop останова не происходит (функция просто не вызывается и интерпритатор просто в нее не заходит!) и оснований такого поведения совершенно нет никаких (не крутите пальцем у виска! это правда!) и не ломайте голову (если вы уверены в своем коде на 100%) ... бывает. порой, этому действительно нет никаких объяснений. Выясните Description ошибки и напишите что-то вроде повтора:
Visual Basic
1
2
3
4
5
On Error Resume Next
For Each dРабочийЛистItem In ThisWorkbook.Worksheets
 Call dРабочийЛистItem.fОткрытиеОтчетов
 If Err.Description = "Invalid procedure call or argument" Then Call dРабочийЛистItem.fОткрытиеОтчетов
Next
По всей видимости, объект (листа), функцию которого вы вызываете - на момент вызова почему-то (напишем абстрактно) "не поднят как надо" ... и при повторном вызове - он уже "на месте" ... (у меня объяснений такого поведения нет) ...
(в моей жизни встретилось пару таких загвоздок с типами "Invalid procedure call or argument" и "Type mismatch"(в т.ч. при вставке пустых листов на этапе команды Sheets.Add и .Copy After:=ThisWorkbook.Worksheets(ThisWorkb ook.Worksheets.Count) ... так вот, прямо на команде Sheets.Add валится в ерр-хендл с "Type mismatch" ... ловим, видим этот тип и делаем Resume ... и все добавляется)
(отложите ... может пригодиться)
0
Заблокирован
13.05.2015, 14:32
Есть такие странности:
Если разрабатывать проект в ранних версиях (2003), с использованием графических объектов
например автофигур, то можно потом сильно удивиться, что некоторые события методы и
свойства могут вести себя очень отличительно от запланировынных ожиданий
в частности скорость появления линий, ( а при разработке и дизайне обычно нужно это видеть ) цвет линий и различных фигур может явно различаться, и если вы пишете *нажмите Red*
то это может выглядеть как Purple и тп
0
 Аватар для KoGG
5730 / 1633 / 419
Регистрация: 23.12.2010
Сообщений: 2,455
Записей в блоге: 1
13.05.2015, 14:38
Вопрос, а легален ли вызов
Visual Basic
1
 Call dРабочийЛистItem.fОткрытиеОтчетов
, если fОткрытиеОтчетов - не является законным методом Worksheet ?
Что мы этим хотим сказать?
Или функция fОткрытиеОтчетов дублируется в каждом объектном модуле листа?
0
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 458
13.05.2015, 21:49  [ТС]
Цитата Сообщение от KoGG Посмотреть сообщение
Или функция fОткрытиеОтчетов дублируется в каждом объектном модуле листа?
Если говорить про данный конкретный случай, то и да и нет. В части объектах-листах такая паблик-функция есть, а в части нет (ну нет ее и вызов осуществлен не будет и цикл пойдет дальше). При вызове, чтобы код не брыкался - выше стоит Resume Next. И этот код прекрасно работает во всех случаях ... и так же прекрасно работает при повторном вызове ... а вот при первом - (крайне редко!) - не хочет (даже заходить). Сталкиваться с этим, кстати, начал с 2007 версии ...
И такая обработка хороша (далее как пример), когда вы используете модель шаблонов, наследники которых при инициализации (например открытии книги) - должны понять, что они уже не шаблоны и отработать как положено свою инициализацию (характерную именно для данного типа шаблона) - пересчитать формулы, привести в порядок вид листа, занести какие-то данные в кеш, подкачать данные из базы, сохранить протокол ... и т.д.
Но опять же, обратил внимание, что ряд публикуемых мною моментов повторяются не у всех и это часто зависит и от версии и от разрядности и от нагрузок в параллельно работающих экселях.
0
1 / 1 / 0
Регистрация: 05.06.2015
Сообщений: 2
07.08.2015, 10:00
Здравствуйте. Нужна консультация по вопросу. Как создать в VBA Excel поле класса типа динамический массив? Т.е. нужен класс, у которого имелось бы несколько полей ("Имя", "Дата") и поле с динамическим массивом, чтобы можно было его (массив) заполнять и получать значения, обращаясь к этому полю объекта по индексу. Возможно ли такое?
1
6082 / 1327 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
07.08.2015, 15:54
Здравствуйте, Petr357,
Да, такое возможно.

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

С уважением,
Аксима
1
1 / 1 / 0
Регистрация: 05.06.2015
Сообщений: 2
07.08.2015, 16:50
Спасибо, огромное. Я нашёл решение. Решение описано на странице http://stackoverflow.com/quest... operty-get
Я переделал его под (динамический массив) свои нужды.
0
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 458
01.10.2015, 11:13  [ТС]
Не правильно работает функция ROUND() в VBA Access
0
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 458
23.11.2015, 18:33  [ТС]
А вы знали, что если от "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
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 458
24.11.2015, 11:11  [ТС]
Чтобы потом жОстко не обломаться, когда локальный кеш не влезает в функцию (в частности), держите в голове:
Изображения
 
0
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
25.11.2015, 16:31
Цитата Сообщение от StepInLik Посмотреть сообщение
в случае ="05.01.2015"-0,000001, будет светиться "05.01.2015"
Пользователей это БЕСИТ )))
(добавил = в формулу)
Бесящимся установите формат ячейки
Code
1
ДД.ММ.ГГ ч:мм:сс,00
А вообще, округление помогает.
0
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 458
27.11.2015, 13:30  [ТС]
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
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 458
04.03.2016, 21:25  [ТС]
ЖЖем?
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
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 458
04.03.2016, 21:44  [ТС]
продолжаем )
1. Рисуем табличку как "Таблица" как на рисунке (см. первый рисунок)
2. Выделяем B2, Закрепить области\Закрепить области
3. Выделяем A1
4. Подводим мышь слева от ячейки A1 так, чтобы курсор мыши превратился в стрелку направленную вправо
5. жмем на мышь ...
все хорошо? да, все как и должно быть - выделяется строка заголовка таблички

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

что сказать заказчику, когда он заявляет, что его ЭТО мягко говоря "не устраивает"?!
вот так и живем ...
Изображения
  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.03.2016, 21:44

Бывший профессионал cs 1.6 просит решения проблемы
Зайду немного из далека. Мне вот уже под 30 лет, и как бы это смешно не звучало, я до сих пор в свободное от работы время играю в старую...

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

Проблемы с выводом решения на стандартный поток
Вот текст задания: Напишите программу, на вход которой даются четыре числа a, b, c и d, каждое в своей строке. Программа должна...

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

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


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

Или воспользуйтесь поиском по форуму:
100
Ответ Создать тему
Новые блоги и статьи
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302 Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
SUNO Ai - Река Без Дна
zorxor 31.07.2026
Автор стихотворения - астрофизик Марина Катыс Ссылка на сгенерированную музыкальную композицию: https:/ / suno. com/ song/ 6f6e5464-b290-4650-be6c-44c85f8d8013 Я говорю, что Время- как вода течет. . .
Из невошедшего на форум (диалог с ИИ-гугла)
zorxor 29.07.2026
А вот, что интересно, сказал мне ИИ-гугла: Этот текст — эмоциональный пост пользователя под ником zorxor на интернет-форуме (вероятно, посвященном мистике, непознанному или альтернативной науке). . . .
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет Салют, шампанское, овации! :drink:
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru