我的张贴有缩写名称,例如“LOL”或ROFL“
我需要宏我必须通过并根据工作表名称输入左侧标题中的完整短语。
我知道如何使用 activesheet.name 进行此操作,但我不知道如何写出全名。我怀疑它需要一个案例和某种循环。
IE“LOL” - >标题名称将是“大笑”
“Rofl” - >标题名称将是“在地板上滚动笑”
谢谢!
答案 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