Option Explicit
Private Const CELL_MENU_TAG As String = "fdbcTool_セル操作"
'---------------------------------------------------------------------------------------------------
'【処 理 名】ワークブックオープンイベント
'【処理概要】ワークブックオープン時の処理
'【引 数】なし
'【返 却 値】なし
'---------------------------------------------------------------------------------------------------
Private Sub Workbook_Open()
Call addCellMenue
End Sub
'---------------------------------------------------------------------------------------------------
'【処 理 名】セルにメニュー追加
'【処理概要】セルの右クリックメニューを追加する
'【引 数】なし
'【返 却 値】なし
'---------------------------------------------------------------------------------------------------
Private Sub addCellMenue()
Dim cmdBar As CommandBar
Dim cmdBarCtrl As CommandBarControl
Set cmdBar = Application.CommandBars("Cell")
'当ツールで追加したメニューが残っている場合、削除する
For Each cmdBarCtrl In cmdBar.Controls
If cmdBarCtrl.Tag = CELL_MENU_TAG Then
cmdBarCtrl.Delete
End If
Next
Set cmdBarCtrl = cmdBar.Controls.Add(Type:=msoControlPopup, Temporary:=True)
With cmdBarCtrl
.Caption = "セル操作"
.Tag = CELL_MENU_TAG
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
End With
End Sub
Option Explicit
'---------------------------------------------------------------------------------------------------
'【処 理 名】小文字⇒大文字
'【処理概要】小文字を大文字に変換
'【引 数】なし
'【返 却 値】なし
'---------------------------------------------------------------------------------------------------
Public Sub convToUpperCase()
Call StringConvert(vbUpperCase)
End Sub
'---------------------------------------------------------------------------------------------------
'【処 理 名】大文字⇒小文字
'【処理概要】大文字を小文字に変換
'【引 数】なし
'【返 却 値】なし
'---------------------------------------------------------------------------------------------------
Public Sub convToLowerCase()
Call StringConvert(vbLowerCase)
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 convToWide()
Call StringConvert(vbWide)
End Sub
'---------------------------------------------------------------------------------------------------
'【処 理 名】初期処理
'【処理概要】初期設定を行う
'【引 数】なし
'【返 却 値】なし
'---------------------------------------------------------------------------------------------------
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
'---------------------------------------------------------------------------------------------------
'【処 理 名】文字変換
'【処理概要】文字を変換する
'【引 数】[I] ByVal prm As Long
'【返 却 値】なし
'---------------------------------------------------------------------------------------------------
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