2013-02-14 60 views
0

我是一名VBA新手,通過修改現有的宏和反覆試驗學到了很多東西,所以我很抱歉如果我所要求的東西似乎是布什聯盟。拉重複行/標準不起作用?

我組合/修改了一些宏,以便將來自外部工作簿的行根據條件拖到我的工作簿上。問題是我隨機被給予重複的行,我不知道爲什麼。任何人都可以看到問題是什麼?我遇到的第二個問題是,除了列AF標準外,我還想過濾,以便列E中的日期落在不同工作表上兩個單元格中指定的日期之間。

我一直在嘗試使用該行:

If DateValue.Sheets("Control")("B1") < ("E1:E" & B) < DateValue.Sheets("Control")("C1") Then 

但我要麼把它錯誤地或只是完全關閉的編碼...有人可以幫助我嗎?

Sub FetchComplaints() 
Dim path   As String 
Dim FileName  As String 
Dim LastCell  As Range 
Dim Wkb    As Workbook 
Dim WS    As Worksheet 
Dim ThisWB   As String 

Sheets("Sheet1").Range("A2:S1000").Clear 
Sheets("ComplaintsFetched").Activate 
Range("A1:AP5000").Clear 
ThisWB = ThisWorkbook.Name 
Application.EnableEvents = False 
Application.ScreenUpdating = False 
path = GetFileName 

     Set Wkb = Workbooks.Open(FileName:=path) 
     For Each WS In Wkb.Worksheets 
      WS.Select 
      B = Application.CountA(Range("A:A")) 
      If B = 0 Then 
          Else 
       For Each cell In Range("AF1:A" & B) 
       If cell.Value = True Or cell.Value = "Written" Then 
       Anum = Application.CountA(Workbooks(ThisWB).Sheets("ComplaintsFetched").Range("A:A")) + 1 
       cell.EntireRow.Copy Workbooks(ThisWB).Sheets("ComplaintsFetched").Range("A" & Anum) 
       End If 
       Next cell 
      End If 
     Next WS 
     Wkb.Close False 
Application.EnableEvents = True 
Application.ScreenUpdating = True 

Set Wkb = Nothing 
Set LastCell = Nothing 

Set LastCell = Nothing 

用GetFileName是檢索路徑的功能。

感謝您的任何幫助,並抱歉,如果我失去了一些非常簡單的東西。

回答

1

嘗試使用此語法:

If Sheets("Control").Range("B1").Value < Sheets("Control").Range("C" & B).Value ... 

多個條件應該使用And相結合。

+0

對不起,我從來沒有嘗試過任何深入的vba。我不確定我要輸入的行數: '如果表格(「控制」)。範圍(「B1」)。值<表格(「控制」)。範圍(「E」&B)。值和表格「控制」)範圍(「C1」)。值>表格(「控制」)。範圍(「E」和B)。值' – user1872838 2013-02-14 20:26:09

+0

@ user1872838如果B1和C1值都小於E,則此代碼將返回TRUE [B號碼]值。進一步取決於你的實際需求。 – 2013-02-14 20:28:47

+0

編輯修復,但我不知道如何編寫它,以便在正確的日期條件下掃描AF [B]以獲得真實和「寫入」以及E [B]。 – user1872838 2013-02-14 20:38:41