首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何循环保存数据?

如何循环保存数据?
EN

Stack Overflow用户
提问于 2014-10-17 08:27:12
回答 1查看 136关注 0票数 1

情况是这样的:在我的用户表单中,我有一个文本框,用户将在其中输入数据,当他们点击保存按钮时,数据将被保存在excel sheet1中。

在sheet1中,我将只使用3行("a3:a5")来保存数据,这意味着当用户第一次点击保存按钮时,数据将被保存在"a3“行中,当第二次点击保存按钮时,数据将被保存在"a4”行中,第三次点击保存按钮时,数据将被保存在"a5“行中。

我想做的是,当用户再次点击保存按钮( a3 :a5有值)的数据将开始再次保存在a3行,然后到a4和a5重复。

我认为循环是最好的方法,但我不知道具体怎么做。请帮帮我。

这是我的示例代码,我唯一的问题是行("a3:a5")中的循环过程,a2行由标题组成

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2014-10-17 12:12:37

您可以创建一个私有变量来将行索引存储在UserForm中,然后在将值写入工作表时引用该索引。该变量可以在初始化用户表单时初始化。将值写入工作表后,您可以递增行索引,并在写入第5行后将其重置为3。请参见下文。

代码语言:javascript
复制
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例程可以更简洁地编写为:

代码语言:javascript
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26416066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档