エクセル実践塾 > エクセル実践塾2007

リスト内の各データを、必要に応じて個別で表示したい

 

マクロを使えば、ダブルクリックしたデータを、専用のユーザーフォームで表示することができます

VBE(Visual Basic Editor)を使えば、オリジナルのユーザーフォームを作ることができます。ダブルクリック時にマクロが実行されるようにしておけば、指定したデータをそのユーザーフォームで表示させられます。

@マクロ編集用のVisual Basic Editorのボタンが含まれる、[開発]タブがリボンに表示されるようにします。

[開発]タブの表示は、[Excelのオプション]で設定します。

A[[開発]タブをリボンに表示する]にチェックマークを付けます。

B[開発]→[Visual Basic]ボタンをクリックして、マクロ編集用のVisual Basic Editorを起動します。

旧バージョンのExcelでは、[ツール]→[マクロ]→[Visual Basic Editor]で、VBEを起動できます

Cユーザーフォームを挿入して、必要なコントロールを配置します。

D画像を表示したい場合は、イメージコントロールを配置して、そのPictureSizeMode プロパティを「FmPictureSizeModeZoom」にします。

「FmPictureSizeModeZoom」にすると、表示される画像は、イメージコントロールのサイズに応じて自動調整されます。

Eリストのあるシートオブジェクトをダブルクリックして、そのBeforeDoubleClickイベントに、ユーザーフォーム表示用のマクロコードを記述します。

記述例)

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  Cancel = True
  With UserForm1
    .TextBox1.Text = Cells(Target.Row, 1)
    .TextBox2.Text = Cells(Target.Row, 2)
    .TextBox3.Text = Cells(Target.Row, 3)
    .Image1.Picture = LoadPicture(Cells(Target.Row, 4))
    .Show
  End With
End Sub

「Cancel = True」は、ダブルクリック時の規定のイベントをキャンセルするコードです。リスト内のデータをクリックすると、本来ならその編集状態に移行しますが、このコードが実行されるとそれが行われません。

 「Target」は、ダブルクリックされたセルを表します。「Target.Row」はその列番号を表すコードで、「Cells(Target.Row, 1)」と記述することにより、その行の1列目のデータを取得できます。「.TextBox1.Text」はテキストボックスに表示される文字列を表すコードなので、そこに「Cells(Target.Row, 1)」を代入することによって、ダブルクリックした行の1列目のデータをテキストボックスに表示できます。

「.Image1.Picture = LoadPicture(Cells(Target.Row, 4))」は、イメージコントロールに指定画像を表示するコードです。4列目のセルにはフルパスで画像ファイル名が入力されているので、それにしたがってイメージコントロールでの画像表示が行われます。

「.Show」は、ユーザーフォームを表示するコードです。

Fダブルクリックしたデータが、ユーザーフォームで表示されるようになります。

BeforeDoubleClickイベントに記述したコードは、対象となるシートでダブルクリックされたときに実行されます。

※データの編集はダブルクリックでは行えなくなりますが、F2キーや数式バーでの編集は可能です。

 

旧バージョンのExcelでは、[ツール]→[マクロ]→[Visual Basic Editor]で、VBEを起動できます

以降の手順は、Excel 2007の場合と同じです。