2014-02-19 34 views
0

我想循環顯示錶格中的行,將當前行的單元格B-F添加到要複製到另一個表格的範圍。如果列G中的值爲「活動」,並且列C中的值具有值(非空/無/空/!#VALUE ...),則行(BF)中的單元格只應添加到範圍中。1004:嘗試檢查單元格內容時應用程序定義的錯誤

我已經試過周圍幾種方法,但我不斷收到1004:應用程序/對象定義的錯誤關閉第一個if語句

的MSGBOX顯示我的範圍內是有效的,我試過排位賽到最小細節,也使用Cells()而不是.range無效。

MsgBox (ActiveWorkbook.Worksheets("Staging").range("G" & Cells(rows.Count, 5).End(xlUp).Row).Value) 

For i = Cells(rows.Count, 5).End(xlUp).Row To i = 1 Step -1 
    If ActiveWorkbook.Worksheets("Staging").Cells("G" & i).Value = "Active" Then 
     If Not IsError(ActiveWorkbook.Worksheets("Staging").range("C" & i)) Then 
      Set selectRange = range("B" & i & ":F" & i) 
      Set copyRange = Union2(copyRange, selectRange) 
     Else 
     'Do Nothing 
     End If 
    Else 
     'Do Nothing 
    End If 
Next 

我在這裏只是錯過了一些簡單的東西嗎?我幾個小時以來一直在嘲笑我。

...和你鷹的眼睛在那裏,Union2是不是一個錯字,只是一個用戶自定義函數,以避免不能夠加入設置爲「無」

+0

我認爲你不能使用字符串與細胞...細胞(「A1」)返回的錯誤,和你的語法確實,非常奇怪...... – CRondao

+0

沒錯。改用Range。 – Kapol

回答

0

嘗試以下方法:

  1. 更改第二行

    For i = Cells(rows.Count, 5).End(xlUp).Row To 1 Step -1

  2. 變化的第三行至

    If ActiveWorkbook.Worksheets("Staging").Range("G" & i).Value = "Active" Then

0

要開始變化範圍:

If ActiveWorkbook.Worksheets("Staging").Cells("G" & i).Value = "Active" Then 

If ActiveWorkbook.Worksheets("Staging").Range("G" & i).Value = "Active" Then 

或者

If ActiveWorkbook.Worksheets("Staging").Cells(i , 7).Value = "Active" Then 

您還需要完全限定所有爲很多的範圍都指向活動工作表,而不是「上演」,除非它是活動表,但只是要確定你應該使用下面的代碼範圍:

With ActiveWorkbook.Worksheets("Staging") 
MsgBox (.Range("G" & .Cells(.Rows.Count, 5).End(xlUp).Row).Value) 

For i = .Cells(.Rows.Count, 5).End(xlUp).Row To 1 Step -1 
    If .Range("G" & i).Value = "Active" Then 
     If Not IsError(.Range("C" & i)) Then 
      Set SelectRange = .Range("B" & i & ":F" & i) 
      Set copyRange = Union(copyRange, SelectRange) 
     Else 
     'Do Nothing 
     End If 
    Else 
     'Do Nothing 
    End If 
Next 
End With 

此外,您在此範圍內使用copyRange而未聲明它,我假設您將其分配給代碼中的一個範圍,但如果不是,請確保這樣做。

0

這是錯誤的:

ActiveWorkbook.Worksheets("Staging").Cells("G" & i).Value 

您可以使用這些:

ActiveWorkbook.Worksheets("Staging").Cells(i, 6) 

ActiveWorkbook.Worksheets("Staging").range(cells(i, 6), cells(i, 6)).value 

ActiveWorkbook.Worksheets("Staging").range("G" + strings.trim(str(i))).value 
相關問題