2016-03-03 61 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