Excel VBA - 使用空单元格值发布

Excel VBA - 使用空单元格值发布

我有一个宏,它接收输入到文本框中的文本并将其发布到下一个空行。这模拟了一个正在运行的列表。问题是,如果文本框留空,下次用户单击发布按钮时,文本将输入到最后一个空单元格中,该单元格与其他列的行号不一致。

我如何更改代码,以便如果文本框留空,我们可以插入文本以使行号与输入的其他文本保持一致。

Private Sub Post_Click()

bFree = Range("B8:B" & Rows.Count).Cells.SpecialCells(xlCellTypeBlanks).Row
Range("B" & bFree).Value2 = cell.value
dFree = Range("D8:D" & Rows.Count).Cells.SpecialCells(xlCellTypeBlanks).Row
Range("D" & dFree).Value2 = Amount.value
eFree = Range("E8:E" & Rows.Count).Cells.SpecialCells(xlCellTypeBlanks).Row
Range("E" & eFree).Value2 = Vendor.value

End Sub

在下面的图片中,您可以看到,如果在 1 月之后的帖子中没有输入日期,则下一个日期会落后一行。当前代码仅在输入文本时才会获取下一个空行,因此我认为我需要在文本框为空时插入文本以保留行号。

在此处输入图片描述

答案1

您正在寻找每列的下一个空白。不要这样做。只使用一列来决定下一行是什么。我建议使用 ID 列,就像您调用的那个列,No.因为这是数据库表的工作方式。事实上,如果您使用的是 MS Access 而不是 Excel,您所做的事情就会自动发生。

由于您的No.列目前为空白,我们被迫使用我们知道不会为空的列。我将D在我的示例中使用它。

Private Sub Post_Click()
    Dim lastRow As Long
    With ActiveSheet
        lastRow = .Range("D" & .Rows.CountLarge).End(xlUp).Row
        .Range("B" & lastRow).Value2 = cell.value
        .Range("D" & lastRow).Value2 = Amount.value
        .Range("E" & lastRow).Value2 = Vendor.value
    End With
End Sub

相关内容