#670 | プロパティがあるかどうか調べるサンプルプロシージャ | VBA | |
これはアプリケーションの処理としてはあまりないかもしれませんが、データベースの作成作業において、VBAのプログラムを使って複数のフォームやレポートあるいはその中に配置された複数のコントロールのプロパティを一度に検索したり、一括置換したりといったときに使えるサンプルプロシージャです。 たとえば、「Caption/標題」というプロパティは、フォームやラベルコントロールにはありますが、テキストボックスコントロールにはありません。テキストボックスの「.Caption」を参照しようとするとエラーが発生します。 そのようなときは、あらかじめ”ラベルだったら”プロパティ値を参照し、”テキストボックスだったら”参照しないといった分岐処理で回避することもできます。しかしこのプロシージャで事前チェックすることによって、そのような判断やプロパティの有無を事前に知っておく必要もありません。 下記のサンプルプロシージャでは、第1引数に指定したオブジェクトが、第2引数に指定した名前のプロパティを持っていればそのプロパティ値を、持っていなければNullを返します。 Public Function IsHaveProp(obj As Object, strPropName As String) As Variant On Error Resume Next IsHaveProp = obj.Properties(strPropName) If Err.Number > 0 Then IsHaveProp = Null Err.Clear End If End Function ■呼び出し例 ■プロパティを一括置換するときの使用例 次の例では、「frm仕入先」フォーム内の種類を問わずすべてのコントロールを調べ、「Caption/標題」プロパティを持っているコントロールについて、標題の中の文字列を『”会社名”→”取引先名”』に一括置換しています。 Sub Sample() Dim ctl As Control Dim varCaption As Variant 'frm仕入先のすべてのコントロールを調べる For Each ctl In Forms!frm仕入先 'Captionプロパティを取得 varCaption = IsHaveProp(ctl, "Caption") If Not IsNull(varCaption) Then 'Captionプロパティがあったら置換する ctl.Caption = Replace(varCaption, "会社名", "取引先名") End If Next ctl End Sub
|
|||
|
Copyright © T'sWare All rights reserved |