• 締切済み

エクセルVBAで直線図形(オートシェイプ)を書きたいのですが。

エクセルVBAで直線図形(オートシェイプ)を書きたいのですが。座標の指定方法がいまひとつ分かりません。 マクロの記録で、座標数値の設定は分かるのですが、セルに対しての指定方法が分かりません。 図形をドラッグ指定したA1セルからC1セルまで直線を書きたいのです。セルへの始点終点の指定方法が有るのでしょうか。

みんなの回答

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

> セルへの指定方法ですが、A1の右上とか、右上下の中間とかは指定できるのでしょうか? オブジェクトの座標を取得できるのは上端(TOP)と左端(LEFT)になります。 右端は左端+幅(WIDTH)、下端は上端+高さ(HEIGHT)で求めることが出来ます。 正直、左端の位置と幅が分かれば右端や中間点の位置を求めるのは小学校の算数ですよ。 > 右下がりであったり、右上がりでもあったり、というワガママなものですが、ドラッグした範囲を取得して指定する方法が分からないのです。 セル範囲についても同じくTOP,LEFT,WIDTH,HEIGHTが使用できます。 Selection.Top、Selection.Leftなど 右上がりの線を引くか左上がりの線を引くかを自動判別する場合、アクティブセルがセル範囲内の何処に位置するかで判別する方法が考えられます。 セル範囲の左上のセルの行番号 Selection.Row セル範囲の左上のセルの列番号 Selection.Column セル範囲の左上のセルの行番号 Selection.Row + Selection.Rows.Count -1 セル範囲の左上のセルの列番号 Selection.Column + Selection.Columns.Count -1 で求められます。 ActiveCellが選択範囲の左上または右下にあれば、右下がり、左下または右上にいれば右上がりの線を引くというのはどうでしょうか?

VTEC-R
質問者

お礼

ありがとうございます。 なるほど、座標取得は上端と左端なのですね。あとは、幅と高さで出ますね。 セルの選択範囲は、selectionを使うのですか。ふむふむ。RowとColumnの組み合わせですね。 早速試してみます。丁寧な回答ありがとうございます。

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

A1の左上の座標 Range("A1").Top Range("A1").Left C1の右下の座標 Range("C1").Top + Range("C1").height Range("C1").Left + Range("C1").Width A1の左上からC1の右下まで線を引く Activesheet.shapes.addline(Range("A1").Left, Range("A1").Top, Range("C1").Left + Range("C1").Width, Range("C1").Top + Range("C1").Height).Select

VTEC-R
質問者

お礼

ありがとうございます。 早速試して試ます。

VTEC-R
質問者

補足

ありがとうございます。 セルへの指定方法ですが、A1の右上とか、右上下の中間とかは指定できるのでしょうか? 当方作りたいVBAは、マウスでドラッグ指定した一番左のセル左上から、一番右のセル右上に、線を引きたいのです。任意の範囲を選択しボタンを押すと線が書けるというものです。右下がりであったり、右上がりでもあったり、というワガママなものですが、ドラッグした範囲を取得して指定する方法が分からないのです。 よろしくお願いします。

関連するQ&A

専門家に質問してみよう