2013-08-12 6 views
1

Я немного новичок в VBA и получаю ошибку времени выполнения, которую я не могу решить. У меня есть следующий кодОшибка времени выполнения VBA 1004

Dim vRange As Range 
Sheets("Vert E").Cells.FormatConditions.Delete 
With Sheets("Vert E") 
    Set vRange = .Range(.Cells(2, 2)) 
End With 

vRange.Select 

Последняя строка, vRange.Select бросает ошибку, которая говорит об ошибке времени выполнения «1004»: Application или объект определенных ошибок. Есть идеи?

ответ

1

Пара вещей:

1) Удалить .Range (_) вокруг .Cells (2,2): ненужно

2) Перемещение с дальнейшими вверх

3) Range.Select можно использовать только в том случае, если рабочий лист Range является активным листом. Итак, чтобы подтвердить это, добавьте подобное .Activate выше vRange.Select и переместите End With на значение ниже vRange.Select.

Как:

Dim vRange As Range 
With Sheets("Vert E") 
    .Cells.FormatConditions.Delete 
    Set vRange = .Cells(2, 2) 
    .Activate 
    vRange.Select 
End With 

Надежда, что помогает

1

Более короткие и аккуратнее способ сделать это

Dim vRange As Range 
Dim ws as Worksheet 
Set ws = Sheets("Vert E") 
ws.Cells.FormatConditions.Delete 
Set vRange = ws.Cells(2, 2) 
ws.Activate 
vRange.Select 

примечание: avoid using Select

Update:

Чтобы применить форматирование к ячейке без выбора его используют

ниже пример изменяет цвет ячейки

vRange.Interior.Color = RGB(200, 100, 50) 

В VBE просто введите vRange.Interior. и использовать в VBE Intellisense, которая должна помочь вам бит, указав доступные свойства класса Interior.

Лучший способ применить форматирование к ячейке - сделать это, пока recording a macro, а затем отредактировать код в VBE.

+0

Спасибо. Можете ли вы объяснить, зачем мне нужна команда ws.Activate? – user2539552

+0

И последующий вопрос, что я на самом деле пытаюсь сделать, - применить правило условного форматирования к диапазону ячеек. Экстенты диапазона вычисляются с помощью функции, которую я имею. Вы упомянули, чтобы избежать использования select. Есть ли другой способ применить условное форматирование? – user2539552

+0

@ user2539552 вам нужно «Активировать» лист, чтобы использовать метод «Выбрать» для объекта [Объект диапазона] (http://msdn.microsoft.com/en-us/library/office/ff838238.aspx). Я не могу дать лучшего объяснения, так как это работает ['Select'] (http://msdn.microsoft.com/en-us/library/office/ff197597.aspx), и даже MSDN не обеспечивает лучшего объяснение. Таким образом, вы легко должны быть уверены, что работаете с активным листом при использовании метода 'Select'. См. Обновленный ответ –

Смежные вопросы