2013-02-18 84 views
0

我有一個工作表叫做mainData,它包含十種產品的所有數據。將新數據複製到其他工作表中

當我在mainData中輸入新數據時,我想自動將新數據複製到另一個產品工作表的最後一行。當我在mainData中輸入新數據時,如何識別屬於哪個產品工作表的新數據,從而將新數據複製到產品工作表中?

我被困在複製到另一個工作表,因爲我需要根據產品的類型複製到另外十個工作表。

這就是我所做的mainData

With Sheets("mainData") 
    LastRow = .Range("B" & .Rows.Count).End(xlUp).Row + 1 

    .Range("B" & LastRow) = ComboBox1.Text 
    .Range("C" & LastRow) = TextBox1.Text 
    .Range("D" & LastRow) = TextBox2.Text 
    .Range("E" & LastRow) = TextBox3.Text 
    .Range("F" & LastRow) = TextBox4.Text 
    .Range("G" & LastRow) = TextBox5.Text 
    .Range("H" & LastRow) = ComboBox2.Text 
    .Range("I" & LastRow) = TextBox6.Text 
    .Range("J" & LastRow) = TextBox7.Text 
    .Range("K" & LastRow) = TextBox8.Text 


    Range("B32:B320").Select 
    ActiveWorkbook.Worksheets("mainData").Sort.SortFields.Clear 
    ActiveWorkbook.Worksheets("mainData").Sort.SortFields.Add Key:=Range("B32:B305") _ 
    , SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _ 
    "prod1, prod2, prod3, prod4, prod5, prod6, prod7, prod8, prod9, prod10" _ 
    , DataOption:=xlSortNormal 
With ActiveWorkbook.Worksheets("mainData").Sort 
    .SetRange Range("B32:W305") 
    .Header = xlYes 
    .MatchCase = False 
    .Orientation = xlTopToBottom 
    .SortMethod = xlPinYin 
    .Apply 
End With 

這裏就是我mean.when我進入新PROD1數據到mainData工作,我想將自動複製到產品1名的工作表的最後一行。我可能會輸入許多類型的產品,例如prod2,prod4到mainData中,以便如何將這些數據複製到其特定的產品工作表中?

+0

'我怎麼能識別新的數據屬於哪個產品的工作,'呃,你必須告訴我們(至少在邏輯)如何區分。哪個字段是「產品類型」,它與特定的工作表有什麼關係,即工作表名稱是產品類型的一個指標還是其他東西?也許你也可以給我們一個例子? – 2013-02-18 06:15:54

+0

@SiddharthRout yes工作表名稱是產品類型的指示器。如果產品類型是prod2意味着我需要將其複製到工作表產品2中。 – 2013-02-18 07:48:37

+0

所以Col'B'將具有產品代碼? – 2013-02-18 07:52:45

回答

0

這是你正在嘗試? (UNTESTED

另外我還沒有做任何錯誤處理。我相信你會處理的:)護理

Dim prd As String 
Dim ws As Worksheet 
Dim LastRow As Long 

'~~> Extract the number from the combobox 
prd = Trim(Replace(ComboBox1.Text, "prod", "")) 

'~~> Decide which sheet the data needs to be written to 
'~~> Please ensure that sheets have names like "Product 1", "Product 2" etc 
Set ws = ThisWorkbook.Sheets("Product " & prd) 

'~~> Update it to the relevant sheet 
With ws 
    LastRow = .Range("B" & .Rows.Count).End(xlUp).Row + 1 

    .Range("B" & LastRow) = ComboBox1.Value 
    .Range("C" & LastRow) = TextBox1.Text 
    .Range("D" & LastRow) = TextBox2.Text 
    .Range("E" & LastRow) = TextBox3.Text 
    .Range("F" & LastRow) = TextBox4.Text 
    .Range("G" & LastRow) = TextBox5.Text 
    .Range("H" & LastRow) = ComboBox2.Value 
    .Range("I" & LastRow) = TextBox6.Text 
    .Range("J" & LastRow) = TextBox7.Text 
    .Range("K" & LastRow) = TextBox8.Text 

    '~~> Sort the data 
    With .Range("B2:W" & LastRow) 
     .Sort Key1:=ws.Range("B2"), Order1:=xlAscending, Header:=xlYes, _ 
     OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ 
     DataOption1:=xlSortNormal 
    End With 
End With 

'~~> Update it in mainData 
With Sheets("mainData") 
    LastRow = .Range("B" & .Rows.Count).End(xlUp).Row + 1 

    .Range("B" & LastRow) = ComboBox1.Value 
    .Range("C" & LastRow) = TextBox1.Text 
    .Range("D" & LastRow) = TextBox2.Text 
    .Range("E" & LastRow) = TextBox3.Text 
    .Range("F" & LastRow) = TextBox4.Text 
    .Range("G" & LastRow) = TextBox5.Text 
    .Range("H" & LastRow) = ComboBox2.Value 
    .Range("I" & LastRow) = TextBox6.Text 
    .Range("J" & LastRow) = TextBox7.Text 
    .Range("K" & LastRow) = TextBox8.Text 

    '~~> Sort the data 
    With .Range("B2:W" & LastRow) 
     .Sort Key1:=Sheets("mainData").Range("B2"), Order1:=xlAscending, Header:=xlYes, _ 
     OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ 
     DataOption1:=xlSortNormal 
    End With 
End With 
+0

thanks.yes它適用於產品sheets.actually我想要做的是複製到另一個工作簿,而不是在同一workbooks.anyway工作表感謝幫助。我真的是新vba.still模糊關於如何鏈接工作簿 – 2013-02-18 09:12:11

+0

我剛剛通過您的問題。你在哪裏提到你必須將它複製到其他工作簿中的工作表中? – 2013-02-18 09:30:44

+0

我真的很抱歉。只是意識到我沒有提到它。我想將它複製到其他工作簿中的工作表中。我的錯誤 – 2013-02-18 13:50:17

相關問題