Доброго времени. Подскажите почему так происходит. Иногда при инициализации списка все проходит корректно т.е. числовые значения отображаются через запятую " 31,2 " , а иногда что чаще бывает через точку " 31.2 " что в свою очередь не совсем верно для меня. Что пробовала, писала и англ., и русскими символами, зависимости не увидела. До недавнего времени вроде работало все корректно. Данные разношерстные в примере приложила. Форматы пробовала от числового до общего, ничего не меняется. Свойства .text выпадает в ошибку. Куда обратить внимание? Всем спасибо)
Доброго времени. Подскажите почему так происходит. Иногда при инициализации списка все проходит корректно т.е. числовые значения отображаются через запятую " 31,2 " , а иногда что чаще бывает через точку " 31.2 " что в свою очередь не совсем верно для меня. Что пробовала, писала и англ., и русскими символами, зависимости не увидела. До недавнего времени вроде работало все корректно. Данные разношерстные в примере приложила. Форматы пробовала от числового до общего, ничего не меняется. Свойства .text выпадает в ошибку. Куда обратить внимание? Всем спасибо)Olena
Никакой ошибки нет, так и должно быть. У вас часть значений ячеек (с разделительным слешем) эксель воспринимает как текст, а остальные как числа. При инициализации комбобокса значения преобразуются в формат VBA, т.е. текстовые значения не изменяются, а у числовых разделитель дробной части заменяется на точку. Это не должно беспокоить, при копировании такого значения из комбобокса в ячейку листа точка будет обратно заменена на запятую. Если вам нужно, чтобы в списке значения отображались так же, как на листе, то они должны быть текстовыми. Перед заполнением диапазона значениями установите для него текстовый формат, или перед числовыми значениями поставьте апострофы.
Никакой ошибки нет, так и должно быть. У вас часть значений ячеек (с разделительным слешем) эксель воспринимает как текст, а остальные как числа. При инициализации комбобокса значения преобразуются в формат VBA, т.е. текстовые значения не изменяются, а у числовых разделитель дробной части заменяется на точку. Это не должно беспокоить, при копировании такого значения из комбобокса в ячейку листа точка будет обратно заменена на запятую. Если вам нужно, чтобы в списке значения отображались так же, как на листе, то они должны быть текстовыми. Перед заполнением диапазона значениями установите для него текстовый формат, или перед числовыми значениями поставьте апострофы.i691198
это не подходит так как мне при выборке нужно суммировать, а при апострофе не корректно происходит эта процедура (ошибка) на этом же форуме мне помогали ребята избавиться от апострофа) Я Вам благодарна за подсказки. Завтра опробую форматы)
это не подходит так как мне при выборке нужно суммировать, а при апострофе не корректно происходит эта процедура (ошибка) на этом же форуме мне помогали ребята избавиться от апострофа) Я Вам благодарна за подсказки. Завтра опробую форматы)Olena
Olena, заинтересовал Ваш необычный случай. Выяснил, что для того, чтобы в комбобоксе отображались правильные значения из именованного диапазона, нужно чтобы все значения в нём имели текстовой формат. Но не достаточно просто изменить формат ячеек. Необходимо после этого войти дабл-кликом в каждую ячейку. Только после этого форматы будут приняты. Так часто происходит при экспорте данных из баз данных - формулы не хотят работать если в таблице БД, чтобы не заморачиваться с ограничениями на значение был задан формат данных "текстовой". Для борьбы с этим у меня уже давно лежит в Personal макрос, который правит формат выделенных ячеек:
[vba]
Код
Sub Repair_Value() ' в выделенных ячейках исправить экспортированные как текст данные чтобы нормально опознались числа Dim rArea As Range On Error Resume Next ActiveWindow.RangeSelection.SpecialCells(xlCellTypeConstants).Select If Err Then Exit Sub With Application: .ScreenUpdating = False: .EnableEvents = False: .Calculation = xlManual: End With For Each rArea In Selection.Areas rArea.FormulaLocal = rArea.FormulaLocal Next rArea With Application: .ScreenUpdating = True: .EnableEvents = True: .Calculation = xlAutomatic: End With End Sub
[/vba]
Попробовал изменить формат данных Вашего диапазона на текстовой и применить свой макрос. Всё заработало! К стати, для того, чтобы изменения были наглядными, в соседних столбцах с диапазоном прописал формулы =ЕЧИСЛО и =ЕТЕКСТ, а для удобства добавил кнопки вызова макросов форматирования и исправления формата данных. Сразу стало видно, что изначально у Вас при общем формате ячеек часть данных была числами, часть - текстом. После простого форматирования в текст форматы к значениям в ячейках не применяются и в комбобоксе остаются точки, а после применения макроса всё становится нормально. Почему так происходит, не могу понять. Но пользоваться таким "костылём" вполне можно, тем более, что макрос Repair_Value написан со всеми возможными ускорителями и даже большие массивы обрабатывает достаточно шустро.
Olena, заинтересовал Ваш необычный случай. Выяснил, что для того, чтобы в комбобоксе отображались правильные значения из именованного диапазона, нужно чтобы все значения в нём имели текстовой формат. Но не достаточно просто изменить формат ячеек. Необходимо после этого войти дабл-кликом в каждую ячейку. Только после этого форматы будут приняты. Так часто происходит при экспорте данных из баз данных - формулы не хотят работать если в таблице БД, чтобы не заморачиваться с ограничениями на значение был задан формат данных "текстовой". Для борьбы с этим у меня уже давно лежит в Personal макрос, который правит формат выделенных ячеек:
[vba]
Код
Sub Repair_Value() ' в выделенных ячейках исправить экспортированные как текст данные чтобы нормально опознались числа Dim rArea As Range On Error Resume Next ActiveWindow.RangeSelection.SpecialCells(xlCellTypeConstants).Select If Err Then Exit Sub With Application: .ScreenUpdating = False: .EnableEvents = False: .Calculation = xlManual: End With For Each rArea In Selection.Areas rArea.FormulaLocal = rArea.FormulaLocal Next rArea With Application: .ScreenUpdating = True: .EnableEvents = True: .Calculation = xlAutomatic: End With End Sub
[/vba]
Попробовал изменить формат данных Вашего диапазона на текстовой и применить свой макрос. Всё заработало! К стати, для того, чтобы изменения были наглядными, в соседних столбцах с диапазоном прописал формулы =ЕЧИСЛО и =ЕТЕКСТ, а для удобства добавил кнопки вызова макросов форматирования и исправления формата данных. Сразу стало видно, что изначально у Вас при общем формате ячеек часть данных была числами, часть - текстом. После простого форматирования в текст форматы к значениям в ячейках не применяются и в комбобоксе остаются точки, а после применения макроса всё становится нормально. Почему так происходит, не могу понять. Но пользоваться таким "костылём" вполне можно, тем более, что макрос Repair_Value написан со всеми возможными ускорителями и даже большие массивы обрабатывает достаточно шустро.Alex_ST