Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


892 / 13644 ツリー ←次へ | 前へ→

【77696】四角形吹き出しの先っぽにあたる点がどのセル上にあるか調べたい mumu 15/11/30(月) 21:56 質問[未読]
【77697】Re:四角形吹き出しの先っぽにあたる点がど... γ 15/11/30(月) 22:35 発言[未読]
【77698】Re:四角形吹き出しの先っぽにあたる点がど... mumu 15/11/30(月) 23:29 お礼[未読]
【77703】Re:四角形吹き出しの先っぽにあたる点がど... γ 15/12/1(火) 21:13 発言[未読]

【77696】四角形吹き出しの先っぽにあたる点がどの...
質問  mumu  - 15/11/30(月) 21:56 -

引用なし
パスワード
   はじめて投稿させていただきます。

シート内に複数の四角形吹き出しがある場合、
個々の四角形吹き出しの左上端のセルは、TopLeftCell、
右下端のセルはBottomRightCell
で取得できたのですが、吹き出しの先っぽにあたる点(Adjustments.Item?)が
どのセル上にあるか知りたい場合はどうすればいいでしょうか?

初心者のため、見当違いの質問をしているかもしれませんが、
どうかご教授お願い致します。

【77697】Re:四角形吹き出しの先っぽにあたる点が...
発言  γ  - 15/11/30(月) 22:35 -

引用なし
パスワード
   こんなことでしょうか。
それを選択状態にして実行してください。

Sub test()
  Dim sp As ShapeRange
  Dim a As Adjustments
  Dim wTop As Double, wLeft As Double, wWidth As Double, wHeight As Double
  Dim l As Double, t As Double
  Dim ovl As Shape
  
  Set sp = Selection.ShapeRange
  wTop = sp.Top
  wLeft = sp.Left
  wWidth = sp.Width
  wHeight = sp.Height
  
  Set a = sp.Adjustments
  l = wLeft + 0.5 * wWidth + a.Item(1) * wWidth
  t = wTop + 0.5 * wHeight + a.Item(2) * wHeight
  Set ovl = ActiveSheet.Shapes.AddShape(msoShapeOval, l, t, 1, 1)
  MsgBox ovl.TopLeftCell.Address
  ovl.Delete
End Sub

【77698】Re:四角形吹き出しの先っぽにあたる点が...
お礼  mumu  - 15/11/30(月) 23:29 -

引用なし
パスワード
   γ 様

迅速な回答、感謝いたします。
すごいです。
やりたいことに一歩近づけました。

書いていただいたコード、今の私の知識だと
半分も理解できてないですが、何とか読み解いて
自分のものにしたいです。

ありがとうございました。

【77703】Re:四角形吹き出しの先っぽにあたる点が...
発言  γ  - 15/12/1(火) 21:13 -

引用なし
パスワード
   ▼mumu さん:
>書いていただいたコード、今の私の知識だと
>半分も理解できてないですが、何とか読み解いて

私もAdjustmentsなんて触ったことはなかった。
それで実験してみた。

sp.Adjustments.Item(1)=0
sp.Adjustments.Item(2)=0
としたら、長方形の中心点を指した。

sp.Adjustments.Item(1)=1
sp.Adjustments.Item(2)=1
としたら、
その中心点を起点に、長方形の横幅、縦幅だけずらした点を指した。
それで、コードをでっちあげてみた。
参考になれば。

892 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free