Умучился я в расчётных таблицах в ручную менять форматы так чтобы было и красиво, и формулы считали. Налепил себе несколько процедур для форматирования ячеек в наиболее нужные мне виды. Ну, типа:
[vba]
Код
Private Sub FORMAT_kW() With ActiveWindow.RangeSelection: .NumberFormat = "#,##0"" кВт""": .Select: End With End Sub
Private Sub FORMAT_kVA() With ActiveWindow.RangeSelection: .NumberFormat = "#,##0"" кВА""": .Select: End With End Sub
Private Sub FORMAT_kWh() With ActiveWindow.RangeSelection: .NumberFormat = "#,##0"" кВт*час.""": .Select: End With End Sub
[/vba]
А тут понадобилось мне работать с квадратными миллиметрами. Решил быстренько слепить по аналогии. А не тут-то было! Не хочет у меня VBE понимать надстрочную двойку! Как ни бился, а вместо мм2 получается мм?, т.к. ввести в код 2 никак не удаётся. При этом по Alt+0176 символ "градус", например, добавляется, а по Alt+0178 "квадрат" - нет Что-то у меня переклин настал... Как эти долбаные символы ввести? Думал их Chr на листе функцией =КОДСИМВ узнать, так 63 возвращает...
Умучился я в расчётных таблицах в ручную менять форматы так чтобы было и красиво, и формулы считали. Налепил себе несколько процедур для форматирования ячеек в наиболее нужные мне виды. Ну, типа:
[vba]
Код
Private Sub FORMAT_kW() With ActiveWindow.RangeSelection: .NumberFormat = "#,##0"" кВт""": .Select: End With End Sub
Private Sub FORMAT_kVA() With ActiveWindow.RangeSelection: .NumberFormat = "#,##0"" кВА""": .Select: End With End Sub
Private Sub FORMAT_kWh() With ActiveWindow.RangeSelection: .NumberFormat = "#,##0"" кВт*час.""": .Select: End With End Sub
[/vba]
А тут понадобилось мне работать с квадратными миллиметрами. Решил быстренько слепить по аналогии. А не тут-то было! Не хочет у меня VBE понимать надстрочную двойку! Как ни бился, а вместо мм2 получается мм?, т.к. ввести в код 2 никак не удаётся. При этом по Alt+0176 символ "градус", например, добавляется, а по Alt+0178 "квадрат" - нет Что-то у меня переклин настал... Как эти долбаные символы ввести? Думал их Chr на листе функцией =КОДСИМВ узнать, так 63 возвращает...Alex_ST
С уважением, Алексей MS Excel 2003 - the best!!!
Сообщение отредактировал Alex_ST - Вторник, 17.06.2014, 16:43
Разница между символом надстрочной юникодовской двойки и Superscript-овским форматом обычной двойки огромная! Да и в пользовательском формате суперскрипт не укажешь никак.
Разница между символом надстрочной юникодовской двойки и Superscript-овским форматом обычной двойки огромная! Да и в пользовательском формате суперскрипт не укажешь никак.Alex_ST
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]
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
чтобы ввелся квадрат, нужно чтобы раскладка была английская, иначе вводится украинская І
это я слышал и, естественно, пробовал. И так, и сяк то, что вводится, выглядит как І А уж украинская это І или английская І , разбираться я не стал, ибо мне это пофигу, т.к. это явно не 2
чтобы ввелся квадрат, нужно чтобы раскладка была английская, иначе вводится украинская І
это я слышал и, естественно, пробовал. И так, и сяк то, что вводится, выглядит как І А уж украинская это І или английская І , разбираться я не стал, ибо мне это пофигу, т.к. это явно не 2Alex_ST
Саня, позволь тебе залепить в репу ! Очень поучительный и наглядный пример. Всё время я про эти ChrW забываю (наверное, потому, что не совсем понимаю) Всё получилось. Вот, например, для мм2[vba]
Код
Sub FORMAT_mm2() With ActiveWindow.RangeSelection: .NumberFormat = "#,##0"" мм""" & ChrW(178): .Select: End With End Sub
[/vba]
Саня, позволь тебе залепить в репу ! Очень поучительный и наглядный пример. Всё время я про эти ChrW забываю (наверное, потому, что не совсем понимаю) Всё получилось. Вот, например, для мм2[vba]
Код
Sub FORMAT_mm2() With ActiveWindow.RangeSelection: .NumberFormat = "#,##0"" мм""" & ChrW(178): .Select: End With End Sub
Отличный макрос, спасибо. Но есть вопрос. Как те же махинации проделать текстом? Понимаю, что нужно изменить в функции, что бы он работал не с цифрами, а с текстом. Но боюсь все сломать
Отличный макрос, спасибо. Но есть вопрос. Как те же махинации проделать текстом? Понимаю, что нужно изменить в функции, что бы он работал не с цифрами, а с текстом. Но боюсь все сломатьximki-vinki
У меня текст находиться в формуле, и форматирование шрифта к нему не применяется. Опубликованный здесь макрос работает только с числами. В макросах я не силен, вот и прошу помощи. [moder]Создавайте свою тему и прикладывайте пример в Excel. И тут еще почитайте. Внимательно почитайте.
У меня текст находиться в формуле, и форматирование шрифта к нему не применяется. Опубликованный здесь макрос работает только с числами. В макросах я не силен, вот и прошу помощи. [moder]Создавайте свою тему и прикладывайте пример в Excel. И тут еще почитайте. Внимательно почитайте.ximki-vinki