精华内容
下载资源
问答
  • Excel vba引用工作表的三种写法

    千次阅读 2018-05-15 09:04:00
    文章介绍vba引用工作表名称的三种不同写法。  vba引用工作表是我们在学习VBA过程中很常用。  本文提供三种vba引用工作表的代码,通过这三种方式都可以实现vba引用工作表名。  方法一:Sheets(Sheet.Index)  ...

    文章介绍vba引用工作表名称的三种不同写法。

      vba引用工作表是我们在学习VBA过程中很常用。

      本文提供三种vba引用工作表的代码,通过这三种方式都可以实现vba引用工作表名。

      方法一:Sheets(Sheet.Index)

      方法二:Sheets(Sheets.Name)

      方法三:Sheets.CodeName

      下面是vba引用工作表的相关的一个截图,可以很直观的看到其使用。

    vba引用工作表

    转载于:https://www.cnblogs.com/huhewei/p/9039168.html

    展开全文
  • VBA-引用工作表的方式

    2020-02-24 15:14:01
    工作表名称是指显示在工作表标签中的文本,工作表名称可以使用 WorkSheets 集合和Sheets 集合两种引用方式。 Sub test() 'Worksheets("工作表3").Activate Sheets("工作表3").Activate End Su...

    引用工作表的方式

    在应用VBA时,可能需要在不同的工作表中进行切换,下面是引用不同工作表的集中方法:

    1、使用工作表名称

    工作表名称是指显示在工作表标签中的文本,工作表名称可以使用 WorkSheets 集合和Sheets 集合两种引用方式。

    Sub test()
        'Worksheets("工作表3").Activate
        Sheets("工作表3").Activate
    End Sub
    

    2、使用工作表的索引号

    工作表索引号是指工作表在工作簿中的位置,Excel 根据工作表在工作表标签中的位置以 1 开始从左向右进行编号。

    Sub test1()
        'Sheets(1).Activate
        Worksheets(1).Activate
    End Sub
    

    3、使用工作表的代码名称

    代码名称可以在工程资源管理器中查看和更改,默认为“sheet1”、“sheet2”…。

    Sub test3()
        Sheet2.Activate
    End Sub
    

    4、使用 ActiveSheet属性引用活动工作表

    Sub test4()
        MsgBox ActiveSheet.Name
    End Sub
    
    展开全文
  • vba工作表重命名Renaming of worksheets can be done manually, but it will look like a massive task if there are a lot of worksheets to be renamed and when we need to rename it based on some conditions ...

    vba工作表重命名

    Renaming of worksheets can be done manually, but it will look like a massive task if there are a lot of worksheets to be renamed and when we need to rename it based on some conditions or values.

    重命名工作表可以手动完成,但是如果要重命名许多工作表以及需要根据某些条件或值重命名工作表,这将是一项艰巨的任务。

    Today, I'm going to show how we can actually rename the worksheets based on conditions by writing some VBA codes.

    今天,我将展示如何通过编写一些VBA代码,根据条件实际重命名工作表。

    Create the fundamental

    创造基础

    Renaming the worksheet can be as easy as looking for a fixed value and then renaming it accordingly with another fixed value.

    重命名工作表就像查找一个固定值,然后相应地使用另一个固定值重命名一样容易。

    Worksheets("Sheet1").Name = "New Sheet Name" 
    

    When we are trying to rename many worksheets, we can repeat to call the codes with minimal changes:

    当我们尝试重命名许多工作表时,我们可以重复执行以最少的更改来调用代码:

    Worksheets("Sheet1").Name = "New Sheet Name"
    Worksheets("Sheet2").Name = "New Sheet Name (2)" 
    

    Note: You must be careful when you trying to rename your worksheet:

    注意:尝试重命名工作表时,必须小心:

    1) Make sure the worksheet name you're referring to exists in the current worksheet

    1 )确保您要引用的工作表名称在当前工作表中存在

    2) Make sure the new worksheet name doesn't exist in the current worksheet

    2 )确保新工作表名称在当前工作表中不存在

    To better handle this, you can create a function like this:

    为了更好地处理此问题,您可以创建如下函数:

    Function getWorkSheet(ByVal WorkSheetName As String) As Worksheet
        On Error GoTo EH
        Set getWorkSheet = Worksheets(WorkSheetName)
        Exit Function
    EH:
        Set getWorkSheet = Nothing
    End Function
    
    Function renameWorkSheet(ByRef ws As Worksheet, ByVal NewWsName As String) As Boolean
        On Error GoTo EH
        Debug.Print ws.Name & " to " & NewWsName
        If getWorkSheet(NewName) Is Nothing Then
            ws.Name = NewWsName
            renameWorkSheet = True
        Else
            'New Worksheet Name already exists
            renameWorkSheet = False
        End If
        Exit Function
    EH:
        renameWorkSheet = False
    End Function 
    

    Function getWorkSheet will be used to look up if there's an existing worksheet with the name that passes to that function. In this case, this function will return a worksheet object. Of course, you can customize your own codes to return as a Boolean instead, for example, but it's all up to you how you design your code.

    函数getWorkSheet将用于查找是否存在名称传递给该函数的现有工作表。 在这种情况下,此函数将返回一个工作表对象。 当然,例如,您可以自定义自己的代码以返回为布尔值,但是这完全取决于您如何设计代码。

    Function renameWorkSheet will be used to handle the rename worksheet process. First, it checks if the worksheet exists before the code proceeds to rename it.

    函数renameWorkSheet将用于处理重命名工作表过程。 首先,它在代码进行重命名之前检查工作表是否存在。

    So, we can directly implement the rename process by using code like this:

    因此,我们可以使用以下代码直接实现重命名过程:

    renameWorkSheet Worksheets("Sheet1"), "New Sheet Name"
    renameWorkSheet Worksheets("Sheet2"), "New Sheet Name (2)" 
    

    which should rename the worksheets accordingly

    应该相应地重命名工作表

    So far so good, right?

    到目前为止一切顺利,对吗?

    Now, what we can do is to rename the worksheets based on a set of rules, by knowing or without knowing how many of worksheets in total we should be renaming.

    现在,我们可以做的是基于一组规则来重命名工作表,方法是知道(或不知道)总共应该重命名多少个工作表。

    To do that, I would think we can list out the requirements we needed, such as:

    为此,我认为我们可以列出所需的要求,例如:

    1) What to be compared, such as fixed values, or cell values, etc.

    1 )要比较的内容,例如固定值或单元格值等。

    2) The comparison method, such as exact match, partial match, or match by using start with, etc.

    2 )比较方法,例如精确匹配,部分匹配或通过使用start with进行匹配等。

    To address the above, I have come out with a  data structure like this:

    为了解决上述问题,我提出了这样的数据结构:

    Private Enum CompareMethod
        Exact = 1
        Within = 2
        StartWith = 3
    End Enum
    
    Private Enum ReadFrom
        Cell = 1
        FixedValue = 2
    End Enum
    
    Private Type WorkSheetSettings
        CompareKey As String
        CompareMethod As CompareMethod
        ReadFrom As ReadFrom
        ReplaceWith As String
        ReadFrom2 As ReadFrom
        ReplaceWith2 As String
        JoinString As String
    End Type 
    

    Enum is being used to define the possible values for our own defined type.

    枚举被用来为我们自己定义的类型定义可能的值。

    Type is being used to declare a user-defined type.

    类型用于声明用户定义的类型。

    In addition, we would need a function getNewWsName to generate the new worksheet name based on the options given above:

    另外,我们将需要一个函数getNewWsName来基于上面给出的选项生成新的工作表名称:

    Function getNewWsName(ByRef ws As Worksheet, ByRef config As WorkSheetSettings) As String
        If config.ReplaceWith <> "" Then
            If config.ReadFrom = Cell Then
                getNewWsName = ws.Range(config.ReplaceWith).Value
            Else
                getNewWsName = config.ReplaceWith
            End If
        End If
        If config.ReplaceWith2 <> "" Then
            If config.ReadFrom2 = Cell Then
                getNewWsName = getNewWsName & config.JoinString & ws.Range(config.ReplaceWith2).Value
            Else
                getNewWsName = getNewWsName & config.JoinString & config.ReplaceWith2
            End If
        End If
    End Function 
    

    Now, to rename "Sheet1" to "New Sheet Name", we can implement this:

    现在,要将“ Sheet1 ”重命名为“ New Sheet Name ”,我们可以实现以下功能:

        Dim NewWsName As String
        Dim ws As Worksheet
        Dim myConfig As WorkSheetSettings
        
        myConfig.CompareKey = "Sheet1"
        myConfig.CompareMethod = Exact
        myConfig.ReadFrom = FixedValue
        myConfig.ReplaceWith = "New Sheet Name"
        
        Set ws = getWorkSheet(myConfig.CompareKey)
        If Not ws Is Nothing Then
            NewWsName = getNewWsName(ws, myConfig)
            renameWorkSheet ws, NewWsName
        End If 
    

    In the event that we would like to rename Sheet1 based on the cell value of Sheet1's cell, A1, we can implement the same by using code:

    如果我们想基于Sheet1的单元格A1的单元格值重命名Sheet1,我们可以使用以下代码来实现:

        Dim NewWsName As String
        Dim ws As Worksheet
        Dim myConfig As WorkSheetSettings
        
        myConfig.CompareKey = "Sheet1"
        myConfig.CompareMethod = Exact
        myConfig.ReadFrom = Cell
        myConfig.ReplaceWith = "A1"
       
        Set ws = getWorkSheet(myConfig.CompareKey)
        If Not ws Is Nothing Then
            NewWsName = getNewWsName(ws, myConfig)
            renameWorkSheet ws, NewWsName
        End If 
    

    To replace multiple worksheets all together, we can simply declare the WorkSheetSettings as an array with the settings, like:

    要一起替换多个工作表,我们可以简单地将WorkSheetSettings声明为具有设置的数组,例如:

        Dim NewWsName As String
        Dim ws As Worksheet
        Dim myConfig(1) As WorkSheetSettings
        
        myConfig(0).CompareKey = "Sheet1"
        myConfig(0).CompareMethod = Exact
        myConfig(0).ReadFrom = Cell
        myConfig(0).ReplaceWith = "A1"
        
        myConfig(1).CompareKey = "Sheet2"
        myConfig(1).CompareMethod = Exact
        myConfig(1).ReadFrom = FixedValue
        myConfig(1).ReplaceWith = "New Sheet Name (2)"
        
        For i = 0 To UBound(myConfig)
            Set ws = getWorkSheet(myConfig(i).CompareKey)
            If Not ws Is Nothing Then
                NewWsName = getNewWsName(ws, myConfig(i))
                renameWorkSheet ws, NewWsName
            End If
        Next 
    

    You can try exploring the possible combinations by revisiting the rules:

    您可以尝试通过重新访问规则来探索可能的组合:

    1) What to be compared, such as fixed values, or cell values, etc.

    1 )要比较的内容,例如固定值或单元格值等。

    2) The comparison method, such as exact match, partial match, or match by using start with, etc.

    2 )比较方法,例如精确匹配,部分匹配或通过使用start with进行匹配等。

    Real Scenario Implementation

    实际方案实施

    Based on the question posted recently: Needs Help With Conditional Renaming for Several Tabs

    基于最近发布的问题: 需要几个标签的条件重命名的帮助

    For the 1st tab, the "Allocation" tab, I need to rename it as “Master_CellD28Value” which means that if Cell D28’s value is A123 - FIFO, the tab should be renamed to “Master_A123 - FIFO”.

    对于第一个选项卡,即“分配”选项卡,我需要将其重命名为“ Master_CellD28Value”,这意味着如果单元格D28的值为A123-FIFO,则该选项卡应重命名为“ Master_A123-FIFO”。

    For the 6th and 7th tab, the "ESD Trf Qty" and "EVNL Trf Qty" tabs, I need it to be renamed like this: The part before “ Trf Qty”_Cell C28’s value. For example, if EVNL Trf Qty tab’s cell C28 value is A123 - LIFO then the tab should be renamed to “EVNL_A123 - LIFO”

    对于第6和第7个选项卡,“ ESD Trf数量”和“ EVNL Trf数量”选项卡,我需要像这样重命名:“ Trf数量” _Cell C28值之前的部分。 例如,如果“ EVNL Trf数量”选项卡的单元格C28值为A123-LIFO,则该选项卡应重命名为“ EVNL_A123-LIFO”



    The tabs which are named "By Ctrn-EIN", "By Ctrn-EMSB", "By Ctrn-ETH", "By Ctrn-EPC" and "By Ctry-IDC", these need to be renamed to “CellE25Value_CellC28Value”. If Cell E25 Value’s is Canada and Cell C28’s Value is B987 -123 then the tab should be renamed to “Canada_B987 - 123”

    名为“按Ctrn-EIN”,“按Ctrn-EMSB”,“按Ctrn-ETH”,“按Ctrn-EPC”和“按Ctry-IDC”的选项卡,这些选项卡需要重命名为“ CellE25Value_CellC28Value”。 如果单元格E25的值是加拿大,单元格C28的值是B987 -123,则该选项卡应重命名为“ Canada_B987-123”



    As an error proofing method, the last tab, the subset list should be left alone.

    作为防错方法,最后一个选项卡,子集列表应保留为空。

    This actually can be done by simply changing the rules and apply the code below:

    实际上,只需更改规则并应用以下代码即可完成此操作:

    Sub RenameWorkSheets()
        Dim NewWsName As String
        Dim ArrPrefix(3) As WorkSheetSettings
        
        ArrPrefix(0).CompareKey = "Allocation"
        ArrPrefix(0).CompareMethod = Exact
        ArrPrefix(0).ReadFrom = FixedValue
        ArrPrefix(0).ReplaceWith = "Master_"
        ArrPrefix(0).ReadFrom2 = Cell
        ArrPrefix(0).ReplaceWith2 = "D28"
        
        ArrPrefix(1).CompareKey = "ESD "
        ArrPrefix(1).CompareMethod = StartWith
        ArrPrefix(1).ReadFrom = FixedValue
        ArrPrefix(1).ReplaceWith = "ESD_"
        ArrPrefix(1).ReadFrom2 = Cell
        ArrPrefix(1).ReplaceWith2 = "C28"
        
        ArrPrefix(2).CompareKey = "EVNL "
        ArrPrefix(2).CompareMethod = StartWith
        ArrPrefix(2).ReadFrom = FixedValue
        ArrPrefix(2).ReplaceWith = "EVNL_"
        ArrPrefix(2).ReadFrom2 = Cell
        ArrPrefix(2).ReplaceWith2 = "C28"
        
        ArrPrefix(3).CompareKey = "By "
        ArrPrefix(3).CompareMethod = StartWith
        ArrPrefix(3).ReadFrom = Cell
        ArrPrefix(3).ReplaceWith = "E25"
        ArrPrefix(3).ReadFrom2 = Cell
        ArrPrefix(3).ReplaceWith2 = "C28"
        ArrPrefix(3).JoinString = "_"
        
        Dim ws As Worksheet
        
        For Each ws In ActiveWorkbook.Worksheets
            For i = 0 To UBound(ArrPrefix)
                Select Case ArrPrefix(i).CompareMethod
                Case CompareMethod.Exact
                    If ws.Name = ArrPrefix(i).CompareKey Then
                        NewWsName = getNewWsName(ws, ArrPrefix(i))
                        renameWorkSheet ws, NewWsName
                        Exit For
                    End If
                Case CompareMethod.StartWith
                    If Left(ws.Name, Len(ArrPrefix(i).CompareKey)) = ArrPrefix(i).CompareKey Then
                        NewWsName = getNewWsName(ws, ArrPrefix(i))
                        renameWorkSheet ws, NewWsName
                        Exit For
                    End If
                Case CompareMethod.Within
                    If InStr(ws.Name, ArrPrefix(i).CompareKey) > 0 Then
                        NewWsName = getNewWsName(ws, ArrPrefix(i))
                        renameWorkSheet ws, NewWsName
                        Exit For
                    End If
                End Select
            Next
        Next
    End Sub 
    

    As you can see, the main code remains the same. Hence, minimal code changes are needed.

    如您所见,主要代码保持不变。 因此,需要最少的代码更改。

    Note:

    注意:

    In the case you see the worksheet name is not being renamed, there could be some possibilities:

    如果您看到工作表名称未重命名,则可能存在一些可能性:

    1) You provided an invalid sheet name that needs to be renamed

    1 )您提供了一个无效的工作表名称,需要重命名

    2) You provided an empty new sheet name

    2 )您提供了一个空白的新工作表名称

    3) You provided a new sheet name that is over the limited allowed in Excel (max allowed is 31 chars)

    3 )您提供的新工作表名称超出了Excel中允许的限制(允许的最大字符数为31个字符)

    4) You provided a new sheet name that already exists

    4 )您提供了一个已经存在的新工作表名称

    Well, we are done! And here is the complete code to share with you all:

    好了,我们完成了! 以下是与大家共享的完整代码:

    Private Enum CompareMethod
        Exact = 1
        Within = 2
        StartWith = 3
    End Enum
    
    Private Enum ReadFrom
        Cell = 1
        FixedValue = 2
    End Enum
    
    Private Type WorkSheetSettings
        CompareKey As String
        CompareMethod As CompareMethod
        ReadFrom As ReadFrom
        ReplaceWith As String
        ReadFrom2 As ReadFrom
        ReplaceWith2 As String
        JoinString As String
    End Type
    
    Sub RenameWorkSheets()
        Dim NewWsName As String
        Dim ArrPrefix(3) As WorkSheetSettings
       
        ArrPrefix(0).CompareKey = "Allocation"
        ArrPrefix(0).CompareMethod = Exact
        ArrPrefix(0).ReadFrom = FixedValue
        ArrPrefix(0).ReplaceWith = "Master_"
        ArrPrefix(0).ReadFrom2 = Cell
        ArrPrefix(0).ReplaceWith2 = "D28"
       
        ArrPrefix(1).CompareKey = "ESD "
        ArrPrefix(1).CompareMethod = StartWith
        ArrPrefix(1).ReadFrom = FixedValue
        ArrPrefix(1).ReplaceWith = "ESD_"
        ArrPrefix(1).ReadFrom2 = Cell
        ArrPrefix(1).ReplaceWith2 = "C28"
       
        ArrPrefix(2).CompareKey = "EVNL "
        ArrPrefix(2).CompareMethod = StartWith
        ArrPrefix(2).ReadFrom = FixedValue
        ArrPrefix(2).ReplaceWith = "EVNL_"
        ArrPrefix(2).ReadFrom2 = Cell
        ArrPrefix(2).ReplaceWith2 = "C28"
       
        ArrPrefix(3).CompareKey = "By "
        ArrPrefix(3).CompareMethod = StartWith
        ArrPrefix(3).ReadFrom = Cell
        ArrPrefix(3).ReplaceWith = "E25"
        ArrPrefix(3).ReadFrom2 = Cell
        ArrPrefix(3).ReplaceWith2 = "C28"
        ArrPrefix(3).JoinString = "_"
       
        Dim ws As Worksheet
       
        For Each ws In ActiveWorkbook.Worksheets
            For i = 0 To UBound(ArrPrefix)
                Select Case ArrPrefix(i).CompareMethod
                Case CompareMethod.Exact
                    If ws.Name = ArrPrefix(i).CompareKey Then
                        NewWsName = getNewWsName(ws, ArrPrefix(i))
                        renameWorkSheet ws, NewWsName
                        Exit For
                    End If
                Case CompareMethod.StartWith
                    If Left(ws.Name, Len(ArrPrefix(i).CompareKey)) = ArrPrefix(i).CompareKey Then
                        NewWsName = getNewWsName(ws, ArrPrefix(i))
                        renameWorkSheet ws, NewWsName
                        Exit For
                    End If
                Case CompareMethod.Within
                    If InStr(ws.Name, ArrPrefix(i).CompareKey) > 0 Then
                        NewWsName = getNewWsName(ws, ArrPrefix(i))
                        renameWorkSheet ws, NewWsName
                        Exit For
                    End If
                End Select
            Next
        Next
    End Sub
    
    Function getNewWsName(ByRef ws As Worksheet, ByRef config As WorkSheetSettings) As String
        If config.ReplaceWith <> "" Then
            If config.ReadFrom = Cell Then
                getNewWsName = ws.Range(config.ReplaceWith).Value
            Else
                getNewWsName = config.ReplaceWith
            End If
        End If
        If config.ReplaceWith2 <> "" Then
            If config.ReadFrom2 = Cell Then
                getNewWsName = getNewWsName & config.JoinString & ws.Range(config.ReplaceWith2).Value
            Else
                getNewWsName = getNewWsName & config.JoinString & config.ReplaceWith2
            End If
        End If
    End Function
    
    Function getWorkSheet(ByVal WorkSheetName As String) As Worksheet
        On Error GoTo EH
        Set getWorkSheet = Worksheets(WorkSheetName)
        Exit Function
    EH:
        Set getWorkSheet = Nothing
    End Function
    
    Function renameWorkSheet(ByRef ws As Worksheet, ByVal NewWsName As String) As Boolean
        On Error GoTo EH
        Debug.Print ws.Name & " to " & NewWsName
        If getWorkSheet(NewName) Is Nothing Then
            ws.Name = NewWsName
            renameWorkSheet = True
        Else
            'New Worksheet Name already exists
            renameWorkSheet = False
        End If
        Exit Function
    EH:
        renameWorkSheet = False
    End Function 
    

    What's more?

    更重要的是?

    Last but not least, we can further enhance our code to include features such as:

    最后但并非最不重要的一点是,我们可以进一步增强代码以包括以下功能:

    • Put the color options to worksheet's tab

      将颜色选项放入工作表的选项卡
    • Sort the worksheets according to certain orders

      根据某些顺序对工作表进行排序
    • Split the content of a worksheet into multiple worksheets

      将工作表的内容拆分为多个工作表
    • Merge the content of worksheets into a single worksheet

      将工作表的内容合并到一个工作表中

    This I think we can discuss that in future tutorials.

    我想我们可以在以后的教程中对此进行讨论。

    I hope you found this article useful. You are encouraged to ask questions, report any bugs or make any other comments about it below.

    希望本文对您有所帮助。 鼓励您在下面提出问题,报告任何错误或对此作出任何其他评论。

    Note: If you need further "Support" about this topic, please consider using the Ask a Question feature of Experts Exchange. I monitor questions asked and would be pleased to provide any additional support required in questions asked in this manner, along with other EE experts...

    注意 :如果您需要有关此主题的更多“支持”,请考虑使用Experts Exchange 的“提问”功能。 我会监督提出的问题,并很高兴与其他电子工程师一起提供以这种方式提出的问题所需的任何其他支持...

    Please do not forget to press the "Thumb's Up" button if you think this article was helpful and valuable for EE members.  It also provides me with positive feedback. Thank you!

    如果您认为本文对EE成员有用且有价值,请不要忘记按“ Thumb's Up”按钮。 它还为我提供了积极的反馈。 谢谢!

    翻译自: https://www.experts-exchange.com/articles/33507/Rename-a-list-of-worksheets-using-VBA-codes-with-conditions.html

    vba工作表重命名

    展开全文
  • vba 引用Sheet的几种方法

    万次阅读 2019-02-09 16:12:53
    今天来记录一下如何引用Sheet 如果所有的操作都是在当前的Sheet完成的话,是不需要引用Sheet的。 举个例子,当前有Sheet1和Sheet2两个Sheet,假设当前选中的是Sheet2,我们输入: Range("A1") = "...

    今天来记录一下如何引用Sheet

    如果所有的操作都是在当前的Sheet完成的话,是不需要引用Sheet的。

    举个例子,当前有Sheet1和Sheet2两个Sheet,假设当前选中的是Sheet2,我们输入:

    Range("A1") = "Hello World"

    那这两个Sheet中,哪个单元格会被赋值为Hello World呢。答案是Sheet2单元格。

    当单元格前没有Sheet的时候,引用的默认都是当前的Sheet。

    因此,当我们处在Sheet2,又希望Sheet1的A1单元格被赋值为Hello World时,

    代码就应该这样被修改:

    Sheet1.Range("A1") = "Hello World"

    以下来介绍一下,引用Sheet的所有方法。

    1、使用工作表的代码名称

    使用工作表的代码名称,大家可以使用Alt+F11打开VBA编辑器,

    左侧就是工作表的代码名称了。

    不管我们如何修改Sheet的名称,在代码名称中,他们仍然是Sheet1、Sheet2。使用代码名称来引用Sheet是比较好用的方法,适用于我们知道每个Sheet的内容,并且Sheet名称不是需要判断的场景。

    2、使用工作表的索引号

    使用工作表的索引号,写法是用一对括号把数字括起来,参考如下:

    Sheets(1).Range("A1") = "Hello World"

    请注意是Sheets(1)而不是Sheet(1),如果没有s,是会报错的。

    而索引号的顺序,就是Excel下方Sheet导航栏展示的顺序。

    VBA 制作供应商增删改查 小工具 第1篇

     

    大家可以看代码演示,索引号是2,那就是总左至右第二个Sheet,即使这个Sheet的名称是Sheet1。

    VBA 制作供应商增删改查 小工具 第1篇

     

    3、使用工作表名称来引用

    使用工作表的名称来引用,顾名思义,就是工作表叫什么名称,引用的时候就如何使用。使用方法如下:

    Sheets("我的名称").Range("A1") = "Hello World"

    如图:

    VBA 制作供应商增删改查 小工具 第1篇

     

    当我们知道如何引用不同Sheet的数据的时候,

    我们就可以自由的操作,将我们的数据存放到对应的地方。

    展开全文
  • 问题一:在VBA代码中,如何引用当前工作表中的单个单元格(例如引用单元格C3)? 回答:可以使用下面列举的任一方式对当前工作表中的单元格(C3)进行引用。 (1) Range("C3") (2) [C3] (3) Cells(3, 3) ...
  • 但是一旦工作表名称进行了修改,则后期的引用则会造成很多影响。 下列代码可以保证工作表名称不被修改: '是的表1的表名为“不能改”不变 Private Sub Workbook_BeforeClose(Cancel As Boolean) If She...
  • VBA单元格、工作表、工作簿

    千次阅读 2019-04-30 23:08:35
    详解VBA单元格、工作表、工作簿各种表示、方法,注意事项。
  • 我有一个VBA函数,可从ActiveSheet中的图表输出趋势线方程。不过,我将此功能用作跨多个工作表的加载项。为了获得要计算的函数,当我第一次打开...理想情况下,对于该离散实例,我希望函数引用其位于哪个工作表中...
  • 行下列宏代码,可在A列中从A1开始引用所有该工作簿各工作表的命名: Sub 引用工作表命名() For i = 1 To Sheets.Count Cells(i, 1) = Sheets(i).Name Next End Sub 其中,更改代码“For i = 1 To ...
  • 通常有下面几种方法: Sub 直接使用工作表名称法() MsgBox Worksheets("我的工作表").Name '上段文字已经说明了Worksheets和Sheets的区别 MsgBox Sheets("我的图表").Name End Sub *******************************...
  • 代码实现的是从一个工作簿中单独保存其中一个工作表,并以单元格数据命名新工作簿名称
  • 您在问题中显示的代码因以下原因而失败:Assets = Array("pipe_mat_tables", "pipe_diam_tables", "pipe_length_tables")Assets是一种工作表,它是一种Object,在为对象赋值时必须使用Set:Set Assets = Array("pipe...
  • '使用 Worksheets 属性和 Charts 属性可通过名称来标识工作表。下述语句激活活动工作簿中的不同工作表。 Worksheets("Sheet1").Activate Charts("Chart1").Activate DialogSheets("Dialog1").Activate 在 Sheets...
  • 引用其他工作表,路径问题 操作前需要先打开的问题 打开其他工作表,在前台,和后台,避免被打断的问题   2.2 问题1:如何取其他工作簿的名字 取workbooks().name 如果是本表的,默认省略 wb,或,...
  • 如何防止Excel工作表名称被修改

    千次阅读 2020-01-29 14:51:53
    在Excel工作表标签上双击可以修改名称,如果其他工作簿中公式使用了对于此工作表的外部引用,那么工作表名称变化后,这些外部引用经失效,在VBA代码中通过工作表名称引用对象也将出错。利用VBA对象事件代码可以一定...
  • 我有一个VBA函数,可从ActiveSheet中的图表输出趋势线方程。不过,我将此功能用作跨多个工作表的加载项。为了获得要计算的函数,当我第一次打开...理想情况下,对于该离散实例,我希望函数引用其位于哪个工作表中...
  • 操作方法:通过名称引用工作表 使用 Worksheets 属性和 Charts 属性可通过名称来标识工作表。下述语句激活活动工作簿中的不同工作表。 Worksheets("Sheet1").Activate Charts("Chart1").Activate ...
  • VBA工作表操作

    千次阅读 2013-06-16 10:34:54
    '当选择新的单元格时,将这个单元格(或者区域)定义为名称“XM”,在条件格式设置中可以引用这个名称。 ThisWorkbook.Names.Add "XM", Target End Sub 同时在表格中,设置条件格式: 将代码粘贴完成后,...
  • 1 工作表函数 对 EXCEL对象的引用语法 1.1 同一个sheet里 在同一个sheet里 cell range row column 层面,一般用冒号:如SUM(A:A) 引用 平行的多个对象,一般用逗号,如=SUM(A1,B1,G1) 1.2 跨同1个workbooks的...
  • PAGE 22 PAGE 23 第2章 Sheet工作表对象 范例18 引用工作表的方法 18-1 使用工作表名称 Sub ShtName) Worksheets"Sheet2.Range"A1) = "Excel 2007" End Sub 18-2 使用工作表索引号 Sub ShtIndex) Worksheets...
  • 修改Excel工作表名称时,涉及跨表引用公式中的工作表名称会自动更新,无需大家操心,所以固定工作表名称一般是两个目的: 便于在VBA引用工作表对象 表格文件更加规范化 对于第一个目的,其实也更好的解决方法,...
  • 一、将一个工作簿中所有工作表单独保存为独立的文件 操作过程分三步:选中要复制的sheet,,复制(建立副本),保存后关闭新文件 Sub sheet2file() Dim sht As Worksheet Dim file_name$ For Each sht In Sheets/...
  • 在新建工作表的这条路上踩过太多的坑了,虽然仅有个别的项目才需要用到新建工作表,但是很久不用,难免习惯性的baidu,然后就是一大堆乱七八糟的搜索结果:1、代码独立,获取不到新建工作表对象,无法在后续调用中...
  • (一)事件实例:防止工作表名的更改 如果你有一份表格,里面的每一个工作表名称都不希望被更改,那么可以嵌入如下代码: Private Sub Worksheet_SelectionChange(ByVal Target As Range) '当更改选中区域的时候...
  • 针对一个工作簿中很多的,有些需要隐藏,有些需要显示出来,因名称比较统一,仅有主体名称不同;如图: 目的是实现仅显示“汇总”和 “人工费用”,其他则都隐藏 二、代码示例 Sub 特定...
  • VBA操作Excel内容排序,用Sort函数对工作表内容排序

    万次阅读 多人点赞 2019-02-18 23:52:47
    '激活当前工作表,Sort只能排序当前工作表 sht.Activate '获取当前表最大行数 maxRow = sht.UsedRange.Rows.Count '选取范围进行排序:这里是选取a3:ao41(前两行因为是标题,所以不选);key是排序的列,...
  • VBA语言获取其他工作表中的数据

    千次阅读 2018-07-31 10:54:16
    如下表,我们想按照工作表““OA线路衰耗””填写工作表“线路衰耗统计”: 要抽取的数据在另一个表格内,就要结束方法sheets(): Sub For_tongji() Dim str1 As String Dim str2 A...
  • 导读::可以方便的利用VBA读取Excel工作薄中的数据。经常需要引用其它工作薄中的数据。 关键词:VBA,工作薄,数据读取  引言  工作中,使用Excel进行数据处理时,经常需要引用其它工作...第一个工作表名称

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,926
精华内容 1,170
关键字:

vba工作表名称引用