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