2024.09.25
フォーム上に配置した9個のテキスト枠内の名前の位置が2ステップで変更できます。
1.動かしたい名前をクリック
2.動かす位置の枠をクリック
テーブルとフォームを用意してVBAで自動化します。
テーブル
データを格納するテーブルを一つ用意し、フィールドを3つ作ります。
・ID(オートナンバー型)
・名前(短いテキスト)
・位置(短いテキスト)
フォーム
データ表示や操作するフォームを一つ用意します。テキスト枠を9個並べます。
テキスト枠に適当な名前を付けます。
テキスト枠に名前を表示するように設定をします。下記のコードを各テキスト枠の[コントロールソース]にコピペしてください。
=IIf(DCount("名前","テーブル","位置='A1'")=0,"",DLookUp("名前","テーブル","位置='A1'"))
*[位置='A1']の「A1」がテキスト枠の名前になりますので適時変更してください。
クリックしたテキスト枠の名前を入力するテキスト枠(オレンジ色)を配置し、名前を「temp」にします。
【AD】
コード
テキスト枠をクリックしたときの動作をすべてのテキスト枠のプロパティの[クリック時のイベント]にコーディングします。
Private Sub A1_Click()
If IsNull(temp) = True Then
temp = DLookup("ID", "テーブル", "位置='A1'")
Else
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Set cn = CurrentProject.Connection
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient
rs.Open "テーブル", cn, adOpenDynamic, adLockOptimistic
rs.Find "ID=" & temp
rs!位置 = "A1"
rs.Update
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
temp = Null
Me.Refresh
End If
End Sub
*テキスト枠「A1」の例
コードの説明
1.テキスト枠「temp」が空欄のとき、クリックしたテキスト枠に表示されている名前の「ID」が入力されます。
2.テキスト枠「temp」に「ID」が入力されているとき、テーブルを開いてテーブルの「temp」に表示されている「ID」の「位置」フィールドにクリックしたテキスト枠の名前を入力されます。
1.テーブルにIDを1から9まで用意
2.ID1から3の[名前]フィールドに「山田」「佐藤」「加藤」を入力
3.ID1から3の[位置]フィールドにテキスト枠の名前「A1」「B1」「C1」を入力
4.フォームを表示
5.フォーム上で移動させる名前をクリック
6.移動先のテキスト枠をクリック
テーブルを開いて「位置」の値を見るとテキスト枠の名前と一致します。
直感的な操作に役に立つかと思います。ご参考にしていただければ幸です。