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

虽然 John 似乎一针见血,但我认为您可以像这样进一步简化您的代码。请参阅我在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 回答