在Excel 2010中将表单中的数据复制到单元格中

时间:2015-03-25 21:51:01

标签: excel forms excel-vba vba

我目前有Excel 2010电子表格。我设计了一个表单,我希望允许用户在表单中输入日期,然后将其输入到工作表中。

我的第一个条目是我的表格上的“txtDate”,我希望将其输入到单元格J7,其中“txtTime”形式的下一个数据进入单元格K7,然后其他数据进入行中的其他单元格 - L7 ,M7,N7等等...一旦使用表格上的按钮提交此单元格,输入数据,然后下次使用表单时,数据将进入下一行,第8行,然后第二排等等......

我在互联网上的代码下面找到了示例,示例显示它在单元格A2中开始。我看不到A2的提及,所以我想知道如何编辑代码以在单元格J7中启动。

'Copy input values to sheet.
    Dim lRow As Long
    Dim ws As Worksheet
    Set ws = Worksheets("Animals")
    lRow = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
    With ws
        .Cells(lRow, 1).Value = Me.cboClass.Value
        .Cells(lRow, 2).Value = Me.txtGivenName.Value
        .Cells(lRow, 3).Value = Me.txtTagNumber.Value
        .Cells(lRow, 4).Value = Me.txtSpecies.Value
        .Cells(lRow, 5).Value = Me.cboSex.Value
        .Cells(lRow, 6).Value = Me.cboConservationStatus.Value
        .Cells(lRow, 7).Value = Me.txtComment.Value

以下是我在2015年3月27日的答案后的代码:

Dim lRow As Long
     Dim ws As Worksheet
     Set ws = Worksheets("Pursue")
     lRow = Application.WorksheetFunction.Max(ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row, 7)

     With ws
          .Cells(lRow, 10).Value = Me.dateBox.Value
          etc....

1 个答案:

答案 0 :(得分:1)

.Cells(lRow, 1).Value(等等)是什么引用了什么单元格。第一个参数说明了单元格所在的行,第二个是它所在的列。当明确地引用单元格时,我认为没有理由这样做,但主要是因为当你进行循环时,例如每次迭代时lRow加1,以便记下一列。

由于lRow是使用lRow = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row决定的,因此它始终是A列中第一个空行的编号。要更改它以返回J列中的第一个空行,您需要更改Cells到10中的1(J是字母表中的第10个字母。为了让它在任何时候都没有比第7行更进一步,我添加了Max - 声明:

lRow = Application.WorksheetFunction.Max(ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row, 7)

要让sub在With - 语句中向前写入J列,您需要更改列引用以反映这一点。目前它写入第1,2,3等列,你希望它写入第10,11,12等列.I.e。类似的东西:

With ws
    .Cells(lRow, 10).Value = Me.cboClass.Value
    .Cells(lRow, 11).Value = Me.txtGivenName.Value
    .Cells(lRow, 12).Value = Me.txtTagNumber.Value
    etc.