![]()
筆箱に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
最近のコメント


コメントを残す