Excel VBA:如何在每次单击按钮时逐个增加行数

时间:2014-10-29 09:34:56

标签: vba excel-vba access-vba excel

Public Sub CommandButton1_Click()
Dim Name As String
Dim Age As Integer
Dim Row As Integer
Dim i As Integer
i = 2
Row = i
If (Sheet1.Range("D10").Value = "") Then
MsgBox ("Enter Value")
Else
Name = Sheet1.Range("D10").Value
Age = Sheet1.Range("D12").Value
Sheet2.Select
Sheet2.Range("A" & Row) = Name
Sheet2.Range("B" & Row) = Age
Sheet1.Range("D10").Value = ""
Sheet1.Range("D12").Value = ""
End If
End Sub

在上面的代码中,我想在每次点击按钮时增加行数。 例如:在Excel第1页(D10)中保存到Sheet2(A2) 当下次点击按钮时,D10的值应保存到A3。

2 个答案:

答案 0 :(得分:1)

1无需使用变量i。只需找到显示HERE的最后一行,其中包含数据,并为下一个可用行添加1

2不要将行变量声明为Integerxl2007+1048576行。使用Long

3您不必使用.Select来撰写工作表。通过完全限定对象来直接执行操作。您可能希望看到THIS

这是你正在尝试的( UNTESTED )?

Public Sub CommandButton1_Click()
    Dim Name As String
    Dim Age As Integer
    Dim lRow As Long

    With Sheet2
        lRow = .Range("A" & .Rows.Count).End(xlUp).Row + 1

        If Len(Trim(Sheet1.Range("D10").Value)) = 0 Then
            MsgBox ("Enter Value")
        Else
            Name = Sheet1.Range("D10").Value
            Age = Sheet1.Range("D12").Value

            .Range("A" & lRow) = Name
            .Range("B" & lRow) = Age

            Sheet1.Range("D10,D12").ClearContents
        End If
    End With
End Sub

答案 1 :(得分:-1)

另一种方法是使用 UsedRange 属性。它获取单个工作表中包含内容的当前单元格范围。要添加到现有代码中的确切属性如下所示:

Sheet2.UsedRange.Rows.Count

在工作表2中只填写了一行,您将获得1的计数,这对计数的+1不起作用(它将继续插入第2行)。将一些内容添加到Sheet 2的第一行,然后尝试以下代码:

Public Sub CommandButton1_Click()
Dim Name As String
Dim Age As Integer
Dim Row As Integer
Dim i As Integer

Row = Sheet2.UsedRange.Rows.Count + 1
If (Sheet1.Range("D10").Value = "") Then
MsgBox ("Enter Value")
Else
Name = Sheet1.Range("D10").Value
Age = Sheet1.Range("D12").Value
Sheet2.Select
Sheet2.Range("A" & Row) = Name
Sheet2.Range("B" & Row) = Age
Sheet1.Range("D10").Value = "test"
Sheet1.Range("D12").Value = ""
End If

End Sub

看你怎么样!

如果你必须将第一行留空,那么让我们看一下添加一些额外的代码以适应这一点。