2017-02-13 79 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 –