VBA代码在宏中工作,但不在按钮上工作

VBA代码在宏中工作,但不在按钮上工作,vba,excel,Vba,Excel,当我在宏中逐行(F8)时,以下代码运行良好。但是,当我将其复制到工作表“封面”中的按钮上时,转到“工作表(“FES列表”)。范围(单元格(2,2),单元格(LastRow2,4))。选择”时会出现错误。然后我在工作表“FES列表”中创建了另一个按钮,这是我执行“选择”的工作表,代码再次开始工作 是否有一种方法可以让我在工作表“封面”中保留按钮,但仍然在工作表“FES列表”中选择一个范围?非常感谢 Private Sub CommandButton1_Click() 'This Code wil

当我在宏中逐行(F8)时,以下代码运行良好。但是,当我将其复制到工作表“封面”中的按钮上时,转到“工作表(“FES列表”)。范围(单元格(2,2),单元格(LastRow2,4))。选择”时会出现错误。然后我在工作表“FES列表”中创建了另一个按钮,这是我执行“选择”的工作表,代码再次开始工作

是否有一种方法可以让我在工作表“封面”中保留按钮,但仍然在工作表“FES列表”中选择一个范围?非常感谢

Private Sub CommandButton1_Click()

'This Code will remove any names defined in name manager
    Dim nm As Name

    On Error Resume Next
    For Each nm In ActiveWorkbook.Names
        nm.Delete
    Next
    On Error GoTo 0

'Find the last used row in a Column B and select range from B2 to D:LastRow
  Dim LastRow2 As Long

    With Worksheets("FES LIST")
        LastRow2 = .Cells(.Rows.Count, "B").End(xlUp).Row

    Sheets("FES LIST").Activate

    Worksheets("FES LIST").Range(Cells(2, 2), Cells(LastRow2, 4)).Select
    Worksheets("FES LIST").Range(Cells(2, 2), Cells(LastRow2, 4)).Name = "NameRange0"

    End With
End Sub
改变

它不使用
.Activate/.Select
并完全限定
单元格
对象

经过尝试和测试

Private Sub CommandButton1_Click()
    Dim nm As Name
    Dim LastRow2 As Long

    On Error Resume Next
    For Each nm In ActiveWorkbook.Names
        nm.Delete
    Next
    On Error GoTo 0

    With Worksheets("FES LIST")
        LastRow2 = .Cells(.Rows.Count, "B").End(xlUp).Row

        .Range(.Cells(2, 2), .Cells(LastRow2, 4)).Name = "NameRange0"
    End With
End Sub

您好,谢谢您的快速回复。我尝试了你的代码,但错误仍然存在。然后我尝试添加“Sheets”(“FES LIST”)。选择“强制它针对这张表,它最终会工作。然而,我相信这可能不是最佳的解决方案:(请看上面帖子中的我的编辑。它对我来说很好。你可能需要刷新页面才能看到编辑。可能是@AmadeusNing正在重用一个已经存在的名称吗?啊!我没有看到。:)谢谢Siddharth。你的代码这次运行得很好!
With Worksheets("FES LIST")
    .Range(.Cells(2, 2), .Cells(LastRow2, 4)).Name = "NameRange0"
End With
Private Sub CommandButton1_Click()
    Dim nm As Name
    Dim LastRow2 As Long

    On Error Resume Next
    For Each nm In ActiveWorkbook.Names
        nm.Delete
    Next
    On Error GoTo 0

    With Worksheets("FES LIST")
        LastRow2 = .Cells(.Rows.Count, "B").End(xlUp).Row

        .Range(.Cells(2, 2), .Cells(LastRow2, 4)).Name = "NameRange0"
    End With
End Sub