2014-10-08 135 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行,說A,B,C,E,& J有東西,並根據它做東西。

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

您正在查找邏輯運算符(「和」和「或」運算符)。例如如果isempty(「c1」)和isempty(b1)然後...看到:http://www.excel-easy.com/vba/examples/logical-operators.html – Kevin 2014-10-08 18:05:21

+0

我可能只是用自己的努力這是一張臉掌。這很明顯,只是把我凝視在臉上。 >。< Isempty(A)= A; Isempty(B)= B; IF A和B DO ... – Jongscx 2014-10-08 18:27:14

回答

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 
相關問題