当新数据插入工作表时,VB中的代码自动工作

时间:2014-07-08 15:23:56

标签: vb.net excel

我是初学者,所以我希望我的解释是明确的。我试图找到一种方法来使我的VB代码(找到最后一行/找到第一行)在我在工作表中插入新数据时自动运行(我也使用过滤选项)而不是必须手动制作(添加新数据后,按下VB中的按钮)。我使用下一个代码:

查找过滤数据的最后一行

Sub LR2()
    Dim lastrow As Long

    lastrow = Range("A" & Rows.Count).End(xlUp).Row
    ActiveWorkbook.Sheets("Sheet1").Range("D3").Value = lastrow
End Sub 

找到过滤数据的第一行

Sub Firstlastrow()

    Dim r As Range
    Dim StartRow As Long
    Dim EndRow As Long

    Set r = ActiveSheet.Range("A6:A9999").Rows.SpecialCells(xlCellTypeVisible)
    ' r is now $A$73351:$A$77343

    StartRow = r.Row ' returns 73351
    EndRow = r.Row + r.Rows.Count - 1

    ActiveWorkbook.Sheets("Sheet1").Range("D2").Value = StartRow

End Sub

提前谢谢!

2 个答案:

答案 0 :(得分:0)

虽然我不喜欢使用这些类型的事件(因为它们会在每次更改时运行都很昂贵)你可以使用“Worksheet_Change”事件。

因此,例如,当A:A列中的数据发生变化时,这将运行LR2子。

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A:A")) Is Nothing Then LR2
End Sub

Sub LR2()
    Dim lastrow As Long

    lastrow = Range("A" & Rows.Count).End(xlUp).Row
    ActiveSheet.Range("D3").Value = lastrow
End Sub 

答案 1 :(得分:0)

只需插入一个按钮即可。它不像触发它那么简单,但只需点击一下。

转到Excel中的开发人员标签。如果没有开发人员选项卡,请转到Excel选项,自定义功能区,然后单击开发人员框。

进入开发人员标签后,点击插入下的箭头,然后点击左上角的箭头。这将允许放入一个按钮。然后,您可以决定按钮的位置,大小,文本以及它将调用的宏。

希望这有帮助!

关于你的第二个问题:

Sub total()

    Call LR2
    Call Firstlastrow

End Sub

按下按钮调用total sub,它将同时运行。