EXCEL-VBA-Как"вытащить"ПеременнуюСреды,КакЗаписать

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
anval
Сообщения: 98
Зарегистрирован: 09 ноя 2004, 10:06

1)Как "вытащить" в макросе переменную среды - в данном случае сетевое имя комьютера.
2)В ячейку нужно поместить техт "м3", где "3" должна быть представлена в виде показателя степени. При ручном вводе информации этот символ вводится копированием из таблицы символов . Как достичь такого же результата при программном формировании ячейки?
Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

2) попробовать через коллекцию Characters изменить шрифт нужного сивмола на superscript
Изображение
Avsha
Сообщения: 665
Зарегистрирован: 08 сен 2005, 13:47
Откуда: KZ

смотрите...
forum/viewtopic.php?t=4304&highlight=

Применительно к вашему случаю...
MsgBox (Environ("COMPUTERNAME"))

Наверно вы знаете, как их просмативать в Windows...
Но на всякий случай: Пуск\Выполнить\cmd\команда set
Avsha
Сообщения: 665
Зарегистрирован: 08 сен 2005, 13:47
Откуда: KZ

Есть ячейка со значением "м3"
Нажимаете на ней F2, затем выделяете только цифру 3, правая кнопка мыши - "Формат ячеек",
устанавливаете опцию "Верхний индекс" - вот вам и показатель степени.

Затем все тоже проделал с записью макроса, вот что получилось...

Код: Выделить всё

Sub Макрос1()
' Макрос1 Макрос
' Макрос записан 17.11.2005 (HomePC)

    Range("F14").Select
    ActiveCell.FormulaR1C1 = "м3"
    With ActiveCell.Characters(Start:=1, Length:=1).Font
        .Name = "Arial Cyr"
        .FontStyle = "обычный"
        .Size = 10
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ColorIndex = xlAutomatic
    End With
    With ActiveCell.Characters(Start:=2, Length:=1).Font
        .Name = "Arial CYR"
        .FontStyle = "обычный"
        .Size = 10
        .Strikethrough = False
        .Superscript = True
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ColorIndex = xlAutomatic
    End With
End Sub


Очевидно, что за это дело отвечает свойство .Superscript = True, что и советовал Игорь Акопян.
anval
Сообщения: 98
Зарегистрирован: 09 ноя 2004, 10:06

Avsha, b]Игорь Акопян[/b], спасибо!
С переменной среды все отлично, ответ подходит, спасибо за него и ссылку,
На 2-ой вопрос привожу еще один ответ (Pashulka,на другом форуме), для моих нужд он более удобен.

ActiveCell.Value = "m" & ChrW(179)
Avsha
Сообщения: 665
Зарегистрирован: 08 сен 2005, 13:47
Откуда: KZ

Вариант с ChrW(179) мне тоже понравился,
попутно разобрался, что не всегда надо доставать таблицу символов для копирования в Excel,
можно вбить этот символ сочетанием Alt(удерживаем)-0-1-7-9-Alt(отпускаем).

Только если в показатель необходимо будет записать выражение, типа (x+1) придеться воспользоваться верхним индексом,
но похоже вам Объема (м&#179 ;) достаточно :)
anval
Сообщения: 98
Зарегистрирован: 09 ноя 2004, 10:06

Да, я тоже стала пользоваться вводом с помощью Alt(этот способ известен давно, но когда им не пользуешься длительное время, просто о нем забываешь). Что касается объема, мне действительно достаточно в показателе степени одной тройки и с помощью предложенного приема моя проблема легко решилась, можно сказать, одним оператором(в сформированной программно таблице перед выдачей результата глобальной заменой вместо м3 ставится м&sup3 ;)
Ответить