根据缩写的工作表名称命名单元格

时间:2017-02-13 19:29:15

标签: excel vba header footer naming

我的张贴有缩写名称,例如“LOL”或ROFL“

我需要宏我必须通过并根据工作表名称输入左侧标题中的完整短语。

我知道如何使用 activesheet.name 进行此操作,但我不知道如何写出全名。我怀疑它需要一个案例和某种循环。

IE“LOL” - >标题名称将是“大笑”

“Rofl” - >标题名称将是“在地板上滚动笑”

谢谢!

2 个答案:

答案 0 :(得分:4)

使用字典。在某些语言中,它的另一个名称恰好是Map;它的意味着

参考 Microsoft Scripting Runtime 库,并创建一个功能,其职责是处理该问题:

Private Function GetFullName(ByVal shortName As String) As String
    Static values As Scripting.Dictionary
    If values Is Nothing Then
        Set values = New Scripting.Dictionary
        values.Add "LOL", "Laugh out Loud"
        values.Add "ROFL", "Rolling on the floor laughing"
        '...
    End If

    If values.Exists(shortName) Then
        GetFullName = values(shortName)
    Else
        'raise an error:
        'Err.Raise 5, "GetFullName", "Key '" & shortName & "' was not found."
        '...or otherwise handle the situation for a missing key.
    End If
End Function

缺点是,你在这里将数据代码混合在一起。数据在代码中不属于。您可以使用(隐藏?)工作表来保存包含映射数据的表,并从该表填充字典。这样,当映射需要更改时,您的代码就不会。

答案 1 :(得分:2)

通过 Case Statments

,您可以了解如何使用VBA代码映射工作表名称
Sub Example()   
    Dim WS As Worksheet
    Dim OutputString As String
    OutputString = ""

    For Each WS In ThisWorkbook.Worksheets
        Select Case WS.Name
            Case "ROFL"
                OutputString = "Rolling on floor laughing"
            Case "LOL"
                OutputString = "Laugh out loud"
        End Select

        'Do something
        If OutputString <> "" Then
            MsgBox "Output for desired name: " & OutputString
            OutputString = ""
        End If            
    Next WS   
End Sub
相关问题