コピペで使えるVBAのコード置き場

セル内の文字列の変換いろいろ

筆箱にVBAのカンニングペーパーを入れる係のみすくです。こんにちは。

最近アドインにはまってます。

セル上で右クリックしたときに、
セルの文字列を変換するあれこれなメニューを追加します。
複数セルでもOKです。

これをどうすればアドイン化できるかは、
他のサイト見てください。



'--------------------------------------------------------------------------------
' 関 数 名:ワークブックオープンイベント
' 処理概要:
' 引    数:
' 返 却 値:
'--------------------------------------------------------------------------------
Private Sub Workbook_Open()
    Dim cmdBar As CommandBar
    
    Set cmdBar = Application.CommandBars("Cell")
    cmdBar.Reset
    
    Call setCtrlCellMenue(cmdBar)
End Sub

'--------------------------------------------------------------------------------
' 関 数 名:セル操作右クリックメニュー追加
' 処理概要:セルの右クリックメニューに、「セル操作」を追加する。
' 引    数:[O]ByRef cmdBar As CommandBar
' 返 却 値:なし
'--------------------------------------------------------------------------------
Private Sub setCtrlCellMenue(ByRef cmdBar As CommandBar)
    Dim cmdBarCtrl As CommandBarControl
    Set cmdBarCtrl = cmdBar.Controls.Add( _
        Type:=msoControlPopup, Temporary:=True)
    
    With cmdBarCtrl
        .Caption = "セル操作"
        
        With .Controls.Add
            .Caption = "小文字⇒大文字"
            .OnAction = "convToUpperCase"
            .FaceId = 2476
        End With
        
        With .Controls.Add
            .Caption = "大文字⇒小文字"
            .OnAction = "convToLowerCase"
            .FaceId = 2476
        End With
        
        With .Controls.Add
            .Caption = "半角⇒全角"
            .OnAction = "convToWide"
            .FaceId = 2476
            .BeginGroup = True
        End With
        
        With .Controls.Add
            .Caption = "全角⇒半角"
            .OnAction = "convToNarrow"
            .FaceId = 2476
        End With
    
        With .Controls.Add
            .Caption = "ひらがな⇒カタカナ"
            .OnAction = "convToKatakana"
            .FaceId = 2476
            .BeginGroup = True
        End With
    
        With .Controls.Add
            .Caption = "カタカナ⇒ひらがな"
            .OnAction = "convToHiragana"
            .FaceId = 2476
        End With
        
        With .Controls.Add
            .Caption = "スネーク⇒キャメル"
            .OnAction = "convToCamel"
            .FaceId = 2476
            .BeginGroup = True
        End With

    End With
End Sub
Option Explicit

'--------------------------------------------------------------------------------
' 関 数 名:初期処理
' 処理概要:初期設定を行う
' 引    数:なし
' 返 却 値:なし
'--------------------------------------------------------------------------------
Private Sub init()
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Application.StatusBar = "...処理中"
End Sub

'--------------------------------------------------------------------------------
' 関 数 名:終期処理
' 処理概要:後始末
' 引    数:なし
' 返 却 値:なし
'--------------------------------------------------------------------------------
Private Sub term()
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
    Application.StatusBar = False
End Sub

'--------------------------------------------------------------------------------
' 関 数 名:小文字⇒大文字
' 処理概要:小文字を大文字に変換
' 引    数:なし
' 返 却 値:なし
'--------------------------------------------------------------------------------
Public Sub convToUpperCase()
    Call StringConvert(vbUpperCase)
End Sub

'--------------------------------------------------------------------------------
' 関 数 名:大文字⇒小文字
' 処理概要:大文字を小文字に変換
' 引    数:なし
' 返 却 値:なし
'--------------------------------------------------------------------------------
Public Sub convToLowerCase()
    Call StringConvert(vbLowerCase)
End Sub

'--------------------------------------------------------------------------------
' 関 数 名:半角⇒全角
' 処理概要:半角文字を全角文字に変換
' 引    数:なし
' 返 却 値:なし
'--------------------------------------------------------------------------------
Public Sub convToWide()
    Call StringConvert(vbWide)
End Sub

'--------------------------------------------------------------------------------
' 関 数 名:全角⇒半角
' 処理概要:全角文字を半角文字に変換
' 引    数:なし
' 返 却 値:なし
'--------------------------------------------------------------------------------
Public Sub convToNarrow()
    Call StringConvert(vbNarrow)
End Sub

'--------------------------------------------------------------------------------
' 関 数 名:ひらがな⇒カタカナ
' 処理概要:ひらがなをカタカナに変換
' 引    数:なし
' 返 却 値:なし
'--------------------------------------------------------------------------------
Public Sub convToKatakana()
    Call StringConvert(vbKatakana)
End Sub

'--------------------------------------------------------------------------------
' 関 数 名:カタカナ⇒ひらがな
' 処理概要:カタカナをひらがなに変換
' 引    数:なし
' 返 却 値:なし
'--------------------------------------------------------------------------------
Public Sub convToHiragana()
    Call StringConvert(vbHiragana)
End Sub

'--------------------------------------------------------------------------------
' 関 数 名:スネークケース⇒キャメルケース
' 処理概要:スネークケースをキャメルケースに変換
' 引    数:なし
' 返 却 値:なし
'--------------------------------------------------------------------------------
Public Sub convToCamel()
    Dim rng As Range
    Dim elements As Variant
    Dim camel As String
    Dim index As Long
    
    Call init
    
    For Each rng In Selection
        elements = Split(rng.Value, "_")
        camel = elements(1)
        
        For index = 2 To UBound(buf)
            camel = camel + StrConv(elements(index), vbProperCase)
        Next index
        rng.Value = camel
    Next rng
    
    Call term
End Sub

'--------------------------------------------------------------------------------
' 関 数 名:文字変換
' 処理概要:文字を変換
' 引    数:なし
' 返 却 値:なし
'--------------------------------------------------------------------------------
Private Sub StringConvert(ByVal prm As Long)
    Dim rng As Range
    
    Call init
    
    For Each rng In Selection
        rng.Value = StrConv(rng.Value, prm)
    Next rng
    
    Call term
End Sub
参考 StrConv 関数msdn

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です