|
▼ど素人 さん:
>しかし矢印1本でテストした際、2本描かれるようになってしまい、調べたところ
>>>Set wk_中身 = ActiveSheet.Shapes.AddConnector(obj, left, top, width, Height)
>で1本目
>
>>>wk_中身.Line.BeginArrowheadStyle = 中身.Line.BeginArrowheadStyle
>で2本目が描かれ
>
>>>wk_中身.Line.EndArrowheadStyle = 中身.Line.EndArrowheadStyle
>がどうやら2本目に対して実行されているようです。
これに関しては
>>ActiveSheet.Shapes.AddConnector(obj, left, top, width, Height).Select
>>If 中身.Line.BeginArrowheadStyle = msoArrowheadTriangle Then
>> Selection.ShapeRange.Line.BeginArrowheadStyle = msoArrowheadTriangle
>> End If
>>If 中身.Line.EndArrowheadStyle = msoArrowheadTriangle Then
>> Selection.ShapeRange.Line.EndArrowheadStyle = msoArrowheadTriangle
>>End If
>部分を
>> Dim wk_中身 As Variant
>を追加したうえで
>>Set wk_中身 = ActiveSheet.Shapes.AddConnector(obj, left, top, width, Height)
>>wk_中身.Line.BeginArrowheadStyle = 中身.Line.BeginArrowheadStyle
>>wk_中身.Line.EndArrowheadStyle = 中身.Line.EndArrowheadStyle
>としてはどうでしょうか?
で、置き換え前に含めて、置き換え後に無くすことで
>ActiveSheet.Shapes.AddConnector(obj, left, top, width, Height).Select
を削除することを示したつもりでした。
なので
>ActiveSheet.Shapes.AddConnector(obj, left, top, width, Height).Select
を削除してください。
あと、向きに関してはこちらでもわからず、さらに矢印が斜めになっている場合
右下へ向かう矢印だとそのまま再描画できますが右上へ向かう矢印だと
右下へ向かう矢印として描画してしまうようです。
で、いくつか試してみて
ActiveSheet.Shapes.AddConnector(obj, left, top, width, Height)
部分で「left」が開始X座標、topが開始Y座標、widthが終了X座標、heightが
終了Y座標になるためleftよりwidthが大きければ右向き、leftがwidthより
大きければ左向きの矢印に、topとheightも同じようになるようです。
けれども既に入力されている図形から始点座標、終点座標を求める方法は
わかりませんでした。
(現在のプログラムでは始点・終点ではなく左上、右下の座標を求めているため
向きが逆になったりしてるようです)
お役にたてなくてすみません。
|
|