Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Какая-то тупая проблема с датой. Код или Excel? Добавлено: 30.01.12 10:37  

Автор вопроса:  DrugON | ICQ: nospam 
Здравствуйте.
Для работы написал небольшой макрос.
Все здорово работает, со своей функцией справляется.
В самом начале выбирается дата отчета, который будет обрабатываться (файл сохраняется под новым именем в архиве).
Но вот какая незадача. Столкнулся с проблемой, причина которой мне абсолютно непонятна - дату 1 ноября (01/11/2011) макрос воспринимает как 11 января (11/01/2011).
Причем как-то странно - если выбираешь число от 13-го и выше, то всё верно - 13-го месяца не бывает и дата ставится правильно. А при выборе любой даты до 13-го числа (любого месяца) - день с месяцем меняются местами.
Причем изначально такой проблемы не было. Настройки никакие не менял. Да других компьютерах работает без проблем, на моем же - такая заморочка.
Уважаемые, подскажите, где искать источник трабла?

Кусок кода:


        Application.StatusBar = "Ввод новой даты / Enter new data"
        preDate = Format(Cells(1, 2).Value, "dd-mmm-yy")
        Cells(1, 2).Select
        Selection.ClearContents
        Call Calendar_
Application.ScreenUpdating = True
Application.ScreenUpdating = False
newDate = Format(Cells(1, 2).Value, "dd-mmm-yyyy")
Application.StatusBar = False

    If newDate = "" Then
        Application.ScreenUpdating = True
        Cells(1, 2).Value = Format(preDate, "dd-mm-yyyy")
        MsgBox "You must choose a date!!! Push the button again!"
        Application.StatusBar = False
        Exit Sub
        Else
    End If




Sub Calendar_()
Calendar.Show
End Sub


Форму самого календаря где-то скоммуниздил, скорее всего тут на форуме. Отображается обычный календарь, с возможностью выбора месяца, года и дня. Скрин формы:
http://s018.radikal.ru/i501/1201/ae/a60bbeaf0397.jpg
[IMG]http://s018.radikal.ru/i501/1201/ae/a60bbeaf0397.jpg[/IMG]
Код формы:

Private Sub Calendar1_Click()
ActiveCell = Format(Calendar1.Value, "dd/mm/yyyy")
Calendar.Hide
End Sub

Private Sub UserForm_Activate()
Me.Calendar1.Value = Date
End Sub


Я так понимаю, что если на других компах все нормально, то дело не в коде (использовал его очень часто и никогда проблем не было), то проблема в каких-то региональных системных настройках?

Вот как обычно - какая-то плевая проблема стопорит всё. И чем проще - тем сложнее.
Помогите, а?

Ответить

  Ответы Всего ответов: 11  

Номер ответа: 1
Автор ответа:
 DrugON



ICQ: nospam 

Вопросов: 10
Ответов: 53
 Профиль | | #1 Добавлено: 30.01.12 10:39
Картинки нельзя в сообщения вставлять, да?

Ответить

Номер ответа: 2
Автор ответа:
 DrugON



ICQ: nospam 

Вопросов: 10
Ответов: 53
 Профиль | | #2 Добавлено: 30.01.12 10:54
В самом деле - изменил региональные настройки и все стало восприниматься правильно.
Но хотелось бы, чтобы код не зависел от региональных системных настроек и работал всегда.
Да и не менял я их до этого. Работал нормально, потом вдруг перестал. о_О

Ответить

Номер ответа: 3
Автор ответа:
 DrugON



ICQ: nospam 

Вопросов: 10
Ответов: 53
 Профиль | | #3 Добавлено: 30.01.12 20:39
И снова - ставлю региональные настройки на отличные от России - снова путаются местами день с месяцем. Во бред.
В макросе прописан формат даты - DD/MM/YYYY
Почему же он игнорирует формат?

Ответить

Номер ответа: 4
Автор ответа:
 Дмит



Вопросов: 11
Ответов: 160
 Web-сайт: dimit.pochta.ru
 Профиль | | #4
Добавлено: 31.01.12 09:02
Не понял кто у Вас ответственен за порчу. Может быть попробовать другой контролл, например MonthView. Выглядит по моему аккуратнее.

Ответить

Номер ответа: 5
Автор ответа:
 DrugON



ICQ: nospam 

Вопросов: 10
Ответов: 53
 Профиль | | #5 Добавлено: 31.01.12 22:44
Да вот самому интересно - главное на других компьютерах все работает нормально, никаких вопросов юзеры не задают, специально просил затестить на всевозможных датах. Всё гуд. Явно что-то с настройками Экселя или системными. Но как ни крутил их - ничего не помогает (((

Ответить

Номер ответа: 6
Автор ответа:
 DrugON



ICQ: nospam 

Вопросов: 10
Ответов: 53
 Профиль | | #6 Добавлено: 31.01.12 23:00
Скажите, а как заюзать этот контрол MonthView?
Нужно какую-то библиотеку скачивать для этого или я не так понял?

Не пинайте, я далеко не спец. Всё у меня на оооочень любительском уровне.

Ответить

Номер ответа: 7
Автор ответа:
 DrugON



ICQ: nospam 

Вопросов: 10
Ответов: 53
 Профиль | | #7 Добавлено: 31.01.12 23:09
Решил проблему, убрав форматирование даты.

  1.  
  2. Private Sub Calendar1_Click()
  3. ActiveCell = Calendar1.Value
  4. Calendar.Hide
  5. End Sub



Но все же хотелось бы узнать, что за контрол MonthView и с чем его есть.
Спасибо заранее.

Ответить

Номер ответа: 8
Автор ответа:
 Дмит



Вопросов: 11
Ответов: 160
 Web-сайт: dimit.pochta.ru
 Профиль | | #8
Добавлено: 01.02.12 09:13
www.dimit.pochta.ru/wrem/mw.jpg
если библиотека не установлена, то да - скачивать.

Ответить

Номер ответа: 9
Автор ответа:
 DrugON



ICQ: nospam 

Вопросов: 10
Ответов: 53
 Профиль | | #9 Добавлено: 29.01.13 14:52
Не совсем понял Вашу ссылку.

Друзья, научите, что за MonthView такой? С чем его едят и где берут?

Ответить

Номер ответа: 10
Автор ответа:
 DrugON



ICQ: nospam 

Вопросов: 10
Ответов: 53
 Профиль | | #10 Добавлено: 29.01.13 14:55
Ой, нашел однако в дополнительных контролах. Название просто начинается с Microsoft, а у меня непереносимость этого слова глазами, вот.
Попробую его прикрутить, может оно в MS Office 2010 заработает...

Ответить

Номер ответа: 11
Автор ответа:
 DrugON



ICQ: nospam 

Вопросов: 10
Ответов: 53
 Профиль | | #11 Добавлено: 31.01.13 11:23
Заработало, огромное спасибо за совет!

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам