![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
アクセスのフォームの、フォームヘッダーに検索用テキストボックスとコンボボックスがあり、
詳細エリアにレコードソース(コントロールソース)に紐付いたテキストボックスが複数あります。
フォームヘッダーのフィルタを解除するコマンドを実行して、
フォームヘッダーのテキストボックスとコンボボックスをnullにしたいのですが、
vbaで「もしフォームヘッダーなら」ってするにはどうすればいいでしょうか?
フォームヘッダーのコントロール名も詳細エリアのコントロール名も
区別のないコントロール名でなのでコントロール名で条件分岐をすることは不可能です。
Private Sub フィルタを解除コマンド_Click()
Dim ctl As Control
For Each ctl In Me.Controls
If (ctl.ControlType = acTextBox) Or (ctl.ControlType = acComboBox) Then
'ここで、もしフォームヘッダーにコントロールがあるのならってしたい
Me.Controls(ctl.Name) = Null
End If
Next ctl
Me.Form.FilterOn = False
End Sub
このコードに付け加えてくれませんか?
Debug.Print ctl.Name
でコントロール名を取得するとフォームヘッダーも詳細もどちらのコントロール名も取得されてしまいます。
On Error Resume Next
以外でお願いします。
![「もしフォームヘッダーにコントロールがある」の質問画像](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/5/28961066_5497da9a5ef4a/M.jpg)
No.1ベストアンサー
- 回答日時:
> vbaで「もしフォームヘッダーなら」ってするにはどうすればいいでしょうか?
コントロールの「Section」プロパティを確認すればOkです。
Private Sub フィルタを解除コマンド_Click()
Dim ctl As Control
For Each ctl In Me.Controls
If (ctl.ControlType = acTextBox) Or (ctl.ControlType = acComboBox) Then
'フォーム ヘッダは「1」(『詳細』は「0」、フォームフッターは「2」)
If (ctl.Section = 1) Then
'Valueプロパティを使用して、直接入力できます
'(さらに、Valueプロパティは省略可能なので「ctl = Null」でもOk)
ctl.Value = Null
End If
End If
Next ctl
Me.Form.FilterOn = False
End Sub
なお、操作対象がフォームヘッダのみなのでしたら、ループ対象を「Me.Controls」と
する代わりに、「Me.Section(1).Controls」とした方が、ループを行うコントロールが
フォームヘッダ内のコントロールに限定される分、効率的です。
(コントロールのSectionプロパティによる分岐も不要化します)
Private Sub フィルタを解除コマンド_Click()
Dim ctl As Control
'「Me.Section(n)」の「n」は、上のコントロールのSectionプロパティの値と同じ
For Each ctl In Me.Section(1).Controls
If (ctl.ControlType = acTextBox) Or (ctl.ControlType = acComboBox) Then
ctl.Value = Null
End If
Next ctl
Me.Form.FilterOn = False
End Sub
・・・以上です。
For Each ctl In Me.Section(1).Controls
これにしちゃえば、無駄にループしなくていいですね。
いくつもの方法のご提示、ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Visual Basic(VBA) 標準モジュール Public mOnTime As Date Sub sample() '実行プロシ 1 2023/02/22 15:44
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Access(アクセス) チェックボックスにチェックが入った後の挙動 1 2022/08/21 12:39
- Visual Basic(VBA) VBA初心者です。 VBAで行単位で条件付き書式の色をカウントしたいです。 大量のデータがあるExc 3 2022/06/08 10:00
- Visual Basic(VBA) VBA初心者です。 VBAで行単位で条件付き書式の色をカウントしたいです。 大量のデータがあるExc 3 2022/06/08 10:02
- Visual Basic(VBA) 【VBAエラー】Nextに対するForがありません 対策について 5 2022/11/21 21:26
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
このQ&Aを見た人はこんなQ&Aも見ています
-
「環境が人を育てる」って本当?環境によって人格や生き方は本当に変わるのか
環境が人生に与える影響は実際どれほどのものなのか、専門家の田宮由美さんに伺った。
-
コントロールの存在確認
Visual Basic(VBA)
-
Access サブフォームでの選択行の取得
その他(データベース)
-
AccessVBA SetFocusとGoToControlが正常に作動しない
Access(アクセス)
-
-
4
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
5
[Access]帳票フォームにて連続する非連結コントロールに個々の値を入れるには
Access(アクセス)
-
6
ACCESSでコントロールソースの変更
Access(アクセス)
-
7
Accessのレポート上のテキストボックス値を設定したい
その他(データベース)
-
8
ACCSESS2013VBA フォームのレコードソースを変更する
その他(データベース)
-
9
ACCESSでVBAから選択クエリの抽出条件を指定したい
Access(アクセス)
-
10
Accessでフィールド名を変数(文字列)で・・・
Access(アクセス)
-
11
MS Accessでフォームの「開く時」と「読込み時」のイベントの違い
Access(アクセス)
-
12
エラー(型が一致しません。)の対処方法
Visual Basic(VBA)
-
13
ACCESS 「パラメータの入力」を消したい!!
Access(アクセス)
-
14
【ACCESS】フォーム名/コントロール名を文字列型変数で指定するには
Access(アクセス)
-
15
Accessの画面更新を一時的に停止する方法。
その他(データベース)
-
16
フォームを開くときに、コンボボックスの値を選択(アクセスVBA)
Visual Basic(VBA)
-
17
アクセスで#エラーを表示させない方法は?
Access(アクセス)
-
18
サブフォームに対してGoToRecordするには?
その他(Microsoft Office)
-
19
Access2010 SetFocusが当たらない
その他(プログラミング・Web制作)
-
20
どこにもフォーカスを当てたくない
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel VBA 動的に作成したチェ...
-
エクセルVBAでオプションボタン...
-
エクセル・VBA CheckBoxのオブ...
-
Groupboxの配下のコントロール...
-
vb.netで画面のコントロールId...
-
C#で角が丸いテキストボックス
-
ユーザーフォームで動的(Me.Con...
-
ExcelVBAでListViewが使用できない
-
アクセス特有の書き方?
-
カメラスクロールするのを動画...
-
VB6のユーザーコントロールの受...
-
エクセルVBAユーザーフォーム・...
-
全てのオブジェクトのプロパテ...
-
VBAのエラーについて、”実行時...
-
chr関数の呼び出しで「プロ...
-
エクセル・オプションボタン・...
-
Shapeコントロールの.NET移行方法
-
間違えて配置してしまったコン...
-
vba dbcommand button activex ...
-
VB.NETでフォーム上にエクセル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
カメラスクロールするのを動画...
-
エクセル・VBA CheckBoxのオブ...
-
vb.netで画面のコントロールId...
-
EXCELでactivexコントロールを...
-
C#で角が丸いテキストボックス
-
(VBA)スピンボタンの大量...
-
chr関数の呼び出しで「プロ...
-
変数をコントロール型で使用す...
-
VBAのエラーについて、”実行時...
-
ExcelVBAでListViewが使用できない
-
間違えて配置してしまったコン...
-
VBAのフォームでTextBoxがいっ...
-
Groupboxの配下のコントロール...
-
excelのリストボックスで選択し...
-
ACCESS2010のVBAでフォーム内ク...
-
エクセルVBAでオプションボタン...
-
フォーム上の現在アクティブな...
-
コンボボックスの文字によるif...
-
ユーザーフォームで動的(Me.Con...
-
コントロールを移動できない
おすすめ情報