[exce] написать макрос: меняет цвет текста

nikandox

Ребята помогите.. Надо написать макросб который просто читает и меняет цвет текста.. и еще некоторые мелочи.. Кто разбирается пишите мне плиизз. В долгу не останусь... Заранее спаибо

yolki

А куда тебе макрос? В ворд? В эксель? Али куда в другое место?
Что, в офисе встроенную писалку отключили?
Начинаешь писать макрос - выделяешь текст, меняешь цвет/фон.., останавливаешь запись..
Идёшь в редактор макросов - смотришь, чего там записалось. По образу и подобию делается свой макрос...

axmadeev

В Excele.. Может как нить к тебе зайду или ты ко мне все покажеш, если у тебя есть время и желание конечно

maggi14

Ой, это не ты был

yolki

Выделяешь нужный диапозон:

Начать запись макроса:

Вводишь имя для будущего макроса

Жмёшь нужные кнопки...
(Я нажал "Сделать жирную внешнюю границу" и "Залить голубым")

Жмём "Остановить запись" (отмечена стрелкой)
идём в редактор Visual Basic (Alt-F11)..
Там находим этот макрос.. У меня он записался в PERSONAL.XLS:Module2

Там ищем Sub Макрос2 (или как ты там его назовёшь во время начала записи..)
и видишь текст:

Sub Макрос2
'
' Макрос2 Макрос
' Макрос записан 25.04.2005 ()
'
'
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
'===========================
With Selection.Interior
.ColorIndex = 8
.Pattern = xlSolid
End With
'===========================
End Sub

Легко видеть, что тут происходит. Задаются толщины и положения линий для границ выделения (Selection - это то, что сейчас выделено на листе)
то, что между '=========================== - задаёт цвет и тип заливки.
Можешь поиграться с .Pattern
Макрос можно назначить сочетанию клавишь - например, Ctrl-Z (В момент создания)
или назначить кнопочке на панели.
например:
Сервис->Настройка.

- создаём панель для своих кнопочек. Сначала она пустая - обведена синим на след. картинке.

В настройках выбираем вкладку "Команды", в категориях - "Макросы", в командах - " Настраиваемая кнопка". Хватаем и тащим на свою панельку.
Щёлкаем правой кнопкой на нём.

Можем переназвать кнопку
Можем вставить значок для кнопки из буфера (Можем выбрать из существующего набора)
Нужно назначить макрос для кнопки

Выбрали - наслаждаемся.
Выделяем область - жмём на кнопку - она выполняет макрос.
Глядя на текст макроса можно догадаться, что меняя .ColorIndex меняем цвет заливки. Чтобы узнать о других фичах пользуемся писалкой макросов.
Например, хотим узнать как из макроса изменить размер шрифта? - Запускаем писалку, изменяем размер шрифта ручками - через кнопочки, останавливаем писалку - идём в редактор макросов и видим:

'
With Selection.Font
.Name = "Arial Cyr"
.Size = 22
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
Нетрудно догадаться, что изменять нам надо только .Size
Удачи
// Прямо-таки какой-то FAQ по макросам в Excel получился
// Office 2003 Rus

yolki

Как изменить значение в ячейке (i,j)?

ActiveSheet.Cells(i,j).Value="123AAA"
ячейку (i,j) на листе k?

ActiveWorkBook.WorkSheets(k).Cells(i,j).Value="123AAA"
На листе с именем "Мой Лист"?

ActiveWorkBook.WorkSheets("Мой Лист").Cells(i,j).Value="123AAA"
в ячейке с именем "percent"?

ActiveSheet.Range("percent").Cells(1, 1).Value = "aaa"

maggi14

Имхо лучше Cells(i,j).Formula = "sdgf"

axmadeev

Спасибо Люблю вас... и еще если подскащете как делать что не выделяя а сразу он начал поменят цвет (при нажатии алть+f8) О будет суупеерр

yolki

на Alt-F8 по-моему нельзя повесить.. только на Ctrl+...
А что он будет красить?
Ту, на которой стоит курсор? - так она уже выделена..
конкретную ячейку, например B12?
Запускаем писалку... выделяем B12, жмём "закрасить", останавливаем писалку.. смотрим код:

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

'
Range("B12").Select
With Selection.Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
End Sub
Логично?

gopnik1994

     Range("B12").Select
With Selection.Interior
...
select тут лишний.
проще так (и без выделения):
     With Range("B12").Interior 
...

maggi14

Вообще, если надо просо покрасить по условию, есть стандартный инструмент:
Format -> Conditional formatting... (Формат - Условное форматирование)
Оставить комментарий
Имя или ник:
Комментарий: