2017-02-20 3 views
0

У меня есть проблема со следующим кодом. Я бы хотел, чтобы он прошел через диапазон (AK2 до конца данных), а затем в любое время, когда он находит пустую ячейку, он изменяет свое значение на Дебиторскую задолженность. Его не делают, я также не получаю уведомления об ошибках. Я предполагаю, что я делаю что-то неправильно с настройкой переменных:Пробег через диапазон и поиск пустых ячеек

Option Explicit 

Private Sub Leere() 

Dim rng As range 
Dim rcell As range 
Dim WS As Worksheet 

Set WS = Worksheets("Sheet2") 

Set rng = WS.range("AK2", range("AK2").End(xlDown)) 

For Each rcell In rng 
    If rcell.Value = " " Then 
      rcell.Value = "Accounts Receivable" 
    End If 
Next 
End Sub 

Любые идеи?

+2

Чтобы найти пустое значение .value = "", а не .value = "" (Выньте пространство) – Zerk

+0

Ничего себе это было только так! Спасибо – Urumita

+0

Как бы это сработало с упущением (rcell)? – Urumita

ответ

2

использование SpecialCells()

With ws 
    .Range("AK2", .Cells(.Rows.Count, "AK").End(xlUp)).SpecialCells(XlCellType.xlCellTypeBlanks).Value = "Accounts Receivable" 
End With 
+1

в качестве побочного примечания для других, 'SpecialCells' приводит к ошибке, если никакие ячейки не найдены, но необязательные' On Error Resume Next' могут использоваться для игнорирования этих случаев – Slai

+0

@Slai, прекрасное дополнение. Спасибо – user3598756

+0

@Urumita, вы прошли через это? – user3598756

0

Вы должны быть в состоянии заменить пустую (формулы) клетку с чем-то вроде этого:

Set ws = ThisWorkbook.Worksheets("Sheet2") 

Set rng = ws.Range("AK2", ws.Cells(ws.Rows.Count, "AK").End(xlUp)) 

rng.Replace "", "Accounts Receivable", xlWhole 

Еще не-VBA опции может быть условное форматирование для пустых ячеек , Значения соты будут по-прежнему пустыми, но отображаемое изменение текста будет динамическим.

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