Про листы...

Программирование на Visual Basic for Applications
Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Про листы...

Сообщение Sirik » 27.12.2004 (Пн) 15:17

У меня есть листы (их емена lst1, lst2 ...)

Как мне передать в процедуру ссылку на лист (например lst1)?

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 27.12.2004 (Пн) 15:25

Передавать имя листа как строку, чтобы потом в процедуре использовать Sheets("имя") - не пойдет?
Быть... или не быть. Вот. В чём вопрос?

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 27.12.2004 (Пн) 15:30

Можно, по-подробней, а в VBA слабоват.

Как именно передовать и как "ловить" ?

За одно расскажи:
1. Как посмотреть и изменить свойства ячейки, меян интересует шрифт, выравнивание и границы
2. Как поместить в Панель свою кнопку?
Последний раз редактировалось Sirik 27.12.2004 (Пн) 15:36, всего редактировалось 1 раз.

OlegkA
Новичок
Новичок
 
Сообщения: 31
Зарегистрирован: 23.12.2004 (Чт) 21:51

Сообщение OlegkA » 27.12.2004 (Пн) 15:35

Sub a()
b = ActiveSheet.Name
MsgBox b
End Sub

выведет имя активного листа!

лучше изложи код мы тебе поможем!

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 27.12.2004 (Пн) 15:36

Очень простой способ - передавать в процедуру имя листа как строку, а в процедуре для обращения к листу использовать Sheets(имя_листа). Пример:

Код: Выделить всё
Private Sub test(name as String)
    Sheets(name).Range("A1").Value="Имя этого листа - " & name
End Sub

...
   test "Лист1"



Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 27.12.2004 (Пн) 15:47

Я просто не мог "догнать" имя коллекции листов. Оказалось всё просто, как всегда, Sheats.

Всем, спасибо.

ЗЫ. Есть только один вопросик, как не только данные, но и формат (тип границы, выравнивание и т.д.) из одной ячейки перенести в другую ?

ЗЫ2. Как на панель инструментов добавить свою кнопку

Tuco
Постоялец
Постоялец
 
Сообщения: 508
Зарегистрирован: 18.06.2003 (Ср) 16:37
Откуда: Подмосковье

Сообщение Tuco » 27.12.2004 (Пн) 17:50

Код: Выделить всё
    Application.CommandBars.Add "Hartman", MenuBar:=False, Position:=msoBarFloating, temporary:=True
    Application.CommandBars("Hartman").Visible = True
    With Application.CommandBars("Hartman")
        Set mButton = .Controls.Add(Type:=msoControlButton)
        With mButton
            .Caption = "Button1" 'Заголовок первой кнопки
            .OnAction = "MySub1" 'Процедура, вызываемая первой кнопкой
            .Style = msoButtonIconAndCaption
        End With
        Set mButton1 = .Controls.Add(Type:=msoControlButton)
        With mButton1
            .Caption = "Button2" 'Заголовок второй кнопки
            .OnAction = "MySub2" 'Процедура, вызываемая второй кнопкой
            .Style = msoButtonIconAndCaption
        End With

Здесь создаются две кнопки. Подробности ищи в статье В.Тихвинского "VBA Создание меню"
"There's more than one way to do it!"

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 28.12.2004 (Вт) 9:45

2 Tuco
Хороший код.

Но вот вопросы
1. как запустить макрос создания панели во время открытия документа (в Word'е по-моему макрос AutoExec)
2. как из одной ячейки перенести формат ячейки в другую

Tuco
Постоялец
Постоялец
 
Сообщения: 508
Зарегистрирован: 18.06.2003 (Ср) 16:37
Откуда: Подмосковье

Сообщение Tuco » 28.12.2004 (Вт) 11:00

Попробуй записать макрос в ThisDocument. ТОгда он будет запускаться (наверное, просто я в ворде макросов не писал, я в Экселе больше работаю). Там есть Normal, в нём ThisDocument. А в нём - событие Document_New. Когда оно происходит - запускается макрос и создаётся панель с кнопками.
Кстати, для удаления панели
Код: Выделить всё
CommandBars("Hartman").Delete
"There's more than one way to do it!"

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 28.12.2004 (Вт) 11:04

На второй вопрос - можно так:

Код: Выделить всё
Range(source).Copy
Range(dest).PasteSpecial Paste:=xlPasteFormats
Application.CutCopyMode = False 'Это чтобы убрать выделение ячеек, необязательно


Вместо source и dest указать те диапазоны, откуда и куда нужно перенести формат.

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 28.12.2004 (Вт) 11:10

2 uhm код просто супер. БОЛЬШОЕ спасибо!!!

И ещё: как удалить строку?


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

    TopList