名前

2017-02-13 8 views
-2

は、私は、そのような私が通過し、応じて、左側のヘッダーに完全なフレーズを入力する必要がマクロを必要名前

「またはROFL「LOL」として略称でシートを持っ省略シート名に基づいて、セル

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

こんにちは、あなたの応答をありがとう。私は自分の個人的なマクロで他の人にこれを配布する計画を隠していてもmap/refシートを使うことはできません。 (マクロについて何も知らない人のために)私はそれらの人々のためにできるだけシンプルに保つために努力しています。再度、感謝します! –

+1

どうやって配布していますか? Excelアドイン(.xlam)として?Excelアドイン*はワークブックです。ワークシートを使用してデータを保存することもできます。申し訳ありませんが、問題が何であるかはわかりません。 –

+0

私の計画はxlsbです –