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

Вход

Регистрация

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

 

= Мир MS Excel/Как вставить надстрочную двойку макросом? - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Как вставить надстрочную двойку макросом? (Макросы/Sub)
Как вставить надстрочную двойку макросом?
Alex_ST Дата: Вторник, 17.06.2014, 16:42 | Сообщение № 1
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3206
Репутация: 609 ±
Замечаний: 0% ±

2003
Умучился я в расчётных таблицах в ручную менять форматы так чтобы было и красиво, и формулы считали.
Налепил себе несколько процедур для форматирования ячеек в наиболее нужные мне виды.
Ну, типа:

А тут понадобилось мне работать с квадратными миллиметрами.
Решил быстренько слепить по аналогии.
А не тут-то было! Не хочет у меня VBE понимать надстрочную двойку! Как ни бился, а вместо мм2 получается мм?, т.к. ввести в код 2 никак не удаётся.
При этом по Alt+0176 символ "градус", например, добавляется, а по Alt+0178 "квадрат" - нет
Что-то у меня переклин настал... Как эти долбаные символы ввести? Думал их Chr на листе функцией =КОДСИМВ узнать, так 63 возвращает...



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


Сообщение отредактировал Alex_ST - Вторник, 17.06.2014, 16:43
 
Ответить
СообщениеУмучился я в расчётных таблицах в ручную менять форматы так чтобы было и красиво, и формулы считали.
Налепил себе несколько процедур для форматирования ячеек в наиболее нужные мне виды.
Ну, типа:

А тут понадобилось мне работать с квадратными миллиметрами.
Решил быстренько слепить по аналогии.
А не тут-то было! Не хочет у меня VBE понимать надстрочную двойку! Как ни бился, а вместо мм2 получается мм?, т.к. ввести в код 2 никак не удаётся.
При этом по Alt+0176 символ "градус", например, добавляется, а по Alt+0178 "квадрат" - нет
Что-то у меня переклин настал... Как эти долбаные символы ввести? Думал их Chr на листе функцией =КОДСИМВ узнать, так 63 возвращает...

Автор - Alex_ST
Дата добавления - 17.06.2014 в 16:42
Rioran Дата: Вторник, 17.06.2014, 16:53 | Сообщение № 2
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
Alex_ST, здравствуй.

Применительно к ячейке, где только три твоих символа мм2:

[vba]
Код
.Characters(Start:=3, Length:=1).Font.Superscript = True
[/vba]


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
 
Ответить
СообщениеAlex_ST, здравствуй.

Применительно к ячейке, где только три твоих символа мм2:

[vba]
Код
.Characters(Start:=3, Length:=1).Font.Superscript = True
[/vba]

Автор - Rioran
Дата добавления - 17.06.2014 в 16:53
Alex_ST Дата: Вторник, 17.06.2014, 17:06 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3206
Репутация: 609 ±
Замечаний: 0% ±

2003
Разница между символом надстрочной юникодовской двойки и Superscript-овским форматом обычной двойки огромная!
Да и в пользовательском формате суперскрипт не укажешь никак.



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеРазница между символом надстрочной юникодовской двойки и Superscript-овским форматом обычной двойки огромная!
Да и в пользовательском формате суперскрипт не укажешь никак.

Автор - Alex_ST
Дата добавления - 17.06.2014 в 17:06
Саня Дата: Вторник, 17.06.2014, 17:08 | Сообщение № 4
Группа: Друзья
Ранг: Ветеран
Сообщений: 1068
Репутация: 560 ±
Замечаний: 0% ±

XL 2016
делал когда-то...
К сообщению приложен файл: _---.xlsb (17.5 Kb)
 
Ответить
Сообщениеделал когда-то...

Автор - Саня
Дата добавления - 17.06.2014 в 17:08
Rioran Дата: Вторник, 17.06.2014, 17:12 | Сообщение № 5
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
По заданию - да, не правильно понял, что нужно.

Саня, крутой файл.


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279


Сообщение отредактировал Rioran - Вторник, 17.06.2014, 17:13
 
Ответить
СообщениеПо заданию - да, не правильно понял, что нужно.

Саня, крутой файл.

Автор - Rioran
Дата добавления - 17.06.2014 в 17:12
Alex_ST Дата: Вторник, 17.06.2014, 17:15 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3206
Репутация: 609 ±
Замечаний: 0% ±

2003
Саня, а текст процедурки выложить можешь? У меня собаки-сисадмины на работу файлы с макросами не пускают... Боятся, дебилоиды, макровирусов.



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеСаня, а текст процедурки выложить можешь? У меня собаки-сисадмины на работу файлы с макросами не пускают... Боятся, дебилоиды, макровирусов.

Автор - Alex_ST
Дата добавления - 17.06.2014 в 17:15
Rioran Дата: Вторник, 17.06.2014, 17:29 | Сообщение № 7
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
Alex_ST, Александр, видимо, отошёл. Выложу за него из его же файла:

[vba]
Код
Option Explicit

Function СИМВОЛ_РАСШ(i As Integer, bSub As Boolean) As String
     Dim sI As String
     sI = CStr(i)

     Dim j As Byte, sTemp As String, sCh As String * 1, byt As Byte
     sTemp = ""
     For j = 1 To Len(sI)
         sCh = Mid(sI, j, 1)
         byt = CByte(sCh)
         sTemp = sTemp & IIf(bSub, _
                             getSubSymbol(byt), _
                             getSuperSymbol(byt))
     Next j
     СИМВОЛ_РАСШ = sTemp
End Function

Private Function getSubSymbol(i As Byte) As String
     getSubSymbol = ChrW(i + 8320)
End Function

Private Function getSuperSymbol(i As Byte) As String
     Dim iW As Integer
     Select Case i
         Case 1: iW = 185
         Case 2, 3: iW = i + 176
         Case 0, Is > 3: iW = i + 8304
     End Select
     getSuperSymbol = ChrW(iW)
End Function
[/vba]


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
 
Ответить
СообщениеAlex_ST, Александр, видимо, отошёл. Выложу за него из его же файла:

[vba]
Код
Option Explicit

Function СИМВОЛ_РАСШ(i As Integer, bSub As Boolean) As String
     Dim sI As String
     sI = CStr(i)

     Dim j As Byte, sTemp As String, sCh As String * 1, byt As Byte
     sTemp = ""
     For j = 1 To Len(sI)
         sCh = Mid(sI, j, 1)
         byt = CByte(sCh)
         sTemp = sTemp & IIf(bSub, _
                             getSubSymbol(byt), _
                             getSuperSymbol(byt))
     Next j
     СИМВОЛ_РАСШ = sTemp
End Function

Private Function getSubSymbol(i As Byte) As String
     getSubSymbol = ChrW(i + 8320)
End Function

Private Function getSuperSymbol(i As Byte) As String
     Dim iW As Integer
     Select Case i
         Case 1: iW = 185
         Case 2, 3: iW = i + 176
         Case 0, Is > 3: iW = i + 8304
     End Select
     getSuperSymbol = ChrW(iW)
End Function
[/vba]

Автор - Rioran
Дата добавления - 17.06.2014 в 17:29
krosav4ig Дата: Вторник, 17.06.2014, 19:16 | Сообщение № 8
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
При этом по Alt+0176 символ "градус", например, добавляется, а по Alt+0178 "квадрат" - нет

чтобы ввелся квадрат, нужно чтобы раскладка была английская, иначе вводится украинская І


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Вторник, 17.06.2014, 19:17
 
Ответить
Сообщение
При этом по Alt+0176 символ "градус", например, добавляется, а по Alt+0178 "квадрат" - нет

чтобы ввелся квадрат, нужно чтобы раскладка была английская, иначе вводится украинская І

Автор - krosav4ig
Дата добавления - 17.06.2014 в 19:16
Alex_ST Дата: Вторник, 17.06.2014, 21:01 | Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3206
Репутация: 609 ±
Замечаний: 0% ±

2003
чтобы ввелся квадрат, нужно чтобы раскладка была английская, иначе вводится украинская І
это я слышал и, естественно, пробовал.
И так, и сяк то, что вводится, выглядит как І
А уж украинская это І или английская І , разбираться я не стал, ибо мне это пофигу, т.к. это явно не 2 :)



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

Автор - Alex_ST
Дата добавления - 17.06.2014 в 21:01
Alex_ST Дата: Вторник, 17.06.2014, 21:43 | Сообщение № 10
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3206
Репутация: 609 ±
Замечаний: 0% ±

2003
Саня, позволь тебе залепить в репу ! :)
Очень поучительный и наглядный пример. Всё время я про эти ChrW забываю (наверное, потому, что не совсем понимаю) :(
Всё получилось.
Вот, например, для мм2[vba]
Код
Sub FORMAT_mm2()
      With ActiveWindow.RangeSelection: .NumberFormat = "#,##0"" мм""" & ChrW(178): .Select: End With
End Sub
[/vba]



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


Сообщение отредактировал Alex_ST - Среда, 18.06.2014, 08:38
 
Ответить
СообщениеСаня, позволь тебе залепить в репу ! :)
Очень поучительный и наглядный пример. Всё время я про эти ChrW забываю (наверное, потому, что не совсем понимаю) :(
Всё получилось.
Вот, например, для мм2[vba]
Код
Sub FORMAT_mm2()
      With ActiveWindow.RangeSelection: .NumberFormat = "#,##0"" мм""" & ChrW(178): .Select: End With
End Sub
[/vba]

Автор - Alex_ST
Дата добавления - 17.06.2014 в 21:43
ximki-vinki Дата: Пятница, 19.09.2014, 11:05 | Сообщение № 11
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Отличный макрос, спасибо.
Но есть вопрос.
Как те же махинации проделать текстом? Понимаю, что нужно изменить в функции, что бы он работал не с цифрами, а с текстом. Но боюсь все сломать
 
Ответить
СообщениеОтличный макрос, спасибо.
Но есть вопрос.
Как те же махинации проделать текстом? Понимаю, что нужно изменить в функции, что бы он работал не с цифрами, а с текстом. Но боюсь все сломать

Автор - ximki-vinki
Дата добавления - 19.09.2014 в 11:05
Alex_ST Дата: Пятница, 19.09.2014, 12:24 | Сообщение № 12
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3206
Репутация: 609 ±
Замечаний: 0% ±

2003
ximki-vinki, что Вы имели в виду?
Если просто символы вводить юникодовские в текст, то макрорекордер Вам поможет.



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
Сообщениеximki-vinki, что Вы имели в виду?
Если просто символы вводить юникодовские в текст, то макрорекордер Вам поможет.

Автор - Alex_ST
Дата добавления - 19.09.2014 в 12:24
ximki-vinki Дата: Пятница, 19.09.2014, 12:35 | Сообщение № 13
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
У меня текст находиться в формуле, и форматирование шрифта к нему не применяется.
Опубликованный здесь макрос работает только с числами.
В макросах я не силен, вот и прошу помощи.
[moder]Создавайте свою тему и прикладывайте пример в Excel. И тут еще почитайте. Внимательно почитайте.
 
Ответить
СообщениеУ меня текст находиться в формуле, и форматирование шрифта к нему не применяется.
Опубликованный здесь макрос работает только с числами.
В макросах я не силен, вот и прошу помощи.
[moder]Создавайте свою тему и прикладывайте пример в Excel. И тут еще почитайте. Внимательно почитайте.

Автор - ximki-vinki
Дата добавления - 19.09.2014 в 12:35
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Как вставить надстрочную двойку макросом? (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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