0

という名前の 1 つのワークシートがmainDataあり、10 個の製品のすべてのデータが含まれています。

に新しいデータを入力するときにmainData、新しいデータを別の製品ワークシートの最後の行に自動的にコピーしたいと考えています。に新しいデータを入力するときmainData、新しいデータがどの製品のワークシートに属しているかをどのように認識し、新しいデータを製品のワークシートにコピーできますか?

製品のタイプに応じて別の 10 個のワークシートにコピーする必要があるため、別のワークシートにコピーすることに行き詰まっています。

これが私がしたこと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

これが私が意味することです。新しい prod1 データを mainData ワークシートに入力すると、それを製品 1 ワークシートの最後の行に自動的にコピーしたいと考えています。prod2、prod4などの多くのタイプの製品をmainDataに入力する場合がありますが、このデータを特定の製品ワークシートにコピーするにはどうすればよいですか?

4

1 に答える 1

0

これはあなたがしようとしていることですか?(未テスト)

また、エラー処理は行っていません。私はあなたがそれを大事にすることを確信しています:)

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
于 2013-02-18T08:14:29.197 に答える