2014-10-08 4 views
0

Итак, у меня есть 10 столбцов с надписью «A» - «J».Excel-VBA: пропустить подпрограмму, если ячейка пуста

Каждая строка будет иметь некоторую комбинацию этих столбцов, заполненных строковыми значениями.

Мне нужно запустить некоторые условные утверждения, и мне интересно, есть ли более эффективный метод их выполнения, не пропуская их всех.

Что я сейчас:

If isempty("A1) then 
Else 
    if isempty("B1") then 
    else 
     Sheet2!"B1" = "A1 and B1" 
    end if 
    if isempty("C1") then 
    else 
     Sheet2!"A1" = "A1 and C1" 
    end if 
    [...etc] 
end if 

If isempty("B1) then 
Else 
    if isempty("C1") then 
    else 
     Sheet2!"B1" = "B1 and C1" 
    end if 
    if isempty("D1") then 
    else 
     Sheet2!"C1" = "C1 and D1" 
    end if 
    [...etc] 
end if 

Это долго, громоздки и не очень красиво. Более того, это занимает много времени, потому что у нас есть несколько сотен записей (строк) для прохождения. Есть ли более быстрый способ взглянуть на X Row, скажем, A, B, C, E, & У меня есть вещи и делайте что-то на основе этого.

If A,C,&J are filled Do this.. 
If B is empty do this... 
If C Or D is full, do this other thing. 
+0

Вы ищете логические операторы (операторы «и» и «или»). например if isempty ("c1") и isempty (b1), то ... см .: http://www.excel-easy.com/vba/examples/logical-operators.html – Kevin

+0

Я могу просто выбить себя из-за того, насколько сложно это ладонь. Это так очевидно, просто глядя мне в лицо. >. < Isempty (A) = A; Isempty (B) = B; IF A и B DO ... – Jongscx

ответ

1

Я не совсем уверен в заказе, в котором следует проверять ячейки, но, возможно, это поможет вам начать работу.

Dim rw As Long, lr As Long 
With Cells(1, 1).CurrentRegion 
    lr = .Rows.Count 
    For rw = 1 To lr 
     If Application.CountA(Range("A" & rw & ",C" & rw & ",J" & rw)) = 3 Then 
      'If A,C,&J are filled Do this.. 
     ElseIf IsEmpty(Range("B" & rw)) Then 
      'If B is empty do this... 
     ElseIf CBool(Application.CountA(Range("C" & rw & ",D" & rw))) Then 
      'If C Or D is full, do this other thing. 
     End If 
    Next rw 
End With 
Смежные вопросы