まずアドインの作り方はこちら
マクロをアドインにして他のブックで使用する
さすがはまちゃんですね。マクロ用アドインは簡単に呼び出せないので、
クイックアクセスツールバーに、アドインを表示します
これがポイント
どういうのを登録する?
正直あまり細かい作業は向かないと思います。
また数式をアドインに登録すると、アドインがないとエラーになってしまいます。
このため、アドインに登録するマクロは
1.操作系
2.計算が完結する
このようなものに絞られてくると思います。今日は長年苦しんできた
文字列を数式化するマクロを載せておきます。
EXCELで数式を入力するとき、ついうっかりイコールを忘れて
4.53
などと入力し、F2を押してイコールを入れなおしたことはありませんか?
今回はこんな風に入力してしまったセルの文字列を自動的に数式に変えて
=4.53
として13.5が表示されるというマクロです。
もちろんこのマクロは
A1*B1
といった入力でも式に変換します。
Sub ChangeStringToFormula()
''QIIQ from Qiita ver2.0(Update 3/8/2017)
''This is for Excel Macro Addin
''1. Make Macro Addin
''2. Take on This Procedure
''3. Take on Quick Access Toolbar
''4.Select strings Like formula ex "A1*B1"
''5.Run This Macro become "=A1*B1"
Dim wb As Workbook: Set wb = ThisWorkbook
Dim ws As Worksheet: Set ws = ActiveSheet
Dim bl As Boolean, i As Long
Dim Rng As Range
Dim str As String
Dim re: Set re = CreateObject("VBScript.RegExp")
For Each Rng In Selection
If Rng.Value = CStr(Rng.Cells.Formula) Then bl = False Else bl = True
With re
.Global = True
.Pattern = "\d"
If .test(rng.Value) = False Then bl = True
End With
If bl = False Then
str = Rng.Value
'Error Character Delete
str = Replace(Replace(Replace(str, "..", ".", 1, -1, vbTextCompare), ",", "", 1, -1, vbTextCompare), "//", "", 1, -1, vbTextCompare)
Rng.ClearContents
Rng.NumberFormatLocal = "G/標準" 'Change Country Setting
On Error Resume Next
Rng.Formula = "=" & str
If Err.Number <> 0 Then
Rng.Value = str
End If
End If
Next
Set Re = Nothing
End Sub
たとえば小数点を2度打ったようなときそのままだとエラーになりますが、
これは小数点を1つに置換して式に変えます。
また複数のセルを選択して、一気に変換できます。
長所
これはミスのリカバーだけでなく、数式が正しいか確認してから数式に変換できるので、数式自体のミスを防ぐことができます。
短所
関数(Round)とかは無理です。しかし関数は@ を入力すると自動的に入力支援され、TABで入力が確定するので、これはあまり問題がないと思います。
また表示形式は標準のままなので、コンマなどは自分で追加するか、マクロをいじってください。
ただクィックアクセスツールバー用なので、あまり凝った設定にすると一般的に使えなくなってしまいます。
操作イメージ
Imageは普通のマクロに登録しています
数式が文字として入力されました
マウスで反転させて選択し
マクロを起動します。クィックアクセスツールバーに登録していたらボタンを押すだけですね。
とりあえず実行させると数式になりました。