从选定的单元格设置命名范围

Set named range from cells selected

我必须在特定 sheet 上为最后 2 行的内容设置一个命名范围。我能够 select 那 2 行包含我需要的内容,但无法从 selected 单元格中设置命名范围。我想知道是否有办法从 selected 单元格中设置命名范围。

我已经尝试录制宏并根据需要调整它,但我无法这样做。以及使用单元格引用尝试下面的代码。但这需要在很多文件上 运行,不同的文件会有不同的底行。

Sub LastCell()

Dim MyNamedRng As Range

'Select Worksheet
Worksheets("Sheet1").Activate

'Select Last Used Cell In The Worksheet
 Cells.Find(What:="*", After:=[A1], SearchDirection:=xlPrevious).Select

'Select Cell Above Last + All To The Left
    Range(Selection, Selection.Offset(-1, 0)).Select
    Range(Selection, Selection.End(xlToLeft)).Select

'Create Named Range
    Set MyNamedRng = Sheets("Sheet1").Range("a3:gk4")
      Names.Add Name:="KeyData", RefersTo:=MyNamedRng

 End Sub

这将在相关行中找到最后使用的列。

Sub LastCell()

Dim r1 As Range, r2 As Range

Worksheets("Sheet1").Activate

Set r1 = Cells.Find(What:="*", After:=[A1],SearchOrder:=xlByRows, SearchDirection:=xlPrevious)
If Not r1 Is Nothing Then
    If r1.Row > 1 Then
        Set r2 = r1.offset(-1).resize(2).Entirerow.Find(What:="*", After:=Cells(r1.Row, 1), SearchOrder:=xlByColumns, SearchDirection:=xlPrevious)
        'Use line below if last used column is not in the named range
        'Set r2 = Cells.Find(What:="*", After:=Cells(r1.Row, 1), SearchOrder:=xlByColumns, SearchDirection:=xlPrevious)
        Range(Cells(r1.Row - 1, "A"), Cells(r1.Row, r2.Column)).Name = "KeyData"
    End If
End If

End Sub

阅读 this 了解使用 Select 的危险。