情况如下:在我的userform中,我有文本框,用户将输入数据,当他们点击保存按钮时,数据将保存在excel sheet1中。
在sheet1中,我只会在保存数据时使用3行(“a3:a5”),这意味着当用户第一次点击保存按钮时数据将保存在“a3”行中,当再次点击保存按钮时第二次将数据保存在“a4”行中,第三次将数据保存在“a5”行中。
我想要做的是当用户再次点击保存按钮(a3:a5有值)时,数据将再次开始保存在a3行中,然后重复保存到a4和a5。
我认为循环是最好的方法,但我不知道该怎么做。请帮帮我。
这是我的示例代码,我唯一的问题是行中的循环过程(“a3:a5”),a2行包含标题
Private Sub btnadd_Click()
Dim stecode As String
Dim stename As String
Dim adscode As String
Dim adsname As String
Dim added As String
stecode = TextBox1.Text
stename = TextBox2.Text
adscode = TextBox3.Text
adsname = TextBox4.Text
added = TextBox5.Text
'''''''''''''''''''''''''''''''''''''''''''
Worksheets("Sheet1").Select
Worksheets("Sheet1").Range("A2").Select
If Worksheets("Sheet1").Range("A2").Offset(1, 0) <> "" Then
ActiveCell.End(xlDown).Select
End If
ActiveCell.Offset(1, 0).Select
ActiveCell.Value = stecode
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = stename
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = adscode
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = adsname
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = added
end sub
答案 0 :(得分:0)
您可以创建一个私有变量来存储UserForm中的行索引,然后在将值写入工作表时引用该索引。初始化userform时,可以初始化变量。将值写入工作表后,您可以增加行索引并在写入第5行后将其重置为3.请参见下文。
Option Explicit
Private lRow As Long
Private Sub btnAdd_Click()
Dim stecode As String
Dim stename As String
Dim adscode As String
Dim adsname As String
Dim added As String
stecode = TextBox1.Text
stename = TextBox2.Text
adscode = TextBox3.Text
adsname = TextBox4.Text
added = TextBox5.Text
'''''''''''''''''''''''''''''''''''''''''''
Worksheets("Sheet1").Cells(lRow, 1).Value = stecode
Worksheets("Sheet1").Cells(lRow, 2).Value = stename
Worksheets("Sheet1").Cells(lRow, 3).Value = adscode
Worksheets("Sheet1").Cells(lRow, 4).Value = adsname
Worksheets("Sheet1").Cells(lRow, 5).Value = added
If lRow = 5 Then
lRow = 3
Else
lRow = lRow + 1
End If
End Sub
Private Sub UserForm_Initialize()
lRow = 3
End Sub
而且,如果你不想,你甚至不需要声明字符串变量。 btnAdd
例程可以更紧凑地编写为:
Private Sub btnAdd_Click()
With Worksheets("Sheet1")
.Cells(lRow, 1).Value = TextBox1.Text
.Cells(lRow, 2).Value = TextBox2.Text
.Cells(lRow, 3).Value = TextBox3.Text
.Cells(lRow, 4).Value = TextBox4.Text
.Cells(lRow, 5).Value = TextBox5.Text
End With
If lRow = 5 Then
lRow = 3
Else
lRow = lRow + 1
End If
End Sub
Option Explicit
用于强制显式声明模块中的所有变量。我认为这是一种很好的做法,它可以减少数据类型错误。您可以阅读更多here。