首页 > 解决方案 > 将数据添加到特定范围的列

问题描述

我有一个用户表单,我想添加一些单元格数据,每次我用新数据完成文本框时。我尝试了 for 但它不会通过第一行。

Dim i As Integer

For i = 19 To 33

Cells(i, 4) = TextBox1.Value
Cells(i, 5) = TextBox2.Value
Cells(i, 6) = TextBox3.Value
Cells(i, 7) = TextBox4.Value
Cells(i, 8) = TextBox5.Value

TextBox1.Value = ""
TextBox2.Value = ""
TextBox3.Value = ""
TextBox4.Value = ""
TextBox5.Value = ""

Next i

End Sub

这是我正在制作的表格的一部分:

在此处输入图像描述

如果我使用 Variatus 提供的编码,它会将数据插入到我需要的范围之外的单元格中。我以前尝试过,但它也发生在我身上。这就是为什么我尝试使用 for 和循环或 do/while 来查看围绕这些单元格范围的方式。

在此处输入图像描述

(我展示的示例是插入 D 列/第 19 行,第一个 TextBox1 值)

标签: excelvba

解决方案


我不是 100% 我理解您想要实现的目标,但如果您只想在“D”列中添加下一行数据,您可以使用下面的内容。

我包含的函数LastRow将确定在指定列的指定工作表中包含数据的最后一行 - 在调用子例程中向该数字添加 1 只会将数据连续添加到下一个可用行。希望这可以帮助。

Private Sub CommandButton1_Click()

Dim i As Integer

i = LastRow("Sheet1", "D") + 1

Cells(i, 4) = TextBox1.Value
Cells(i, 5) = TextBox2.Value
Cells(i, 6) = TextBox3.Value
Cells(i, 7) = TextBox4.Value
Cells(i, 8) = TextBox5.Value

TextBox1.Value = ""
TextBox2.Value = ""
TextBox3.Value = ""
TextBox4.Value = ""
TextBox5.Value = ""

End Sub


Function LastRow(wsheet As String, col As String) As Long
Dim ws As Worksheet
Set ws = ActiveWorkbook.Sheets(wsheet)

LastRow = ws.Cells(Rows.Count, col).End(xlUp).Row

End Function

推荐阅读