如何检测正在编辑的单元格是否属于已定义名称范围的最后一行

时间:2012-05-15 02:08:37

标签: excel-vba vba excel

我有一个已定义的名称调用“Input_Range”。如果正在编辑输入范围的最后一个空行(将值添加到空行),则自动插入空行。

我一直在研究这个问题几天但没有解决方案。我只能这样做: Worksheet_change事件,用于检测是否编辑或选择了定义的名称范围内的数据,然后插入一行。即使我编辑非空行(如范围的第一行),它仍会添加另一行。

请帮忙!

=========================

我只考虑问题而且我可以做:如果范围内没有空行(“Input_range”),则插入一个空行。我没有这个。好吧,仍然需要学习如何检测一个范围的行是否为空,但它更好。我将继续努力,如果我有问题,请帮助我。

1 个答案:

答案 0 :(得分:2)

这是你在尝试的吗?

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim MRange As Range, rng As Range

    On Error GoTo Whoa

    Set MRange = Range("InputRange")

    '~~> Get the last Row of the range
    Set rng = MRange.Range(MRange.Cells(MRange.Rows.Count, 1), _
    MRange.Cells(MRange.Rows.Count, MRange.Columns.Count))

    '~~> Trap changes in the last row of the range
    If Not Intersect(Target, rng) Is Nothing Then
        'If Application.WorksheetFunction.CountA(rng) > 0 Then
            'Application.EnableEvents = False

            'rng.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        'End If
    End If

LetsContinue:
    Application.EnableEvents = True
    Exit Sub
Whoa:
    MsgBox Err.Description
    Resume LetsContinue
End Sub