「セルごとにサブルーチン呼び出し」メソッド のバグを修正しました

目次
今回の主題のプログラムの実行結果画面

今回、議題にしている日本語VBAプログラムの期待する実行結果の画面は上図のようになります。
バグの出ていたプログラムと原因
バグの出ていたプログラムの日本語VBAコードは以下のようなコードです。
Public Sub 先頭行に第n月挿入() Dim w_整数 As 整数 Set w_整数 = h_変数取得.整数 w_整数.接頭辞を設定 "第" w_整数.接尾辞を設定 "月" g_道具.セル.選択範囲(, , 1, 0).セルごとにサブルーチン呼び出し "月埋める", w_整数 Set w_整数 = Nothing End Sub Public Sub 月埋める(w_セル As セル, w_整数 As 整数) If w_セル.値 = "" Then w_整数.増やす w_セル.値 = w_整数.文字列化 End If End Sub
上記のうち、
g_道具.セル.選択範囲(, , 1, 0).セルごとにサブルーチン呼び出し "月埋める", w_整数
が、バグで動作していませんでした。
原因はアドイン側で、サブルーチン”月埋める”の存在するワークブック名がわからなかったためです。
そのため、”月埋める”を呼び出すことができていませんでした。
また、その直接の原因は、日本語VBAのデバッグを、アドイン内部の日本語VBAコードで行っていたためです。
ver0.12までアドイン側でデバッグを行っていました。
しかし、アドインの外側では今回のような問題や、ver0.13の時に出ていた「数値クラス」や「文字列クラス」がアドインの外で生成できないバグなどが出るのに、アドイン側だけでデバッグ・テストしてもエラーとならず、デバッグできない、という問題がありました。
対策
そこで、現在ベクターに公開申請中のver0.13では、”月埋める”などのサブルーチンが、「現在のワークブック」に存在するものと仮定して、”月埋める”などのサブルーチンを呼び出すことにしています。
そのため、下記日本語VBAのコードは、ver0.13では動作しますし、動作確認済みです。
Public Sub 先頭行に第n月挿入() Dim w_整数 As 整数 Set w_整数 = h_変数取得.整数 w_整数.接頭辞を設定 "第" w_整数.接尾辞を設定 "月" g_道具.セル.選択範囲(, , 1, 0).セルごとにサブルーチン呼び出し "月埋める", w_整数 Set w_整数 = Nothing End Sub Public Sub 月埋める(w_セル As セル, w_整数 As 整数) If w_セル.値 = "" Then w_整数.増やす w_セル.値 = w_整数.文字列化 End If End Sub
また、「セルごとにサブルーチン呼び出し2」というメソッドで、第1引数に、「ワークブック名 & “!” & サブルーチン名」を指定して、ワークブック名を直接指定できるようにもしています。
Public Sub 先頭行に第n月挿入() Dim w_整数 As 整数 Set w_整数 = h_変数取得.整数 w_整数.接頭辞を設定 "第" w_整数.接尾辞を設定 "月" g_道具.セル.選択範囲(, , 1, 0).セルごとにサブルーチン呼び出し2 g_道具.ワークブック名(False) & "!" & "月埋める", w_整数 Set w_整数 = Nothing End Sub Public Sub 月埋める(w_セル As セル, w_整数 As 整数) If w_セル.値 = "" Then w_整数.増やす w_セル.値 = w_整数.文字列化 End If End Sub
「g_道具.ワークブック名(False) 」の箇所は適宜、「WorkBook(2).Name」や、「WorkBook(“商品データ”).Name」など、ご自分のワークブック名に置き換えられてください。
「g_道具.ワークブック名(False) 」はそのままでは、「現在使っているワークブックの名前」である「ActiveWorkBook.Name」を返します。
結論
今回のバグを反省し、
- デバッグは、アドイン側で行うことはせず、「サンプルコード.xlsm」などアドインの外側で行う。そのことでよりユーザー側での使用に寄ったデバッグができる。
ということを行うことにします。
なお、上記バグを修正した「エクセルVBA日本語化」ver0.13 beta バージョンは、以下のURLからダウンロードできます。

KaBA@フリーランス修行中

最新記事 by KaBA@フリーランス修行中 (全て見る)
- 日本語関数で 今の日時や今日の日付を 求めて表示しよう - 2019年2月2日
- 日本語VBAでセルの 背景色の光の三原色の 成分を求めてみよう - 2019年1月14日
- 「エクセルVBA日本語化」 ver 0.16.0がベクターで 公開されました - 2018年9月12日
- ハッシュを使って 辞書を作ろう JSONも使おう - 2018年9月9日