0

ユーザーフォームに属するボタンに配置するためにこのコードを作成しました...

    Private Sub CommandButton1_Click()

Dim lngWriteRow As Long

Dim ws As Worksheet
Set ws = Worksheets("Sheet1")

NextRow = Cells(Rows.Count, 2).End(xlUp).Row + 1

lngWriteRow = ws.Cells(Rows.Count, 2).End(xlUp) _
.Offset(12, 0).NextRow

    ws.Range("B" & lngWriteRow) = TextBox1.Value
    ws.Range("C" & lngWriteRow) = TextBox2.Value
    ws.Range("D" & lngWriteRow) = TextBox3.Value
    ws.Range("E" & lngWriteRow) = ComboBox1.Value
    ws.Range("F" & lngWriteRow) = TextBox4.Value
    ws.Range("G" & lngWriteRow) = ComboBox2.Value

End Sub

自動的に次の行に移動せず、行番号14を上書きします。14にデータが含まれている場合は15を更新し、15が含まれている場合は、16を更新します。

何か案は?

4

2 に答える 2

1

データは列B以降にのみ配置されるため、コードが現在実行している列Aではなく、それらの列を確認する必要があります。これで修正されるはずです:

lngWriteRow = ws.Cells(Rows.Count, 2).End(xlUp).Offset(12, 0).Row + 1
于 2012-11-20T14:09:43.323 に答える
0

ジョンは頭に釘を打ったようですが、このようにコードをさらに単純化できると思います。lngWriteRow割り当てられている場所の下の私のコメントを参照してください:

Private Sub CommandButton1_Click()

Dim lngWriteRow As Long

Dim ws As Worksheet
Set ws = Worksheets("Sheet1")

With ws

    '-> if you are going to offset 12 rows then add 1 more, just offset to 13 and be done!
    lngWriteRow = .Cells(.Rows.Count, 2).End(xlUp).Offset(13, 0).Row

    .Range("B" & lngWriteRow) = TextBox1.Value
    .Range("C" & lngWriteRow) = TextBox2.Value
    .Range("D" & lngWriteRow) = TextBox3.Value
    .Range("E" & lngWriteRow) = ComboBox1.Value
    .Range("F" & lngWriteRow) = TextBox4.Value
    .Range("G" & lngWriteRow) = ComboBox2.Value

End With

End Sub
于 2012-11-20T14:32:40.747 に答える