首页 > 解决方案 > Excel VBA用A16-A20之间的值填充最后一个空行

问题描述

我正在尝试编写一个代码,当我按下按钮时,系统会自动用值填充单元格。我想要的是当第 16 行填充值时,系统检测到它并填充下面的行(不覆盖第 16 行的值),例如,如果第 16 行被填充,则第 17 行被填充。

我已经尝试编写代码,但问题是它只覆盖第 16 行,当第 16 行已经填充了一个值时,它不会填充下一行

这是代码:

Dim lr As Long
Dim TxtRng As Range

lr = Sheets("5barang").Range("A16:A" & Rows.Count).End(xlUp).Row + 1
Sheets("5barang").Range("A" & lr).Value = "CHEETOS"
Sheets("5barang").Range("C" & lr).Value = "1"
Sheets("5barang").Range("D" & lr).Value = "60000"

End Sub

excel表格

标签: excelvba

解决方案


下面的代码应该适合你:

Dim lr As Long, count_entries As Integer
Dim TxtRng As String

TxtRng = "A16:A20"
count_entries = Application.WorksheetFunction.CountIf(range(TxtRng), "<>")

If count_entries = 1 Then
    lr = Sheets("5barang").range("A17").Row
Else
    lr = Sheets("5barang").range(TxtRng).End(xlDown).Offset(1, 0).Row
End If

Sheets("5barang").range("A" & lr).Value = "CHEETOS"
Sheets("5barang").range("C" & lr).Value = "1"
Sheets("5barang").range("D" & lr).Value = "60000"

我已将代码编辑为仅包含范围 A16:A20。但请注意,这在 A20 之后可能无法正常工作

根据您的评论,您已保护工作表。因此,您必须在运行代码之前取消保护工作表。或者您可以使用上述代码添加代码以取消保护工作表。


推荐阅读