2014-04-16 5 views
0

Привет, у меня есть следующий код, но он промахнул диапазон ошибок объекта_workheet. Я не уверен, что я делаю неправильно (я нашел код vba с помощью макроса record и просто скопировал и вставил, за исключением того, что я заменил все selection на ws.range(emptyrow), чтобы указать диапазон до последней ячейки со значениями. Кроме того, если бы я был изменить подлодку к sub highlightemptycell_change() и иметь if заявление, как например: «если все ячейки изменяются, то сделайте следующее» как бы я написать, что на языке VBAвыделить ячейку, если isblank vba

sub highlightemptycell() 
    Dim ws As Worksheet 
    Dim r As Range 
    Dim emptyrow As Long 
    Dim err As Range 

    Set ws = Worksheets("Master") 
    emptyrow = ws.Cells(Rows.Count, 1).End(xlUp).Row + 1 '<<< safer.... 

    ws.Range(emptyrow).FormatConditions(1).StopIfTrue = False 
    ws.Range(emptyrow).FormatConditions.Add Type:=xlExpression, Formula1:= _ 
     "=ISBLANK(ws.range(emptyrow)" 
    ws.Range(emptyrow).FormatConditions(ws.Range(emptyrow).FormatConditions.Count).SetFirstPriority 
    With ws.Range(emptyrow).FormatConditions(1).Interior 
     .PatternColorIndex = xlAutomatic 
     .Color = 5287936 
     .TintAndShade = 0 
    End With 
+0

Вы не можете просто передать номер, диапазон() ... –

+1

изменения 'ws.Range (пустая строка)' to 'ws.Range (" A "и пустое)' или 'ws.Cells (пустая строка," A ")' –

+1

В дополнение к тому, что другие написали, "= ISBLANK (ws.range (пустота) "вам не хватает скобки в формуле. –

ответ

0

Я не? В частности, я не уверен в значимости этой линии,

ws.Range(emptyrow).FormatConditions(1).StopIfTrue = False 

, особенно когда в ячейке нет условных форматов во время ее выполнения.

Но следующий макрос, кажется, делать то, что ваш будет делать, если это были очищены немного и написан с правильным синтаксисом

Option Explicit 
Sub highlightemptycell() 
    Dim ws As Worksheet 
    Dim r As Range 
    Dim emptyrow As Long 
    Dim err As Range 

    Dim rEmptyRow As Range '<-- range object added to use below 

    Set ws = Worksheets("Master") 
    Set rEmptyRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Offset(rowoffset:=1) '<<< safer.... 

With rEmptyRow.FormatConditions 
    If .Count > 0 Then .Item(1).StopIfTrue = False 
    .Add Type:=xlExpression, Formula1:= _ 
     "=ISBLANK(" & rEmptyRow.Address & ")" 
     .Item(.Count).SetFirstPriority 
    With .Item(1).Interior 
     .PatternColorIndex = xlAutomatic 
     .Color = 5287936 
     .TintAndShade = 0 
    End With 
End With 
End Sub 
Смежные вопросы