2017-08-10 9 views
1

私は、いくつかのコントロールを持つフォームを持っています。しかし、ユーザーがオプションボタンを「Not Due」とマークすると、これらのフィールドの多くは表示されないように設定されます。最終的には、これらの隠しフィールドに値を格納することは望ましくありませんが、フォームが保存されるまで値が消えないようにします(誤って "not due"にヒットした場合や、 )。これは私が持っているコードです。フォームが更新される前にすべてのコントロールで実行されるように設定されています。コントロールが表示されない場合は、値をnullに設定してください(VBAにアクセス)

「オブジェクトはこのプロパティまたはメソッドをサポートしていません」と表示され、デバッグ時にctl.Value = nullが強調表示されます。私はこの仕事をするために何ができますか?

Dim ctl As Control 
    If Me.optPayDue = 2 Then 
     For Each ctl In Me.Controls 
      If ctl.Visible = False Then ctl.Value = Null 
     Next ctl 
    End If 
+0

かなり慣れていない0に設定されますについては

Dim ctl As Control If Me.optPayDue = 2 Then For Each ctl In Me.Controls If ctl.ControlType = acTextBox and ctl.Visible = False Then ctl.Value = Null Next ctl End If 

次私の...マグカップから話すが、私は 'ヌル'がコントロールを割り当てる有効な値だとは思わない。また 'ctl.Visible = False Then'は' If not ctl.Visible Then'です。 –

答えて

2

Controlsコレクションに含ま物事がValue性質を持っていないなどのサブフォーム、ラベル、EmptyCells、のようなものですので、あなたがこのエラーを取得している理由です。

値を設定しているものがValueプロパティを持っていることを確認してから、それに作用することを確認する必要があります。

Dim ValueControls As New Dictionary 
ValueControls.Add "TextBox", "TextBox" 
ValueControls.Add "CheckBox", "CheckBox" 
ValueControls.Add "ComboBox", "ComboBox" 
ValueControls.Add "ListBox", "ListBox" 
ValueControls.Add "OptionButton", "OptionButton" 

Dim ctl As Control 
If Me.optPayDue = 2 Then 
    For Each ctl In Me.Controls 
     If Not ctl.Visible and ValueControls.Exists(TypeName(ctl)) Then 
      ctl.Value = Null 
     End If 
    Next ctl 
End If 

あなたはMicrosoft Scripting Runtimeへの参照を追加する必要がありますDictionaryクラス(C:\ WINDOWS \ SYSWOW64 \のscrrun.dll)を使用するには、これを行うための別の方法を取り除くことです

enter image description here

+0

Dim ValueControls新しい辞書が私にコンパイルエラー "ユーザー定義型が定義されていません"を与えています:/ – Eleyna

+0

@Eleyna oh right、editを参照してください。 – Brad

+0

[ツール]> [参照]をクリックしてMicrosoft Scripting Runtimeをチェックするだけで、このプログラムは他のユーザーのコンピュータで正常に機能しますか、コード内で明示的に参照する必要がありますか?それは動作しますが、私のコードでそれを参照する方法を考え出すのに苦労しています:) – Eleyna

1

をforループに.Valueを持たないコントロール。仮定すると、あなたが行うことができますテキストボックスだけされて、チェックボックスのようなもの制御タイプがacCheckBoxになり、値がそう私は多分Accessで

+0

これはあまりにも、ありがとう! – Eleyna

関連する問題