フォーム内にチェックボックスとボタンがあって、
ボタンからチェックボックスのチェックの状態を確認したいのですが、
チェックボックスのプロパティシートのその他タブの名前は
「Is_Active」になっていて、
データタブのコントロールソースはフォームに対して
画面上部の add existing fields から追加した
とあるテーブルのフィールド「Is_Active」がプルダウンによって設定されています。
VBエディタでボタンを押したときのハンドラのコード内で
そのチェックボックスにたいして
Me.Is_Activeとして
If Me.Is_Active = Yes Then としても、
メソッドまたはデータメンバーがみつかりません、というエラーが表示されて
そこでコードの実行が止まってしまいます。
access内のどこかの箇所を設定すれば、
修正できるのでしょうか?
テーブルとフォームの関連付けがうまく動作していないのでしょうか?
あとは、同じフォームに、
そのテーブルから追加したデータをプルダウンひとつで
表示を更新できるようにしてある、
そのプルダウンの初期状態の表示が「非連結」になっているのですが・・・
**チェックボックスの参照エラーの原因と対策**
`Me.Is_Active` を参照したときに
**「メソッドまたはデータメンバーが見つかりません」**
というエラーが出る原因として、
以下の点が考えられます。
### **1. コントロールの名前とフィールド名が同じ**
- フォーム内の **コントロールの名前**
(プロパティシートの「その他」タブで設定)と
**テーブルのフィールド名** が **同じ「Is_Active」** になっていると、
VBA で `Me.Is_Active` を参照したときに **混乱が発生しやすい** です。
#### **解決策**
1. **チェックボックスの名前を変更**
- フォームのデザインビューで **チェックボックスを選択**
- プロパティシートの「その他」タブで、名前を **「chk_IsActive」** などに変更
2. **コードを変更**
```vba
If Me.chk_IsActive.Value = True Then
MsgBox "チェックされています"
Else
MsgBox "チェックされていません"
End If
```
### **2. チェックボックスのデータソースが適切でない**
- `Me.Is_Active` を使ってエラーが出るのは、
フォームの「レコードソース」が正しく設定されていない場合も考えられます。
#### **確認方法**
1. **フォームのプロパティシートを開く**
2. 「データ」タブの「レコードソース」が
**対象のテーブル** になっているか確認
3. 「Is_Active」というフィールドがそのテーブルに存在するか確認
もし **レコードソースが空** だったり、
正しいテーブルにリンクされていなかったら、それを設定してみてください。
---
### **プルダウンの初期表示が「非連結」になる問題**
フォームに配置したプルダウン(コンボボックス)の
「データ」タブの「コントロールソース」が **空(なし)** だと、
Access は **「非連結」** と表示します。
#### **解決策**
1. **コンボボックスをレコードと紐づける**
- プロパティシートの「データ」タブで「コントロールソース」に、
**テーブルのフィールド名** を指定する。
2. **手動で値を設定する場合**
```vba
Me.コンボボックス名 = "初期値"
```
として、フォームロード時に値を設定できます。
---
### **まとめ**
✅ **チェックボックスのエラー対策**
- **コントロールの名前を「chk_IsActive」などに変更**
- `Me.chk_IsActive.Value` のように変更
✅ **プルダウンの「非連結」対策**
- 「コントロールソース」に適切なフィールドを設定する
- 必要なら `Me.コンボボックス名 = "初期値"` を設定する
この方法を試してみて、まだ問題があれば詳細を教えてください!
コメント
コメントを投稿