2015-07-09 2 views
1

Я triyng, чтобы мой макрос мог очищать ячейки, если их значение отрицательное. В частности, макрос должен очистить все отрицательные ячейки в столбцах H до K до последней строки в столбце A.Очистить содержимое ячейки в диапазоне, если значение отрицательное

Я пробовал этот код, который я нашел в сети, но я действительно не знаю, как его расширить до столбцы от I до K (работает только для столбца H).

Dim LC1 As Long, ColNum1 As Long 
Application.ScreenUpdating = False 
For ColNum1 = 8 To Cells(1, Columns.Count).End(xlToLeft).Column 
    For LC1 = 2 To Cells(Rows.Count, ColNum1).End(xlUp).Row 
    If Val(CStr(Cells(LC1, ColNum1))) < 0 Then Cells(LC1, ColNum1) = 0 
    Next LC1 
Next ColNum1 
Application.ScreenUpdating = True 

Я попытался повторить этот меняющийся каждый раз, когда значение ColNum # код 9, 10 и 11, но это не работает. Зачем?

+0

Я бы первым предположить, что вы создаете переменную для столбца и строки вы хотите идти, так что может быть отдельной строкой и сделать для петли немного более ясно , Когда вы говорите, что это не работает, возникает ли ошибка? Ничего не происходит со значениями? Он заменяет все на «1000000»? и т.п. – BruceWayne

ответ

0

Это должно работать:

' Get last row of col A... 
Dim lastRow as long, r As Long, c As Long 
Range("A1").select 
lastRow = Cells.Find("*",SearchOrder:=xlByRows,SearchDirection:=xlPrevious).Row 

For r = 2 To lastRow 
For c = 8 To 11 

    If IsNumeric(Cells(r, c)) Then 
     If Cells(r, c) < 0 Then 
      Cells(r, c).ClearContents 
     End If 
    End If  

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