2017-10-20 95 views
0

我正在創建用於查看Excel表單的用戶表單。我需要搜索特定列以查看用戶是否已經查看了該行。如果他們有,單元格將填充「已審覈」,如果尚未審覈,則會有「未審覈」。在VBA中的列中查找特定單元格條目

每個部門都有自己的Column日誌記錄,該Row是否已經過審查。即Dept1可能已經審查了該行,而Dept2尚未。

我已經試過類似

With Sheets("ECR") 
     UnReviewedRow = .Range(DepartmentReviewColumn:DepartmentReviewColumn).Find(what:="Not Reviewed", after:=.Cells(DepartmentReviewColumn, 3)).Row 
    End With 

但我發現了一個錯誤,不太肯定它是從未來雖然。硬編碼「3」是因爲我知道所有條目都從第三行開始,上面的所有內容都是標題。

我發現了幾個不同的類似問題,但他們都假設每次搜索的列都是相同的。我的問題是,我不想爲每個部門編寫代碼,我想比這更優雅一些。

+0

單元格是行,列不是列,行 – QHarr

+1

'.Range(DepartmentReviewColumn:DepartmentReviewColumn)'看起來像一個問題。 'DepartmentReviewColumn'的價值是什麼? –

+1

也假設DepartmentReviewColumn字符串,並需要正確連接? DepartmentReviewColumn&「:」&DepartmentReviewColumn – QHarr

回答

1

事情是這樣的:

With Sheets("ECR") 
    UnReviewedRow = .Range(DepartmentReviewColumn & ":" & DepartmentReviewColumn).Find(What:="Not Reviewed", After:=.Cells(3, DepartmentReviewColumn)).Row 
End With 

作出修改:

  • 範圍()現在需要一個正確的內置字符串參數;
  • Cells()現在有一個行號作爲其第一個參數,並且一個列表示爲一個字符串作爲其第二個參數。

請注意,如果未找到搜索字符串,則此代碼將失敗,並返回Object variable or With block variable not set。您可以通過將UnReviewedRow初始化爲例如0(零),並將On Error Resume Next放在查找呼叫之上,並將On Error Resume <either 0 or your original error handler's label>放在查找呼叫之下。然後,檢查UnReviewedRow = 0是否適當。

總是把Option Explicit放在模塊和類的頂部,並編譯你的代碼(Debug/Compile VBAProject)。發佈時,請包含遇到的所有錯誤的文本。

相關問題