Изменение свойств ячеек неактивного листа...

Программирование на Visual Basic for Applications
Rust
Новичок
Новичок
 
Сообщения: 42
Зарегистрирован: 01.02.2005 (Вт) 14:41

Изменение свойств ячеек неактивного листа...

Сообщение Rust » 11.09.2006 (Пн) 22:40

' В глобальном модуле
Public Sh As Worksheet

' В модуле формы
Set Sh = ThisWorkbook.Worksheets("Лист3")
With Sh.Range("A9:H9,D11:E11,A22:H22,D24:E24").Font
.Name = "Courier New"
.Size = 12
End With
Ошибка: Нельзя установить св-во Name класса Font

Вопрос: Как заставить работать этот код в Microsoft Office 97?
"Лист3" - неактивен (скрыт)
В более поздних версиях Office код отрабатывает нормально.
Заранее благодарен.

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Re: Изменение свойств ячеек неактивного листа...

Сообщение KL » 11.09.2006 (Пн) 23:53

Привет Rust,
Rust писал(а):' В глобальном модуле
Код: Выделить всё
Public Sh As Worksheet
.

У тебя наверное очень веские основания для того, чтобы постоянно занимать память этой переменной ;-)

Rust писал(а):
Код: Выделить всё
Set Sh = ThisWorkbook.Worksheets("Лист3")
With Sh.Range("A9:H9,D11:E11,A22:H22,D24:E24").Font
     .Name = "Courier New"
     .Size = 12
End With

Ошибка: Нельзя установить св-во Name класса Font
...Microsoft Office 97?
..."Лист3" - неактивен (скрыт)
...В более поздних версиях Office код отрабатывает

Мне кажется, что дело не в скрытости, а в защищенности...
Попробуй это из XL97 и если сработает,...
Код: Выделить всё
Sub test1()
    Dim Sh As Worksheet
    Set Sh = ThisWorkbook.Worksheets("Лист3")
    Sh.Protect userinterfaceonly:=True
    With Sh.Range("A9:H9,D11:E11,A22:H22,D24:E24").Font
         .Name = "Courier New"
         .Size = 12
    End With
End Sub

...тогда используй для всех версий след. код:
в модуле ThisWorkbook
Код: Выделить всё
Private Sub Workbook_Open()
    Worksheets("Лист3").Protect Password:="abracadabra", userinterfaceonly:=True
End Sub

где "abracadabra" это твой реальный пароль защиты.
Привет,
KL

Rust
Новичок
Новичок
 
Сообщения: 42
Зарегистрирован: 01.02.2005 (Вт) 14:41

Сообщение Rust » 12.09.2006 (Вт) 8:58

Дело не в защите листа, т.к. лист не защищён.

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Сообщение KL » 12.09.2006 (Вт) 11:45

Ну тогда остается проверить не в ранге ли дело. С XL97 не работал лет 100 - многое забылось. Возможно та версия не позволяла одновременно изменять свойства несмежных рангов.
Попробуй:

Код: Выделить всё
With Sh.Range("A9:H9").Font
.Name = "Courier New"
.Size = 12
End With


если прокатит, будешь знать причину.
Привет,
KL

Rust
Новичок
Новичок
 
Сообщения: 42
Зарегистрирован: 01.02.2005 (Вт) 14:41

Сообщение Rust » 12.09.2006 (Вт) 15:36

Дело не в Range, и даже через Cells не работает.

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Сообщение KL » 12.09.2006 (Вт) 19:18

Ух блин - придется откапывать, неизвестно куда засунутый VPC с XL97 :-)

А пока еще несколько вопросов:
1) "Courier New" на машине установлен?
2) Пробовал запускать макрос при не скрытом и не активном "Лист3"? И...?
3) Пробовал запускать макрос при не скрытом и активном "Лист3"? И...?
Привет,
KL

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Сообщение KL » 13.09.2006 (Ср) 8:35

Проверено на XL97 (англ.), все смоделировано в соответствии с описанием, - сбоев не дает. Отсюда вывод: Либо в проблемном компе отсутствует какое обновление для XL, либо не хватает существенных деталей в описании проблемы ;-) Время выкладывать файл.
Привет,
KL

Rust
Новичок
Новичок
 
Сообщения: 42
Зарегистрирован: 01.02.2005 (Вт) 14:41

Сообщение Rust » 14.09.2006 (Чт) 8:06

Спасибо, lapink2000, за участие!
Буду разбираться дальше - дело принципа!
Создал новую книгу, поместил в неё вышеприведённый код,
всё сработало нормально - без ошибок.


Вернуться в VBA

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

Сейчас этот форум просматривают: Google-бот и гости: 57

    TopList