Private関数(メソッド)でもイミディエイト・ウインドウで動作確認できる

Private関数(メソッド)でもイミディエイト・ウインドウで実行できる

ExcelVBAer (id:x1xy2xyz3) さんからの助言

akashi-keirin.hatenablog.com

コチラの記事に、ExcelVBAer (id:x1xy2xyz3) さんからコメントをいただいた。

イミディエイト用の方法で、Private←→Publicという方法の他に、[モジュール名].[関数名]で実行するという方法もありますよ~ 参考まで~

おおっ! そうだったのか!

……というわけで、早速実験。

実験

このとき作ったcreateNumberFilledByZero関数を使う。

リスト1
Private Function createNumberFilledByZero(ByVal numberOf As Long, _
                                         ByVal currentNumber As Long) As String
On Error GoTo errorHandler
  Dim maxNum As Long
  maxNum = numberOf
  Dim objNumber As Long
  objNumber = currentNumber
  Dim formatString As String
  Dim n As Integer
  Dim i As Integer
  n = Len(CStr(maxNum)) - 1
  formatString = String(n, "0") & "#"
  createNumberFilledByZero = Format(objNumber, formatString)
  Exit Function
errorHandler:
  createNumberFilledByZero = ""
End Function

前回「Public」にしていたアクセス修飾子を今回は「Private」にしている。

実行

で、イミディエイト・ウインドウに、

?module1.

まで打ち込んでみると、

f:id:akashi_keirin:20170805185924j:plain

げげっ! Intellisenseでお目当てのcreateNumberFilledByZero関数が出てこねえじゃん……!

ちなみに、

f:id:akashi_keirin:20170805190015j:plain

module1にはこれだけのプロシージャがあるはずなのです。

んでも、めげずに

?module1.createnumberfilledbyzero(10000,15)

と打ち込んで[Enter]!

結果

f:id:akashi_keirin:20170805190024j:plain

おおっ! ちゃんと実行されとる!

おわりに

……というわけで、ExcelVBAer (id:x1xy2xyz3) さんのおっしゃったとおり、Private関数(メソッド)でも、イミディエイトで動作確認することは可能。

実は、プログラミングの勉強にばかりうつつを抜かしているうちに、本業についての勉強不足が深刻な状態になっていたということに気づきまして……。

このところ、必死でその遅れを取り戻そうとしていたので、ブログの更新もままならず、御礼を申し上げるのが遅くなってしまいました。

ExcelVBAer (id:x1xy2xyz3) さん、ありがとうございました。

@akashi_keirin on Twitter