| 
    
     |  | おはようございます。 一箇所訂正です。
 
 >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の間違いか?、仕様の間違いか?、それとも私の解釈の間違いか??
 
 
 |  |