f:id:ainekurainenahatomujiku:20170729153914p:plain

f:id:ainekurainenahatomujiku:20170729154102p:plain

f:id:ainekurainenahatomujiku:20170729154129p:plain

f:id:ainekurainenahatomujiku:20170729154215p:plain

f:id:ainekurainenahatomujiku:20170729154306p:plain

f:id:ainekurainenahatomujiku:20170729154329p:plain

f:id:ainekurainenahatomujiku:20170729154411p:plain

f:id:ainekurainenahatomujiku:20170729154439p:plain

f:id:ainekurainenahatomujiku:20170729154454p:plain

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// スネークケースからキャメルケースへ変換
// 第1引数:【必須】変換対象セルを指定
// 第2引数:【任意】先頭文字を大文字にするかフラグ 初期値OFF
// 戻り値 : SnakeToCamel
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Public Function SnakeToCamel(ByVal val As String, Optional ByVal isFirstUpper As Boolean = False) As String

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 変数宣言
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Dim ret As String 戻り値
Dim i As Long ループ用カウンタ
Dim snakeSplit As Variant 1次元配列

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 指定したデリミタで分割
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
snakeSplit = Split(val, "_") アンダースコア区切りで分割&1次元配列として格納

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 取得した配列の要素数分だけ以下の処理を繰り返す
// ①対象要素の1文字目を切り取り
// ②対象要素の2文字目から以降を全て切り取り
// ③処理結果①と②を文字列結合
// ④指定されたアルファベットの小文字を大文字に変換
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
For i = LBound(snakeSplit) To UBound(snakeSplit)
ret = ret & UCase(Mid(snakeSplit(i), 1, 1)) & Mid(snakeSplit(i), 2, Len(snakeSplit(i)))
Next

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 変換対象セルの先頭文字を大文字にするか判定
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

大文字にする場合
If isFirstUpper Then

戻り値にそのまま設定
SnakeToCamel = ret

大文字にしない場合【第2引数を省略した場合】
Else

①対象要素の1文字目を切り取り
②対象要素の2文字目から以降を全て切り取り
③指定されたアルファベットの大文字を小文字に変換
④戻り値に処理結果を設定
SnakeToCamel = LCase(Mid(ret, 1, 1)) & Mid(ret, 2, Len(ret))

End If

End Function

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// キャメルケースをスネークケースに変換
// 第1引数:【必須】変換対象セルを指定
// 第2引数:【任意】先頭文字を大文字にするかフラグ 初期値OFF
// 戻り値 : CamelToSnake
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Public Function CamelToSnake(ByVal val As String, Optional ByVal isFirstUpper As Boolean = False) As String

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 変数宣言
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Dim ret As String 戻り値
Dim i As Long ループ用カウンタ
Dim valLen As Long 変換対象セルの文字数

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 変換対象セルの文字数取得
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
valLen = Len(val)

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 取得した配列の要素数分だけ繰り返す
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
For i = 1 To valLen

  対象要素の各文字が大文字である場合
  If UCase(Mid(val, i, 1)) = Mid(val, i, 1) Then

    対象要素の先頭文字である場合
    If i = 1 Then

     アンダースコアは付与しない
    ret = ret & Mid(val, i, 1)

    対象要素の2文字目以降でかつ対象要素の前の文字が大文字である場合
    ElseIf i > 1 And UCase(Mid(val, i - 1, 1)) = Mid(val, i - 1, 1) Then

     アンダースコアは付与しない
    ret = ret & Mid(val, i, 1)

    対象要素の文字が小文字の場合
    Else

     アンダースコアを付与
    ret = ret & "_" & Mid(val, i, 1)

    End If

  対象要素の各文字が小文字である場合
  Else

   アンダースコアは付与しない
  ret = ret & Mid(val, i, 1)

End If

Next

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 変換対象セルの先頭文字を大文字にするか判定
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

大文字にする場合
If isFirstUpper Then

①指定されたアルファベットの小文字を大文字に変換
②戻り値に処理結果を設定
CamelToSnake = UCase(ret)

大文字にしない場合【第2引数を省略した場合】
Else

①指定されたアルファベットの大文字を小文字に変換
②戻り値に処理結果を設定
CamelToSnake = LCase(ret)

End If

End Function