powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Разделитель дробной части в форме
10 сообщений из 10, страница 1 из 1
Разделитель дробной части в форме
    #34656271
pms
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
pms
Гость
Всем привет...
Столкнулся с такой проблемой:
Сделал в Excel форму, на форме TextBox, свойство ControlSource для TextBox сделал равным ячейке А1 (TextBox.ControlSource = "A1"), в ячейку забил цифру 1,1 (в системных виндовых настройках разделитель дробной части ","), формат ячейки число.
После этого открываем форму и видим, что TextBox содержит правильное число, но разделитель другой! "1.1"!!!
А теперь самое интересное... Блокируем компьютер (т.е. ставим на пароль), разблокируем, снова открываем форму и видим что разделитель теперь ","!!!
Пример прилагается... (форма открывается по двойному клику)

Вывод: форма изначально не видит региональных настроек, и начинает их видеть после какого-то обновления, которое происходит при блокировке....
...
Рейтинг: 0 / 0
Разделитель дробной части в форме
    #34656322
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во-превых, примера нет!

Во-вторых, попробывал у себя, у меня не получилось чтобы после разблокировки была запятая. Как была точка, так и осталась, как и должно быть наверное, т.к. в VB английские разделители!
...
Рейтинг: 0 / 0
Разделитель дробной части в форме
    #34656366
pms
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
pms
Гость
Пробовал на 3-х разных компьютерах (версии excel 2002, 2003)... везде проблема повторяется...
...
Рейтинг: 0 / 0
Разделитель дробной части в форме
    #34656419
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня не получается!
...
Рейтинг: 0 / 0
Разделитель дробной части в форме
    #34656442
JaneDoe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ээ...
эта тема на правах заметки? или какой то вопрос есть на который требуется ответ?
...
Рейтинг: 0 / 0
Разделитель дробной части в форме
    #34656461
JaneDoe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и кстати да... у меня как была "," так и осталась
...
Рейтинг: 0 / 0
Разделитель дробной части в форме
    #34656656
pms
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
pms
Гость
JaneDoeи кстати да... у меня как была "," так и осталась
Вот! а у Deggasad точка все время...
Кстати, версия Excel какая?

А вопрос такой, где могут быть настройки разделителя для формы?
...
Рейтинг: 0 / 0
Разделитель дробной части в форме
    #34656676
JaneDoe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
excel 2000
WinXP
...
Рейтинг: 0 / 0
Разделитель дробной части в форме
    #34656689
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2003
...
Рейтинг: 0 / 0
Разделитель дробной части в форме
    #34656970
pms
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
pms
Гость
Проблема решена таким образом:
1) Процедура определения текущего разделителя в форме (в ячейке A1 всегда цифра 1,1)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Public FormDecimalSeparator As String

Public Sub GetFormSeparator()
    Form_Credits.o_Form_Separator.ControlSource = "A1"
    If InStr(Form_Credits.o_Form_Separator.Value, ".") <>  0  Then
        FormDecimalSeparator = "."
    ElseIf InStr(Form_Credits.o_Form_Separator.Value, ",") <>  0  Then
        FormDecimalSeparator = ","
    Else
        FormDecimalSeparator = ""
    End If
    Form_Credits.o_Form_Separator.ControlSource = ""
End Sub
2) Функция замена разделителя числа на текущий (используется в каждом TextBox, в событии Change)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Public Function SeparatorChange(p_Value As String) As String
    Dim v_DecimalSeparator As String
    v_DecimalSeparator = FormDecimalSeparator
    If p_Value <> "" Then
        If v_DecimalSeparator = "." Then
            SeparatorChange = Replace(p_Value, ",", ".")
        ElseIf v_DecimalSeparator = "," Then
            SeparatorChange = Replace(p_Value, ".", ",")
        Else
            SeparatorChange = Replace(p_Value, v_DecimalSeparator, "")
        End If
    End If
End Function
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Разделитель дробной части в форме
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]