|
おはようございます。
一箇所訂正です。
>pitakon さん、IROC さん、こんばんは。
>
>>オートシェイプの円に直線コネクタを接続すると、円の周囲の8点に接続されます。
>>円の周囲でなく円の中心に接続したいのですが、いい方法はないでしょうか?
>>円のプロパティを変えるとか、新規にオートシェイプを定義するとか、なにか方法がありそうですが・・・。
>>なお、わたくしの使用しているのはEXCEL97です。最新のバージョンで可能ならばその方法を教えてください。
>>よろしくお願いします。
>円とその中心を始点にした直線をグループ化してその直線にコネクターを接続する方法
>です。
>[#20349]と同じように二つの円を選択した状態で実行してみて下さい。
>
>'=================================================================
>Sub main()
> Dim x(1 To 2) As Single
> Dim y(1 To 2) As Single
> Dim ln(1 To 2) As Shape
> Dim con As Shape
> Dim shp As Shape
> Dim selshp As ShapeRange
> Set selshp = Selection.ShapeRange
> idx = 0
> For Each shp In selshp
> With shp
> x(idx + 1) = .Left + .Width / 2
> y(idx + 1) = .Top + .Height / 2
> With ActiveSheet
> Set ln(idx + 1) = .Shapes.AddLine(x(idx + 1), y(idx + 1), x(idx + 1), shp.Top)
> Set newshp = .Shapes.Range(Array(shp.Name, ln(idx + 1).Name)).Group
> End With
> idx = idx + 1
> End With
> Next
' Set con = ActiveSheet.Shapes.AddConnector(msoConnectorStraight, x(1), y(1), x(2), y(2))
Set con = ActiveSheet.Shapes.AddConnector(msoConnectorStraight, x(1), y(1), x(2) - x(1), y(2) - y(1))
'↑にして下さい
> With con.ConnectorFormat
> .BeginConnect ln(1), 1
> .EndConnect ln(2), 1
> End With
> For idx = 1 To 2
> ln(idx).Visible = msoFalse
> Next
> Erase x(), y(), ln()
>End Sub
訂正しなくても動作はしますが、AddConnectorメソッドの動作がHELPと
違うみたいなので・・・。
Helpには、コネクタの新規の作成は、始点と終点の位置をポイント単位指定と
記述されていますが、そのとおりに指定すると意図した位置に作成されませんでした。
色々と試してみると始点からの相対位置のような気がします。
訂正コードだと意図した位置に作成されます。
HELPの間違いか?、仕様の間違いか?、それとも私の解釈の間違いか??
|
|