1

を使用してExcelスプレッドシートの特定の行にデータを追加する方法を尋ねたいと思いますUserform

新しい製品Aをシートに追加するとき、新しいデータを製品Aの最後の行の下に配置し、他の製品BとCについても同じようにします。

新しいデータを既存のテーブルに入力するときにデータを正確に並べ替える方法はありますか?

以下のコードは、入力する製品に関係なく、データを行ごとに追加し、テーブルを並べ替えずに分散させて表示します。

Private Sub CommandButton1_Click()
    Dim LastRow As Object

    Set LastRow = Sheet1.Range("a65536").End(xlUp)

    LastRow.Offset(1, 0).Value = TextBox1.Text
    LastRow.Offset(1, 1).Value = TextBox2.Text
    LastRow.Offset(1, 2).Value = TextBox3.Text

    MsgBox "One record written to Sheet1"

    If MsgBox("Do you want to continue entering data?", vbYesNo + vbCritical, "Caution") = vbYes Then
        TextBox1.Text = ""
        TextBox2.Text = ""
        TextBox3.Text = ""
    Else
        End
        TextBox1.SetFocus
        Unload Me
    End If
End Sub
4

1 に答える 1

0

データを最後の行に追加してから、データを並べ替えることができます。

1)最後の行を取得するには、このリンクを参照してください

2)データを並べ替えるには、この単純なコードを使用できます。以下のサンプルコードは、ヘッダーを持つ列Aを並べ替えます

With Sheets("Sheet1")
    .Columns("A:A").Sort Key1:=.Range("A1"), Order1:=xlAscending, Header:=xlYes, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal
End With

3)使用に関する1つのヒント:このスレッドEndのポイント6を参照してください。

4)したがって、両方のコードを組み合わせると、コードは次のようになります。

Option Explicit

Private Sub CommandButton1_Click()
    Dim LastRow As Long

    '~~> Change this to the releavnt sheet name
    With Sheets("Sheet1")
        LastRow = .Range("A" & .Rows.Count).End(xlUp).Row + 1

        .Range("A" & LastRow) = TextBox1.Text
        .Range("B" & LastRow) = TextBox2.Text
        .Range("C" & LastRow) = TextBox3.Text

        '~~> Sort the Data. I am assuming that Row 1 has Headers
        .Columns("A:C").Sort Key1:=.Range("A2"), Order1:=xlAscending, Header:=xlYes, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
    End With

    If MsgBox("One record written to Sheet1. Do you want to continue entering data?", vbYesNo + vbCritical, "Caution") = vbYes Then
        TextBox1.Text = ""
        TextBox2.Text = ""
        TextBox3.Text = ""
        TextBox1.SetFocus
    Else
      Unload Me
    End If
End Sub
于 2013-02-14T06:16:48.230 に答える