Excel VBA:在上次使用的行之后将数据添加到单元格

时间:2017-05-24 11:44:29

标签: excel vba excel-vba

enter image description here 图片展示了我的代码会发生什么。

我有一个用户表单,我将用户表单的标签添加到选定的工作表中。这就是我尝试过的。现在问题是为什么有一个单元格与其他单元格不在同一行?

Dim c As Control
For Each c In Me.Controls
    If TypeName(c) = "Label" Then
        With ActiveSheet
            i = i + 1
            Dim lastRow As Long
            lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row + 1

            If c <> "Chapter" Then
                .Range(Cells(1, 1), Cells(1, i)).Name = "Chapter1"
                .Range("Chapter1").Merge
                .Range("Chapter1").Value = "Chapter 1"
                .Range("Chapter1").HorizontalAlignment = xlCenter

                .Cells(lastRow, i).Value = c.Caption
            End If
        End With
    End If
Next

1 个答案:

答案 0 :(得分:1)

问题是,当您第一次执行.Cells(.Rows.Count, 1).End(xlUp).Row时,A2中将不会有任何内容,因此lastRow将为1.但是一旦您将值设为“否”在下一次执行该代码时(在i为2)的情况下,在该单元格中,A2将被填充,因此现在.Cells(.Rows.Count, 1).End(xlUp).Row将返回2,从而获得您获得的效果:所有其他值最终为1排低位。

有几种方法可以解决这个问题,但这是一种方法。添加+ IIf(i = 1, 1, 0) lastRow的分配:

lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row + IIf(i = 1, 1, 0)