|
矢田裕康さん、当掲示板の主宰者、谷です。
>私は60歳でつい最近インターネットを始めました。
>メールもこれが私の送信第1号です。どうか着きますように。
ちゃんと届きました。ありがとうございます。
しかし念のために申し上げますと、矢田様が書かれたのは「掲示板」です。
メールとは手紙のことで、ある特定の個人に対して送る電子文書です。
このような不特定多数の人が読める電子文書は、一般に「掲示板」と言います。
さて、Excel VBA で処理の自動化を行っておられるということ。
やはり、向学心に年齢は関係ないのですね。頭が下がります。
>質問内容
>ActiveSheet.Shapes.AddLine(p, q, r, s).Select
>で、直線を何本か連続して描き、その内の任意の直線を選択して、その始点または終点から別の直線を描きたいのですが、マウスで選択された図形の始点と終点のx座標とy座標の値を取得することが出来ません。
>よい方法はありませんか?。
マウスで選択した図形を表す構文は、Selection.ShapeRange です。
この .Left プロパティが「始点の X座標」、.Top プロパティが「始点の Y座標」、.Width プロパティが「直線の横方向の幅」、.Height プロパティが「直線の縦方向の高さ」を表します。
になります。つまり、終点のx座標、y座標 という指定がありません。
終点の X座標、Y座標をどうしても取りたい場合は、
終点の X座標 ・・・ .Left + .Width
終点の Y座標 ・・・ .Top + .Height
で取得しなければなりません。
すなわち、任意の選択した直線の始点、終点の X座標、Y座標は、それぞれ
始点の
X座標 ・・・ Selection.ShapeRange.Left
Y座標 ・・・ Selection.ShapeRange.Top
終点の
X座標 ・・・ Selection.ShapeRange.Left + Selection.ShapeRange.Width
Y座標 ・・・ Selection.ShapeRange.Top + Selection.ShapeRange.Height
ということになります。
・・・が、それはあくまでも左上から右下に向けて書かれている直線の場合。
左下から右上に向けて書かれている直線の場合は、こういうわけにはいきません。
これは、
始点→\
\
\←終点 この場合はうまくいく
けど
始点→ /
/
/ ←終点 わかります?
結局、その直線を囲む矩形(四角形)の左上と右下を指定することになるんです。
私がわかるのは、ここまでです。これで、この直線がどっちに傾いているかわかればいいんですが・・・お役にたてなくてすみません。
追伸
不特定多数の方が読む可能性のあるこのような掲示板に、ご住所を書かれるのはあまりお勧めできません。所在を明らかにされるのは潔く好感が持てますが、矢田様の住所・本名が悪意のある第三者によって悪用されてしまう可能性が否定できません。今後はご住所を書かれるのはお控えになったほうがよろしいかと存じます。
|
|