2015-07-10 67 views
1

我想創建一個聲明,如果讓我送的號碼和值到另一個工作簿中的第3單元上的值深化(天氣的細胞是真或False「)。如果語句爲True,我想運行的代碼如下:我測試了這段代碼,它的工作原理是,如果行中的第三個單元格爲True,我就希望它發生。從攜帶的數量和價值排在值爲true進入下面的功能的信息更新Excel工作表從另一張紙,取決於值

 Dim itemName As String 
     Dim itemPrice As String 
     Dim myData As Workbook 

     Worksheets("Sheet1").Select 
     InvoiceNumber = Range("A2") 
     qty = Range("B2") 
     updated = Range("C2") 


     Set myData = Workbooks.Open("HD:Users:user:Desktop:Inventory.xlsm") 
     Worksheets("Orders").Select 
     Worksheets("Orders").Range("a15").Select 
     RowCount = Worksheets("Orders").Range("a15").CurrentRegion.Rows.Count 
     With Worksheets("Orders").Range("a15") 
     .Offset(RowCount, 0) = InvoiceNumber 
     .Offset(RowCount, 1) = qty 
     .Offset(RowCount, 2) = updated 

     End With 

回答

1

您的代碼看起來像它可以使用另一個循環經過一系列行,但我想它可能是那些只需要一個操作的情況。

Dim itemName As String 
Dim itemPrice As String 
Dim myData As Workbook 
Dim sInvoiceNumber As String, dQty As Double, bUpdated As Boolean, iRowCount As Long 

With Worksheets("Sheet1") 
    sInvoiceNumber = .Range("A2").Value 
    dQty = .Range("B2").Value 
    bUpdated = CBool(.Range("C2").Value) 

    If bUpdated Then 
     Set myData = Workbooks.Open("HD:Users:user:Desktop:Inventory.xlsm") 
     With myData.Worksheets("Orders").Range("a15") 
      iRowCount = .CurrentRegion.Rows.Count 
      .Offset(iRowCount, 0) = sInvoiceNumber 
      .Offset(iRowCount, 1) = dQty 
      .Offset(iRowCount, 2) = bUpdated 
     End With 
     myData.Close True '<-save and close the workbook 
     .Range("C2") = Not bUpdated '<- reset the updated field 
    End If 

End With 

通過過濾數據可以使用批量傳輸操作,而不是遍歷行。

Dim itemName As String 
Dim itemPrice As String 
Dim myData As Workbook 
Dim iRowCount As Long 

With Worksheets("Sheet1") 
    If .AutoFilterMode Then AutoFilterMode = False 
    With .Cells(1, 1).CurrentRegion 
     .AutoFilter Field:=3, Criteria1:="TRUE" 
     With .Offset(1, 0).Resize(.Rows.Count - 1, 3) 
      If CBool(Application.Subtotal(103, .Columns(1))) Then 
       Set myData = Workbooks.Open("HD:Users:user:Desktop:Inventory.xlsm") 
       .Cells.Copy Destination:=myData.Sheets("Orders").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) 
       myData.Close True '<-save and close the workbook 
       .Columns(3).Cells = False 
      End If 
     End With 
     .AutoFilter Field:=3 
    End With 
    If .AutoFilterMode Then AutoFilterMode = False 
End With 

這在C列

+0

的偉大工程的TRUE工作表單元格值過濾器!現在...我如何讓它通過「bUpdated」列運行,並檢查True值,然後執行該功能? – tbowden

+0

@tbowden - 您不打算繼續打開和關閉工作簿,以便批量操作更合適。第1行是否有列標題標籤,並且數據從第2行開始? – Jeeped

+0

是的......第1欄:發票號碼,第2欄:數量,第3欄:已更新。數據從第2列開始。 – tbowden

0

您應該if語句我猜你可以從這裏找到答案讀了。:

http://www.techonthenet.com/excel/formulas/if_then.php

基本上,只要使用更新您的if語句測試條件。

Dim itemName As String 
Dim itemPrice As String 
Dim myData As Workbook 

Worksheets("Sheet1").Select 
InvoiceNumber = Range("A2") 
qty = Range("B2") 
updated = Range("C2") 

If updated Then 
    Set myData = Workbooks.Open("HD:Users:user:Desktop:Inventory.xlsm") 
    Worksheets("Orders").Select 
    Worksheets("Orders").Range("a15").Select 
    RowCount = Worksheets("Orders").Range("a15").CurrentRegion.Rows.Count 
    With Worksheets("Orders").Range("a15") 
    .Offset(RowCount, 0) = InvoiceNumber 
    .Offset(RowCount, 1) = qty 
    .Offset(RowCount, 2) = updated 

    End With 
End If 
相關問題