代码之家  ›  专栏  ›  技术社区  ›  MTT

工作表的变量名

  •  0
  • MTT  · 技术社区  · 6 年前

    我想在Excel中将一个工作表命名为“Control”选项卡中单元格“C6”内的值。我刚接触过VBA,我尝试在模块上键入它。

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    
    '
    ' Macro2 Macro
    '
    
    '
        Dim month As String
        month = Sheet2.Range("C5")
        Sheets("Month").Name = month
    End Sub
    

    此外,我不知道该名称是否会自动更新。我不想运行宏来更改工作表名称…

    谢谢!

    1 回复  |  直到 6 年前
        1
  •  3
  •   ashleedawg    6 年前

    听起来您希望始终引用同一个工作表,而不考虑工作表的名称更改(如工作表的选项卡所示)。

    这是工作表的位置 CODENAME 财产 很方便。

    假设有一个对象变量为工作表声明,比如 Dim ws As Worksheet . 可以通过三种基本方法引用工作表。


    …… Name :

    设置对象变量:

    Set ws = Sheets("Sheet1")
    

    工作表名称是唯一可以更改为所需内容的工作表标识符,其操作(您可能知道)如下:

    ws.Name = "NewSheetname"  
    

    …或者,比如:

    Sheets("Sheet1").Name = "NewSheetName"  
    

    …… Index 编号:

    索引编号标识 工作表“选项卡”的位置 ,与其他工作表相比(如果不更改工作表的顺序,则无法更改)

    设置对象变量:

    Set ws = Sheets(1)  
    

    …然后您可以(仍然)更改工作表名称,如:

    ws.name=“新闻纸名称”
    

    …或者您可以通过引用工作表索引号来更改名称,例如:

    Sheets(1).Name = "NewSheetName"
    

    注: 如果工作表被移动(或在其前面插入另一个工作表), 索引编号将更改! 因此,它通常不是引用工作表的首选方法。


    …… CodeName :

    代码名是Excel内部引用工作表的方式。它是Excel为工作表指定的原始名称,由于它是只读属性,因此不会更改。

    设置对象变量:

    Set ws = Sheet1  
    

    …然后您可以(仍然)更改工作表名称,如:

    ws.name=“新闻纸名称”
    

    …或者您可以通过引用工作表代码名来更改名称,例如:

    Sheet1.Name = "NewSheetName"
    

    您可以检查工作表 代号 属性如下:

    MsgBox Sheets("YourSheetName").CodeName
    

    …或者,如果 ws 已在引用工作表:

    MsgBox ws.CodeName
    

    因此,在您的情况下,您可以根据自己的喜好,随时更改工作表的名称,方法是:

    Sheet2.Name = "NewNameHere"
    

    …只是一直把它称为 Sheet2 .


    再举一个例子 要澄清差异:

    • 创建新工作簿。(工作表将自动命名为 Sheet1 )
    • 将工作表名称更改为“Sheet1999”,可以手动(双击其选项卡上的名称)或通过编程(使用 Sheet1.Name="Sheet1999" )

    • 现在,如果要找出该工作表上使用了多少行,可以使用以下任一行:

      MsgBox Sheets("Sheet1999").UsedRange.Rows.Count
      

      …或:

      MsgBox Sheet1.UsedRange.Rows.Count
      

    关于 Sheets 对战 Worksheets :

    引用工作表时 希茨 工作表 可以 通常 可以互换使用,例如这两行用于 同样的事情 :

    Worksheets("mySheet").Calculate
    
    Sheets("mySheet").Calculate
    

    区别 是不是:

    • 这个 工作表 对象搜索 这个 工作表 收藏 为了匹配 名字 , 索引 代号 .

    • 这个 希茨 对象搜索 这个 工作表 收集**和 这个 Charts 集合**用于匹配 名字 , 索引 代号 .

    因此,唯一的问题是 同名的图表和工作表 .

    所以, 不要将图表命名为与工作表相同的图表 然后你就不用担心了,只要你提到一个 Sheet …:)


    更多信息:

    推荐文章