2014-10-17 71 views
1

以下是情況:在我的用戶表單中,我有文本框,用戶將在其中輸入數據,當他們點擊保存按鈕時,數據將保存在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

爲什麼用戶必須單獨按下每個項目的按鈕?爲什麼他們不能輸入3個值並點擊保存按鈕? – cronos2546 2014-10-17 00:30:32

+0

感謝您的快速響應,因爲我保存了不同的交易 – Istian 2014-10-17 00:43:45

+0

儘管使用** ActiveCell **是一種不好的做法,只要添加'If ActiveCell.Row> 5然後Range(「A3」) .Select' – PatricK 2014-10-17 01:27:38

回答

0

您可以創建一個私有變量來存儲行索引在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

+0

真棒!這就是我正在談論的,正是:)但你能否進一步解釋選項顯式? – Istian 2014-10-17 05:01:20

+0

我有最後一個問題,我可以指定行和單元格保存數據的位置?例如在「F4」中。感謝人 – Istian 2014-10-17 05:19:41

+0

@Istian:您想要在F4中保存哪些數據?用於「F4」的 – 2014-10-17 15:18:47