0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

excel アドイン向けマクロ(1)入力した文字列を式にする EXCEL VBA for Addin "Make Strings Formula"

Last updated at Posted at 2017-03-07

まずアドインの作り方はこちら

マクロをアドインにして他のブックで使用する
さすがはまちゃんですね。マクロ用アドインは簡単に呼び出せないので、
クイックアクセスツールバーに、アドインを表示します
これがポイント

どういうのを登録する?

正直あまり細かい作業は向かないと思います。
また数式をアドインに登録すると、アドインがないとエラーになってしまいます。
このため、アドインに登録するマクロは
1.操作系
2.計算が完結する
このようなものに絞られてくると思います。今日は長年苦しんできた
文字列を数式化するマクロを載せておきます。
EXCELで数式を入力するとき、ついうっかりイコールを忘れて
4.53
などと入力し、F2を押してイコールを入れなおしたことはありませんか?
今回はこんな風に入力してしまったセルの文字列を自動的に数式に変えて
=4.5
3
として13.5が表示されるというマクロです。
もちろんこのマクロは
A1*B1
といった入力でも式に変換します。

ChangeStringToFormula.bas
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は普通のマクロに登録しています
数式が文字として入力されました
2017-03-07 (1).png
マウスで反転させて選択し
2017-03-07 (2).png
マクロを起動します。クィックアクセスツールバーに登録していたらボタンを押すだけですね。
2017-03-07 (3).png
とりあえず実行させると数式になりました。
2017-03-07 (4).png

0
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?