Accessのフォームのデザインビューには「書式のコピー/貼り付け」という便利な機能があり、この機能を利用することで、あるひとつのコントロールの書式を他の複数のコントロールへ次々とコピー&ペーストしていくことができます。
操作としては、元となるコントロールを選択状態にして、リボンの[ホーム]タブや[書式]タブにある[書式のコピー/貼り付け]ボタンを”ダブルクリック”(※注)して、あとは書式をペーストしたいコントロールを次々とクリックしていくだけです。



一方、「書式のコピー/貼り付け」では、プロパティシートの[書式]タブにあるすべてのプロパティがコピーされるわけではありません。そこで、ここではその対象外となっているコマンドボタンの「ピクチャ」プロパティを例に、『あるひとつのコントロールのピクチャをコピーし、それを他の複数のコントロールへ貼り付ける』という処理をプログラムで作ってみます。
なおここでは、他のコントロールへひとつずつ貼り付けていくのではなく、「選択状態になっている複数のコントロールへまとめて貼り付ける」動作とします。
まず、標準モジュールに次のようなプロシージャを用意します。
Public Sub PropCopyPaste(intAction As Integer)
Static svarPropValue As Variant
Dim ctl As Control
If intAction = 1 Then
svarPropValue = Screen.ActiveControl.Properties("PictureData")
ElseIf intAction = 2 Then
For Each ctl In Screen.ActiveForm.Controls
With ctl
If .InSelection Then
ctl.Properties("PictureData") = svarPropValue
End If
End With
Next ctl
End If
End Sub
このプロシージャは、次のようにして使います。
- まず、フォームのデザインビューにおいて”コピー元”となるコントロールをひとつ選択します。

- VBEのイミディエイトウィンドウで「PropCopyPaste 1」と入力してEnterキーを押し、選択されたコントロールの「PictureData」プロパティの値を変数svarPropValueに保存します。
- デザインビューに戻って、今度は”貼り付け先”となる複数のコントロールを選択します。

- イミディエイトウィンドウで「PropCopyPaste 2」と入力してEnterキーを押します。それによって、Static変数に保持されている「PictureData」プロパティの値が現在選択されている各コントロールの同プロパティにセットされます。
実行結果:
|