情况是这样的:在我的用户表单中,我有一个文本框,用户将在其中输入数据,当他们点击保存按钮时,数据将被保存在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发布于 2014-10-17 12:12:37
您可以创建一个私有变量来将行索引存储在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 SubOption Explicit用于强制显式声明模块中的所有变量。我认为这是一个很好的实践,它可以减少数据类型错误。你可以阅读更多的here。
https://stackoverflow.com/questions/26416066
复制相似问题