Страницы: 1
RSS
У константы типа Double появилась запятая.
 
Добрый день, формучане!

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

На моем компе все нормально... есть следующий код в начале модуля...
Код
Private Const rDayZeroBias As Double = 109205#   ' Abs(CDbl(#01-01-1601#))
Private Const rMillisecondPerDay As Double = 10000000# * 60# * 60# * 24# / 10000#

А вот на одном из рабочих мест пользователя после цифр в константе типа Double появляются после числа запятые. Причем код на том рабочем месте работает нормально.... а вот когда пользователь поработав сохраняет и отправляет другому, то на нормальной машине VBA ругается на лишние запятые в коде (скриншот приложен). Если их убрать, то все норм... но вот когда пробовал их убрать на косячном рабочем месте они тупо при переходе на строку ниже VBA дописывает их сам.

Грешил на региональные настройки системы, но все аналогично как и на других компах.

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

Попробовал удалить глючный файл и оставить только нормальный... но через буквально день - запятые опять на месте... не пойму от чего это зависит :((((

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

 
Цитата
Леонид Коршак написал:
А вот на одном из рабочих мест пользователя после цифр в константе типа Double появляются после числа запятые
Если уж и фотографировать экран, то на проблемном компьютере. Добавьте на проблемном компьютере в проблемном модуле пробел в конце любой из строк, выполните Debug/Compile, в случае успешной компиляции выполните File/Export File и экспортированный файл выложите здесь.
Владимир
 
Кнопка цитирования не для ответа [МОДЕРАТОР]

Сделал... Все как и говорилось скомпилировалось на ура...
Во вложении файл...

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

а решетка после числа что значит? если без нее то вроде не ругается и там и там... сейчас попробую...

Зато не компилируется с ошибкой Overflow на второй строке где число получаем из умножения и деления
Изменено: Леонид Коршак - 07.08.2018 18:49:07
 
А вот если вместо формулы сразу вписать 86400000 то ошибки переполнения не возникло...
Сейчас попробую потестить...
 
Код
Const rMillisecondPerDay As Double = 10000000 / 10000 * 60 * 60 * 24
 
Цитата
Леонид Коршак написал:
а решетка после числа что значит
Означает, что константа имеет тип double. Разумеется, обе строки проблемного кода можно эквивалентно записать без использования "#". Это может решить конкретную проблему, но "загадка" останется.
Изменено: sokol92 - 07.08.2018 15:17:46
Владимир
 
Попробуйте на проблемном компьютере на "чистом" Excel создать новую книгу. Вставьте в нее стандартный модуль и добавьте следующий код:
Код
Sub test()
  Dim v
  v = 1000000000000
End Sub
Во что превращается числовая константа?
И еще проверьте, что на проблемном компьютере нет никаких других проектов, кроме новой книги, и есть только один пункт меню в Add-Ins
Изменено: sokol92 - 07.08.2018 15:10:59
Владимир
 
На чисто открытом экселе (запущенном через меню пуск) картина следующая... просто к числу автоматом добавилась решетка (скрин во вложении)

sokol92, а вот если эксель открываю не через пуск а через старый кривой файл, потом его закрываю (но не завершаю сам эксель) и создаю новый документ, то кроме решетки еще и запятая прилипает...
 
Очень интересно. Похоже, в "кривом" файле есть какая-то тайна. Нельзя ли его выложить? Eсли будете удалять конфиденциальные данные, то проверьте, что новый файл нормально открывается на "чистом" Excel на проблемном компьютере, транслируется и загадка (,#) сохраняется.
Изменено: sokol92 - 07.08.2018 16:28:59
Владимир
 
Цитата
sokol92 написал:
Похоже, в "кривом" файле есть какая-то тайна.
Очевидно проблема не в конкретном файле, так как я пробовал убить его на компе заменив нормальной версией.
И перезагружал комп и несколько раз переоткрывал Эксель, чтобы проверить, что запятая не появилась...

И все было норм... но ровно спустя сутки меня зовет пользователь с той же проблемой :(
То есть конкретный комп в какой то момент (как бы узнать что это за момент) делает файл кривым...  
 
Насколько я понял (уточняю), на проблемном компьютере (на "чистом" Excel):

  • файл из #7 открывается нормально
  • после открытия второго ("кривого" файла) первый файл также начинает показывать запятую перед # в числовых константах. При этом оба открытых файла компилируются без ошибок.

Эта ситуация устойчиво повторяется на проблемном компьютере, в том числе, после перезагрузки.
Если так, то "кривой файл" представляет интерес.
Изменено: sokol92 - 07.08.2018 18:01:26
Владимир
 
Цитата
sokol92 написал:уточняю...
Да все абсолютно верно!

Цитата
sokol92 написал: Эта ситуация устойчиво повторяется на проблемном компьютере, в том числе, после перезагрузки.
А тут не совсем так... а наоборот...
Если я удаляю с диска проблемный файл.... и сохраняю на него новый файл без проблем, то даже после перезагрузки все нормально и никакой запятой нету! Пока так сказать я рядом )))))

Как только проходит какое то время и пользователь работает за компом - случается какое то чудо... и нормальный файл снова превращается в "кривой".
 
Не надо удалять "кривой" файл (для эксперимента). Нужно перезагрузить проблемный компьютер и провести эксперимент из #12 (оба файла открываются в Excel в указанном порядке). В какой конкретно момент появляется лишняя запятая в модуле открытой первой книги, сразу после открытия второй книги?
Если ситуация повторяется, то ждем проблемный файл - может быть, найдем какую-нибудь аномалию.
Владимир
 
Цитата
Леонид Коршак написал:
а вот если эксель открываю не через пуск а через старый кривой файл, потом его закрываю (но не завершаю сам эксель) и создаю новый документ, то кроме решетки еще и запятая прилипает...
А я вот этой фразы вообще не понял. Это как так? СОздаёте файл, а там макрос с решёткой и запятой? По моему что-то тут не так написано.
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок.
А в том, чтобы писать программы, работающие при любом количестве ошибок.
 
Речь о предложении sokol92в 7м посту...
Цитата
Попробуйте на проблемном компьютере на "чистом" Excel создать новую книгу. Вставьте в нее стандартный модуль и добавьте следующий код:... Во что превращается числовая константа?И еще проверьте, что на проблемном компьютере нет никаких других проектов, кроме новой книги, и есть только один пункт меню в Add-Ins
 
Данная ошибка после проявляется во многих местах кода...
Вот очень типичный пример...

Дело явно в настройках региональных форматов для конкретного файла... Где такое есть в экселе?
 
Цитата
Леонид Коршак написал:
Дело явно в настройках региональных форматов для конкретного файла.
Увы, мне такое не известно (и уж точно, без файла ничего сказать нельзя).
Попробуйте на проблемном компьютере убрать галочку в параметре Дополнительно/Использовать системные разделители.
Изменено: sokol92 - 08.08.2018 16:42:43
Владимир
 
А у вас, часом, не сидит птичка "Автоматическая вставка десятичной запятой"?
 
А помните как нам всем когда-то гадил Скайп? А PuntoSwitcher или как там его... Не пользуюсь.
 
Не помню... а как это связано?

Цитата
RAN написал: А у вас, часом, не сидит птичка "Автоматическая вставка десятичной запятой"?
А где это посмотреть???
 
Цитата
RAN написал:
А у вас, часом, не сидит птичка "Автоматическая вставка десятичной запятой"?
Цитата
Леонид Коршак написал:
А где это посмотреть???
Файл - Параметры - Дополнительно.
 
Цитата
Леонид Коршак написал:
как это связано?
- тогда тоже явной связи не было, хотя через буфер обмена влияло.
Это я к тому что может быть влияет какая-то совершенно другая программа, может какой менеджер памяти или ещё что... Ну как вариант.
 
Цитата
Юрий М написал:
Цитата RAN  написал:А у вас, часом, не сидит птичка "Автоматическая вставка десятичной запятой"?Цитата Леонид Коршак  написал:А где это посмотреть???Файл - Параметры - Дополнительно.
Галочки не стоит :(
 
Цитата
Hugo написал:
- тогда тоже явной связи не было, хотя через буфер обмена влияло.Это я к тому что может быть влияет какая-то совершенно другая программа, может какой менеджер памяти или ещё что... Ну как вариант.
Что еще можно проверить или протестить?
 
А #17 пробовали?
Владимир
 
Цитата
sokol92 написал:
А #17 пробовали?
Да... никакого эффекта... так же как и от
Цитата
RAN написал:
А у вас, часом, не сидит птичка "Автоматическая вставка десятичной запятой"?
Страницы: 1
Наверх