Microsoft Access 掲示板

他のフォームのMe.controls

3 コメント
views
4 フォロー

お世話になっております。

For i = 1 To 20
Set mytxt = Me.Controls("txt" & Format(i, "00"))
(処理)
Next

という形で、あるフォームのテキストボックスについて処理しているのですが、
このフォームからのポップアップフォームにて同様の処理をすることはできないのでしょうか。

Set mytxt = [Forms]![元フォーム名]!Controls("txt" & Format(i, "00"))

ではエラーになってしまうのですが

nokonoko
作成: 2023/07/14 (金) 14:35:30
通報 ...
1

Controlsの前の!.に変更してください。

Set mytxt = [Forms]![元フォーム名].Controls("txt" & Format(i, "00"))

メンバー アクセス演算子

上記の公式の説明はなんか難しくてよく分からないと思いますが、
Controlsのようなプロパティは.しか使えないと覚えておくとよいでしょう。
フォーム名とかコントロール名は!でも.でも使えます。

2
nokonoko 2023/07/14 (金) 16:04:51 3e2e6@54883

ご回答ありがとうございました。できました。

理屈は難しくてわかりませんでしたが、対処は覚えておきます。

3
hiroton 2023/07/14 (金) 17:16:50 5534d@f966d

フォームを一つ用意してテキストボックスを配置し、テキストボックスの名前プロパティをNameとします

テキストボックスのダブルクリック時にイベントプロシージャを設定して、テキストボックスの内容をいろいろ変えつつ

Private Sub Name_DblClick(Cancel As Integer)
    Debug.Print Me.name
    Debug.Print Me!name
End Sub

を実行してみましょう


まぁ、日本語開発環境なら全部「.」を使ってしまってもまず問題が起きることもないんですけどね