• ベストアンサー

VBAマクロで、図形等のオブジェクトを選択(特定)する方法ってありますか

こんにちは。VBAマクロを少しかじっています。 顔写真付きの従業員の検索システムを作りました。名前を入力(選択)したら、データシートから職員コード、住所、電話番号などの情報を検索し検索画面に表示します。この際、別のシートに顔写真を貼り付けたもの(1セルに1枚。セルに従業員名を入力してある。)から、VLOOKUP関数を使ってセル照会することで、画像も同時に表示することができます。 別の職員に切り換えたり、クリアする場合の画像の処理は、削除用のシートを用意し、そこにセルごと移動し、終了時にシートごと削除する方法をとりました。(当然、確認用のダイアログボックスが表示されます。) 前置きが長くなりましたが、問題は、用済みの画像を選択するプロシージャがあれば、あえて削除用のシートを用意する必要はありません。セルの場合は、Rangeプロパティやcellsプロパティで特定できますが、画像などのオブジェクトをセル番地などを使って特定する方法ってあるのでしょうか。 因みに、画像の選択処理を、マクロ記録でプロシージャを作成したら、 ActiveSheet.Shapes("Picture 1").Select などとなります。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Masa2072
  • ベストアンサー率51% (94/182)
回答No.3

検索シートにシェイプが1つしかなければ ActiveSheet.Shapes(1).Select で選択 ActiveSheet.Shapes(1).Delete で削除できます。

takuokweb
質問者

お礼

ご回答ありがとうございます。 実は、検索シートには、50以上のシェイプを貼り付けています。 Shapesの引数は、""で囲んだオブジェクト名だけとの固定観念を持っていたので、ご教示のような使い方は新たな発見でした。 今後の参考にさせていただきます。 お礼が遅くなって申し訳ありませんでした。

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.4

A No.2です。 >逆にセル位置から、図形の選択(特定)する方法があれば助かります。 総当たりと記したのは、例えばB3のセルに左上がかかった図形があったとして、全ての図形について検査して、 shp.TopLeftCell.Column = 2 かつ、 shp.TopLeftCell.Row = 3 の時に、 shp.delete すれば良いという事です。 50個以上あるとの事ですので、若干時間がかかるかもしれません。 もう一つ考えられるのは、図形をシート上に設置する際に、選択された状態で、自分の管理し易い名前に付け替えて管理する方法です。

takuokweb
質問者

お礼

mitarashi様 重ねてのご教授恐れ入ります。 内容は何となく分かりますが、いざ構文となれば、現時点ではgive upです。これからもっと勉強してスキルアップを図っていきたいと思います。お礼が遅くなりましたが、改めて感謝申し上げます。本当にありがとうございました。

すると、全ての回答が全文表示されます。
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.2

総当たりで条件に合致するものを見つける方法で良いなら、下記の様に図形の左上がかかるセルの番地等を取得できます。 Sub test() Dim shp As Shape For Each shp In ActiveSheet.Shapes Debug.Print shp.TopLeftCell.Address Debug.Print shp.TopLeftCell.Column Debug.Print shp.TopLeftCell.Row Next End Sub

takuokweb
質問者

お礼

早速のご回答ありがとうございます。 質問の仕方が悪かったと反省しています。 逆にセル位置から、図形の選択(特定)する方法があれば助かります。 ご教示いただいたマクロ文は今後の参考にさせていただきます。 お礼が遅くなって申し訳ありませんでした。

すると、全ての回答が全文表示されます。
  • izmlz
  • ベストアンサー率55% (67/120)
回答No.1

直接の回答ではありませんが、マクロを使うのではなく、名前定義や図のリンク貼り付けを活用して写真を表示させる方法はいかがでしょうか? ↓のページにその方法についての説明がありますので、ご覧ください。サンプルファイルも置いてあります。 エクセル技道場-数式で図形表示 http://www2.odn.ne.jp/excel/waza/function.html#SEC75

参考URL:
http://www2.odn.ne.jp/excel/waza/function.html#SEC75
takuokweb
質問者

お礼

ご教示ありがとうございます。 写真表示はマクロ表示で可能となっており、削除のための図形(写真)を特定する方法がないかというのが、質問の趣旨でした。質問が冗長になってしまって分かりづらかったと思います。 なお、ご紹介いただいたサイトは今後の参考にさせていただきます。 お礼が遅くなって申し訳ありませんでした。

すると、全ての回答が全文表示されます。

関連するQ&A