Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Не могу задать пользовательский формат с условием - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Не могу задать пользовательский формат с условием (Макросы/Sub)
Не могу задать пользовательский формат с условием
Alex_ST Дата: Среда, 18.06.2014, 13:04 | Сообщение № 1
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3199
Репутация: 606 ±
Замечаний: 0% ±

2003
Пытаюсь задать формат ячейки с условием чтобы само Ватты-килоВатты-МегаВатты считало.
Если в ручную задавать формат
[vba]
Код
[>999999]# ##0,0  " MW";[>999]# ##0,0 " kW";# ##0,0" W"
[/vba]
то всё нормально форматируется.
Пытаюсь то же самое сделать макросом:[vba]
Код
Sub FORMAT_W_PLUS()
       With ActiveWindow.RangeSelection:
       .NumberFormat = "[>999999]# ##0,0  "" MW"";[>999]# ##0,0 "" kW"";# ##0,0"" W"""
       Debug.Print .NumberFormat
     End With
End Sub
[/vba]
В окне Immediate получаю то, что и хотел:
[vba]
Код
[>999999]# ##0,0  " MW";[>999]# ##0,0 " kW";# ##0,0" W"
[/vba]
а формат ячейки, зараза, становится такой:[vba]
Код
[>999999]#\ # #00\  " MW";[>999]#\ # #00\ " kW";#\ # #00" W"
[/vba]
И откуда лезут эти обратные слэши вместо пробелов, никак не могу понять.
К сообщению приложен файл: UserFormatWatt.xls (27.5 Kb)



С уважением,
Алексей
MS Excel 2003 - the best!!!


Сообщение отредактировал Alex_ST - Среда, 18.06.2014, 20:55
 
Ответить
СообщениеПытаюсь задать формат ячейки с условием чтобы само Ватты-килоВатты-МегаВатты считало.
Если в ручную задавать формат
[vba]
Код
[>999999]# ##0,0  " MW";[>999]# ##0,0 " kW";# ##0,0" W"
[/vba]
то всё нормально форматируется.
Пытаюсь то же самое сделать макросом:[vba]
Код
Sub FORMAT_W_PLUS()
       With ActiveWindow.RangeSelection:
       .NumberFormat = "[>999999]# ##0,0  "" MW"";[>999]# ##0,0 "" kW"";# ##0,0"" W"""
       Debug.Print .NumberFormat
     End With
End Sub
[/vba]
В окне Immediate получаю то, что и хотел:
[vba]
Код
[>999999]# ##0,0  " MW";[>999]# ##0,0 " kW";# ##0,0" W"
[/vba]
а формат ячейки, зараза, становится такой:[vba]
Код
[>999999]#\ # #00\  " MW";[>999]#\ # #00\ " kW";#\ # #00" W"
[/vba]
И откуда лезут эти обратные слэши вместо пробелов, никак не могу понять.

Автор - Alex_ST
Дата добавления - 18.06.2014 в 13:04
Pelena Дата: Среда, 18.06.2014, 13:33 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19167
Репутация: 4412 ±
Замечаний: ±

Excel 365 & Mac Excel
У меня так работает, то есть разделитель разрядов запятая, а десятичный точка
[vba]
Код
Sub FORMAT_W_PLUS()
     With ActiveWindow.RangeSelection:
     .NumberFormat = "[>999999]#,##0.0,,"" MW"";[>999]#,##0.0,"" kW"";#,##0.0"" W"""
     Debug.Print .NumberFormat
End With
End Sub
[/vba]


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеУ меня так работает, то есть разделитель разрядов запятая, а десятичный точка
[vba]
Код
Sub FORMAT_W_PLUS()
     With ActiveWindow.RangeSelection:
     .NumberFormat = "[>999999]#,##0.0,,"" MW"";[>999]#,##0.0,"" kW"";#,##0.0"" W"""
     Debug.Print .NumberFormat
End With
End Sub
[/vba]

Автор - Pelena
Дата добавления - 18.06.2014 в 13:33
Саня Дата: Среда, 18.06.2014, 14:06 | Сообщение № 3
Группа: Друзья
Ранг: Ветеран
Сообщений: 1068
Репутация: 560 ±
Замечаний: 0% ±

XL 2016
[vba]
Код
.NumberFormatLocal ...
[/vba]
видимо.
 
Ответить
Сообщение[vba]
Код
.NumberFormatLocal ...
[/vba]
видимо.

Автор - Саня
Дата добавления - 18.06.2014 в 14:06
Alex_ST Дата: Среда, 18.06.2014, 20:23 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3199
Репутация: 606 ±
Замечаний: 0% ±

2003
Лена, спасибо за вариант.
Саня, а ты как всегда - супермозг!
Только вот я что-то не пойму, почему нужно использовать не .NumberFormat, а .NumberFormatLocal ?
И вообще, при чём тут Local, когда в задаваемом мною формате только латиница?
Я понимаю разницу между Formula и FormulaLocal … Но вот при NumberFormat ??? shock



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеЛена, спасибо за вариант.
Саня, а ты как всегда - супермозг!
Только вот я что-то не пойму, почему нужно использовать не .NumberFormat, а .NumberFormatLocal ?
И вообще, при чём тут Local, когда в задаваемом мною формате только латиница?
Я понимаю разницу между Formula и FormulaLocal … Но вот при NumberFormat ??? shock

Автор - Alex_ST
Дата добавления - 18.06.2014 в 20:23
Alex_ST Дата: Среда, 18.06.2014, 20:54 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3199
Репутация: 606 ±
Замечаний: 0% ±

2003
А с форматом я немного перемудрил.
# ## нужно было задавать только для Мегаватт.
Поэтому и запись формата можно сократить до
[vba]
Код
[>999999]# ##0,0  " MW";[>1000]0,0 " kW";0,0" W"
[/vba]
Вот так прекрасно макрос работает:
[vba]
Код
Sub FORMAT_W_PLUS()
      With ActiveWindow.RangeSelection
          .NumberFormatLocal = "[>999999]# ##0,0  "" MW"";[>1000]0,0 "" kW"";0,0"" W"""
      End With
End Sub
[/vba]



С уважением,
Алексей
MS Excel 2003 - the best!!!


Сообщение отредактировал Alex_ST - Среда, 18.06.2014, 20:55
 
Ответить
СообщениеА с форматом я немного перемудрил.
# ## нужно было задавать только для Мегаватт.
Поэтому и запись формата можно сократить до
[vba]
Код
[>999999]# ##0,0  " MW";[>1000]0,0 " kW";0,0" W"
[/vba]
Вот так прекрасно макрос работает:
[vba]
Код
Sub FORMAT_W_PLUS()
      With ActiveWindow.RangeSelection
          .NumberFormatLocal = "[>999999]# ##0,0  "" MW"";[>1000]0,0 "" kW"";0,0"" W"""
      End With
End Sub
[/vba]

Автор - Alex_ST
Дата добавления - 18.06.2014 в 20:54
Саня Дата: Четверг, 19.06.2014, 00:37 | Сообщение № 6
Группа: Друзья
Ранг: Ветеран
Сообщений: 1068
Репутация: 560 ±
Замечаний: 0% ±

XL 2016
Только вот я что-то не пойму, почему нужно использовать не .NumberFormat, а .NumberFormatLocal ?
И вообще, при чём тут Local, когда в задаваемом мною формате только латиница?


Пользовательский интерфейс Excel'я локализован на использование "наших" спец. символов (десятичн. разделитель, разделитель разрядов, ...)
VBA-же не локализован и оперирует "родными" символами.

ставлю твой формат в ячейке, переходим в VBE (в Immediate):
[vba]
Код
?activecell.NumberFormat & vbcr & activecell.NumberFormatLocal
[/vba]
[>999999]#,##0.0,," MW";[>999]#,##0.0," kW";#,##0.0" W"
[>999999]# ##0,0 " MW";[>999]# ##0,0 " kW";# ##0,0" W"

1) тот "реальный" формат ячейки (запятая вместо пробела, точка вместо запятой) - En
2) то, что я писал в диалоге "Формат ячейки"

поэтому, если ты в NumberFormat "засунешь" свой локальный формат, то VBA его интерпретирует соответствующим образом (ты видел эти слэши)

Я понимаю разницу между Formula и FormulaLocal … Но вот при NumberFormat ???

представь, что Sum = ".,.,."
тогда СУММ = ", , ,"

ты пишешь:
[vba]
Код
formula="sum
formulalocal="СУММ
[/vba]
и тебе это понятно

аналогия
[vba]
Код
numberformat=".,.,."
numberformatlocal=", , ,"
[/vba]
смысл один в один.
 
Ответить
Сообщение
Только вот я что-то не пойму, почему нужно использовать не .NumberFormat, а .NumberFormatLocal ?
И вообще, при чём тут Local, когда в задаваемом мною формате только латиница?


Пользовательский интерфейс Excel'я локализован на использование "наших" спец. символов (десятичн. разделитель, разделитель разрядов, ...)
VBA-же не локализован и оперирует "родными" символами.

ставлю твой формат в ячейке, переходим в VBE (в Immediate):
[vba]
Код
?activecell.NumberFormat & vbcr & activecell.NumberFormatLocal
[/vba]
[>999999]#,##0.0,," MW";[>999]#,##0.0," kW";#,##0.0" W"
[>999999]# ##0,0 " MW";[>999]# ##0,0 " kW";# ##0,0" W"

1) тот "реальный" формат ячейки (запятая вместо пробела, точка вместо запятой) - En
2) то, что я писал в диалоге "Формат ячейки"

поэтому, если ты в NumberFormat "засунешь" свой локальный формат, то VBA его интерпретирует соответствующим образом (ты видел эти слэши)

Я понимаю разницу между Formula и FormulaLocal … Но вот при NumberFormat ???

представь, что Sum = ".,.,."
тогда СУММ = ", , ,"

ты пишешь:
[vba]
Код
formula="sum
formulalocal="СУММ
[/vba]
и тебе это понятно

аналогия
[vba]
Код
numberformat=".,.,."
numberformatlocal=", , ,"
[/vba]
смысл один в один.

Автор - Саня
Дата добавления - 19.06.2014 в 00:37
Alex_ST Дата: Пятница, 20.06.2014, 13:41 | Сообщение № 7
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3199
Репутация: 606 ±
Замечаний: 0% ±

2003
Саня, спасибо за обучение.
Попробую не забыть, когда это снова понадобится :)
Хотя раз процедуру написал и закинул её себе в Персонал, то вспомню и смогу слепить по аналогии, когда ещё раз понадобится.



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеСаня, спасибо за обучение.
Попробую не забыть, когда это снова понадобится :)
Хотя раз процедуру написал и закинул её себе в Персонал, то вспомню и смогу слепить по аналогии, когда ещё раз понадобится.

Автор - Alex_ST
Дата добавления - 20.06.2014 в 13:41
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Не могу задать пользовательский формат с условием (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!