思うんですけど、見つけられなかったので書いてしまいました。
書いてしまったので、備忘で公開しておきます。
何かの後始末的処理の中で、ひたすら変数をクリアしていく、という不毛なコードが延々と続くときってありませんか?
たとえばこんな感じ。
' 後始末 Set obj1 = Nothing Set obj2 = Nothing str1 = vbNullString str2 = vbNullString i = 0 j = 0 ' 以下略
もうこれはあまりにもかったるいので、まとめて片付けたいわけです。
こんな風に。
' 後始末 ClearVars obj1, obj2, str1, str2, i, j, ... ' 以下略
では、コード。
' 変数を初期化します。 ' 配列と構造体は受け付けないので、注意。 ' 使用例: ClearVars db, rs, myName, i, j, ... Public Sub ClearVars(ParamArray args() As Variant) If IsMissing(args) Then Exit Sub Dim i As Integer Dim t As VbVarType ' For Each だとオブジェクトを初期化できないので、For ループにする For i = LBound(args) To UBound(args) t = VarType(args(i)) If t And vbArray Then Err.Raise 5 ' プロシージャの呼び出し、または引数が不正です。 Else Select Case t Case vbObject Set args(i) = Nothing Case vbString args(i) = vbNullString Case vbBoolean, vbDate, vbByte, vbInteger, vbLong, _ vbSingle, vbDouble, vbCurrency, vbDecimal args(i) = 0 Case vbVariant args(i) = vbEmpty Case Else Err.Raise 5 ' プロシージャの呼び出し、または引数が不正です。 End Select End If Next End Sub
それもうあるよ、というのをご存知の方は、コメントで教えてください。
似たようなものがあったなぁと思ったら、YU-TANGさんのサイトの情報でした・・・
返信削除※コントロールをまとめて扱う関数
http://www.f3.dion.ne.jp/~element/msaccess/AcTipsC_Function.html
お決まりの処理なので、1行でスパッとできたら本当に助かりますね。いつだったか、dbをクローズしなかった為に、ファイルの残骸をAccess本体が掴みっぱなしで、無駄に悩んだことがありました。
コメントありがとうございます。スパムフィルタに引っかかっていたので、気づくのが遅れてすみません。たぶん URL が入っていたのでスパム扱いに…ってウチの URL じゃん! 頼むよ Blogger!
返信削除でもねー、こういう機構は言語側で用意しておいてほしいというのが、本音ですね。なんか宣言時に Grouping キーワード付けておけば、InitVars みたいな文でまとめて初期化できるとか。