【问题标题】:macro to work on every excel sheet vba宏在每个 excel 表 vba 上工作
【发布时间】:2018-06-02 12:34:59
【问题描述】:

下面的代码在一个名为“工具”的工作表上工作,但是当按钮移动到另一个工作表时它不会。无论工作表名称或特别是工作表名称“工具”如何,它应该如何更改工作

Sub NameRangeTop(Optional ByRef rngRange As Range)

If rngRange Is Nothing Then
    Set rngRange = Application.Selection
Else
    rngRange.Select
End If

Dim ActiveRange As Range
Dim NumRows, NumColumns, iCount As Long

Dim CurSheetName As String
CurSheetName = ActiveSheet.Name

Set ActiveRange = Selection.CurrentRegion
ActiveRange.Select
NumRows = ActiveRange.Rows.Count
NumColumns = ActiveRange.Columns.Count

If NumRows = 1 And NumColumns = 1 Then
MsgBox "No active cells in the surrounding area. Try running the macro from a different location", vbCritical, "Local Range Naming"
Exit Sub
End If

If NumRows = 1 Then
    Set ActiveRange = ActiveRange.Resize(2)
    NumRows = 2
End If

For iCount = 1 To NumColumns
ActiveRange.Resize(NumRows - 1).Offset(1, 0).Columns(iCount).Name = CurSheetName & "!" & ActiveRange.Rows(1).Columns(iCount).Value
Next

ActiveRange.Resize(NumRows - 1).Offset(1, 0).Select

End Sub

谢谢

【问题讨论】:

    标签: vba excel button


    【解决方案1】:

    如果您将范围传递给 sub,第一个 if 语句可能会出现问题。在您可以Select rngRange 之前,您必须位于包含该范围的工作表上,因此请使用:

    If rngRange Is Nothing Then
        Set rngRange = Application.Selection
    Else
        rngRange.Parent.Activate
        rngRange.Select
    End If
    

    但一般来说你根本不需要使用Select,见:

    Avoid using Select

    您还需要确保每张纸上的数据 id 与您的命名方法一致。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-10
      • 1970-01-01
      • 1970-01-01
      • 2014-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多