カテゴリー
Microsoft

【Excel VBA】Select Case の応用的な使い方。年月日文字列にスラッシュを入れる関数を例にして。

ポイント

  • Select Case value で value が何であるのか、大小、範囲を評価できる。
  • 別の変数など任意の判定は、使用が想定されていない(と思う)。
  • Select Case True とすれば、その後の Case で任意の判定を行うように使える。

VBA コード

  • AddYmdSlash 関数は Select Case の使用例として書いた。
  • AddYmdSlash 関数は文字列の長さを評価してスラッシュを入れているだけなので、厳密な変換はできない。
    Option Explicit
    
    ''' <summary>
    ''' 年月日文字列の人と月の間、月と日の間に半角スラッシュを挿入して返します。
    ''' 引数が "0" の場合は空文字を返します。
    ''' </summary>
    ''' <param name="ymd">年月日文字列</param>
    ''' <returns>変換後文字列</returns>
    Public Function AddYmdSlash(ByVal ymd As String) As String
        ' (yy)yymmdd ⇒ (yy)yy/mm/dd
        ' 0 ⇒ 空文字
        ' それ以外 ⇒ そのまま
        Select Case True
            Case Len(ymd) = 6: ymd = Mid(ymd, 1, 2) & "/" & Mid(ymd, 3, 2) & "/" & Mid(ymd, 5, 2)
            Case Len(ymd) = 8: ymd = Mid(ymd, 1, 4) & "/" & Mid(ymd, 5, 2) & "/" & Mid(ymd, 7, 2)
            Case ymd = "0": ymd = ""
            Case Else: ' 変換しない
        End Select
        AddYmdSlash = ymd
    End Sub
    
    Public Sub Test()
        Debug.Print AddYmdSlash("20160329")
        Debug.Print AddYmdSlash("160329")
        Debug.Print AddYmdSlash("0")
        Debug.Print AddYmdSlash("適当な文字列")
    End Sub
    

結果

2016/03/29
16/03/29

適当/な文/字列

おわりに

今回の投稿出だした例ですけれども、最初は Format 関数を使えばスラッシュを入れられないかしらと試行錯誤しておりました。

どうやら、できない、とわかりましたの><。

そこでいろいろ試す中で得られた知見がございましたので、ノートいたしました。

参考ページです。ありがとう存じます!

以上です。

コメントを残す