1

私のAccessデータベースにはGlobal allowEditing as Boolean、モジュール(Main)で定義されたグローバル変数()があります。この変数を設定し、後でフォームレベルで使用して、いくつかのボタンを無効にします。私はこれに問題があります。

For Each ctl In Me.Controls
    ctl.Enabled = False            'Works for True or False            
    ctl.Enabled = allowEditing     'Throws error               
  Next

スローされるエラーは次のとおりです。

実行時エラー「438」:オブジェクトはこのプロパティまたはメソッドをサポートしていません。

ここで何が起こっているのでしょうか。ブール値をどのように使用できますか?

4

3 に答える 3

3

ラベルコントロールの有効化など、存在しないプロパティを設定しようとすると、エラー438が発行されます。

これを試して

For Each ctl In Me.Controls
  If TypeOf ctl Is TextBox Then
    ctl.Enabled = False            'Works for True or False
    ctl.Enabled = allowEditing     'Throws error
  End If
Next
于 2012-11-02T17:43:20.583 に答える
1

スコープの問題のように聞こえます。複数のフォーム間でこのブール値をグローバルに使用する場合は、グローバル状態変数を保持するAccessテーブルを作成することをお勧めします。テーブルに対してクエリを実行するだけで、値を取得できます。

于 2012-11-02T17:28:21.050 に答える
1

各コントロールにはControlTypeプロパティがあります。そのプロパティを利用して、プロパティをサポートするコントロールの中から選択したものだけを無効にすることができEnabledます。この手順ではEnabled、チェックボックス、コンボ、リストボックス、およびテキストボックスのプロパティを設定します。

For Each ctl In Me.Controls
    With ctl
        Select Case .ControlType
        Case acCheckBox, acComboBox, acListBox, acTextBox
            .Enabled = allowEditing
        Case Else
            ' pass
        End Select
    End With
Next
于 2012-11-02T19:17:55.947 に答える