[[20180305131238]] 『任意のセル範囲に画像をドラッグ&ドロップした時=x(shoji) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『任意のセル範囲に画像をドラッグ&ドロップした時、画像を検知』(shoji)

B11:I32のセル範囲に、画像もしくは図形がドラッグ&ドロップ(D&D)された時、どの画像がドロップされたのかを検知し、R11のセルに画像によって文章を入力。
例えば、
画像1がドロップされたなら「画像1が追加されました」。
図2がドロップされたなら「図2が追加されました」。
という感じです。
ドロップされた画像はそのまま残したいです。

上記を実現したのですが、方法はありますでしょうか?
VBAは苦手で良く分かっていないと思うので、説明が下手かと
思いますが、どうか宜しくお願い致します。

□=セル
■=画像もしくは図形

(B11:I32のセル範囲)  画像1〜12
□□□□□□□□□  ■ ■ ■ ■
□□□□□□□□□
□□□□□□□□□  ■ ■ ■ ■
□□□□□□□□□
□□□□□□□□□  ■ ■ ■ ■

Sheet1内は上記のような感じになっています。
□のセル範囲内に■画像をD&Dした時の検知です。

現在のコードを下記に記載させて頂きます。
セル範囲内に画像がドロップされたことは検知してくれますが、
どの画像がドロップされたのかまでは、分かりません。


Sub Macro1()

 Dim ws As Worksheet
 Dim shp As Shape
 Dim rng As Range
 Dim flg As Boolean

 Set ws = ActiveSheet
 Set rng = Range("B11:I32")

 Dim pic As String

  For Each shp In ws.Shapes
  If Intersect(ws.Range(shp.TopLeftCell, shp.BottomRightCell), rng) Is Nothing = False Then

  flg = True
  Exit For
  End If
  Next

  If flg Then
  MsgBox "セル '" & rng.Address(False, False) & "' 上に画像があります。"
  Else
  MsgBox "セル '" & rng.Address(False, False) & "' 上には画像がありません。"
  End If

End Sub


< 使用 Excel:Excel2010、使用 OS:Windows7 >


ドロップした瞬間を検知しているのではなく、マクロ実行時に、オブジェクトが範囲内にあるかどうか判定しているだけに見えますが、これで良いのならば、flg = True にするタイミングで、shp.Name を文字列変数に代入しておいて、これを表示してはいかがでしょうか?
ただし、デフォルト表示されるオブジェクト名のまま使っている場合、英名を表示してしまいます。
(???) 2018/03/05(月) 14:14

コメントありがとうございます。

「マクロ実行時に、オブジェクトが範囲内にあるかどうか判定している」
→仰る通りでございます。分かりやすい解釈をありがとうございます。
説明下手、また理解不足で申し訳ございません。

アドバイスを読ませて頂いただけでは、知識不足でイメージができませんでしたので
調べて実装して試してみます。

ありがとうございます。
(shoji) 2018/03/05(月) 18:09


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.