2017-02-13 83 views
-2

我有片材与缩写的名字,如“LOL”或ROFL”名称基于缩略表名称

我所需要的宏我要经过,并且根据在左集管将完整短语的小区

我知道如何做到这一点通常与activesheet.name,但我不知道如何写出全名。我怀疑它会需要一个案例和循环

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

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

谢谢!

+1

哪里有缩写名称映射到全名?这意味着你的例子肯定不是*现实世界*。 –

+0

多数民众赞成,我没有。我不想要参考/指南表。如果可能的话,我需要在代码背后进行重新映射。谢谢 –

+0

为什么你不想要一个映射表。只是一个隐藏的标签,有映射?否则,您可以每次将映射加载到字典或数组,然后使用它。其他方式您必须至少输入一次该映射。 –

回答

2

这里有一个想法如何,你可以通过案例Statments

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 
+0

是不是'If OutputString <>“”Then'条件反向?我想我会在'Case Else'块中移动那部分;-) –

+0

@ Mat'sMug我已经调整了我的答案。你是指这样的事情吗?我非常感谢这个提示,因为我自己每天都在学习。 – Brad

+0

哦,对不起 - 我完全误读了意图!我认为'Select Case'之后的条件块用于处理未找到匹配的情况! :S –

4

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

参考的Microsoft脚本运行时库,并作出其唯一的责任是处理一个函数:

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 

不足之处是,嗯,你是混合数据代码这里。数据不代表属于代码。你可以有一个(隐藏的?)工作表来保存带有映射数据的表格,并从该表格填充字典。这样当映射需要改变时,你的代码不会。

+0

嗨,谢谢你的回应。我不能使用地图/工作表甚至隐藏的BC我打算分发这个给他人在他们的个人宏。这种方式可以在任何公开的文档中使用,而无需额外的工作(对于那些对宏不了解的人),我试图尽可能简化这些人。再次感谢! –

+1

你如何分发?作为Excel加载项(.xlam)?Excel加载项*是一个工作簿,您可以很好地使用它的工作表来存储数据。对不起,我没有看到问题在这里。 –

+0

我的计划是一个xlsb –