2016-03-03 57 views
0

我已經創建了一個用戶表單,但是我無法設法每次將它填充到下一行,它總是填充同一行。將用戶表單中的數據填充到下一行

這裏是我當前的代碼:

Private Sub btnivesti_Click() 
    Dim ssheet As Worksheet 

    Set ssheet = ThisWorkbook.Sheets("Lapas1") 

    ssheet.Cells(3) = CDate(Me.tddate) 
    ssheet.Cells(1) = Me.cmblistitem 
    ssheet.Cells(4) = Me.tbpo 
    ssheet.Cells(6) = Me.tbkodas 
    ssheet.Cells(8) = Me.tbkiekis 

End Sub 

Private Sub UserForm_Initialize() 
    Me.tddate = Date 

    'fill drop box 

    For Each cell In [listas1] 
     Me.cmblistitem.AddItem cell 
    Next cell 

End Sub 
+0

你可以提高你的question-目前尚不清楚你在問什麼? –

+0

由於在最頂層的宏中定義的單元總是相同的(3,1,4等),所以難怪宏不在行之間移動。 – eirikdaude

回答

0

您當前的代碼引用的單元格數目。單元號通過單獨計算單元數量來確定單元位置(第1行的單元格編號從1到16384,第2行從16385到32768等),這非常低效。相反,您應該參考要放置數據的行和列。

既然你要填寫新的數據到新行,讓最後一排與它和增量數據的位置由1試試這個:

Private Sub btnivesti_Click() 
    Dim ssheet As Worksheet 
    Dim lastrow as Integer 

    Set ssheet = ThisWorkbook.Sheets("Lapas1") 
    lastrow = Range("A" & Rows.Count).End(xlUp).Row + 1 

    ssheet.Cells(lastrow, 3) = CDate(Me.tddate) 
    ssheet.Cells(lastrow, 1) = Me.cmblistitem 
    ssheet.Cells(lastrow, 4) = Me.tbpo 
    ssheet.Cells(lastrow, 6) = Me.tbkodas 
    ssheet.Cells(lastrow, 8) = Me.tbkiekis 

End Sub 
+0

太好了,謝謝!有用。 –

+0

還有一個小問題,tbkiekis不應該被視爲文本,但作爲一個數字,我應該如何改變代碼來做到這一點?非常感謝你提前。 –

+0

您可以使用'isNumeric'函數來檢查'tbkiekis'是否是一個數字。然後添加一個條件,如果它返回true,數據將被填充。 – lenwe