Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


7189 / 13646 ツリー ←次へ | 前へ→

【40649】AddLineのずれ okura 06/7/19(水) 17:47 質問[未読]
【40650】Re:AddLineのずれ ichinose 06/7/19(水) 18:06 発言[未読]
【40651】Re:AddLineのずれ okura 06/7/19(水) 18:18 お礼[未読]

【40649】AddLineのずれ
質問  okura  - 06/7/19(水) 17:47 -

引用なし
パスワード
   AddLineでの、線がずれる問題に困っています。

特殊なグラフを作成するため。Excelのグラフではなく、シートに直接グラフを描かせているのですが。そのときに、AddLineで線を描かせると線の位置がずれるという現象がおきてしまいます。
Excel2000のVBAで以下のコードを描くと、その現象がわかりやすいのですが。

  ActiveSheet.Shapes.AddLine(100, 100, 100, 200).Select
  ActiveSheet.Shapes.AddLine(101, 100, 101, 250).Select
  
  ActiveSheet.Shapes.AddLine(150, 100, 150, 200).Select
  ActiveSheet.Shapes.AddLine(151, 100, 151, 250).Select
  
  ActiveSheet.Shapes.AddLine(200, 100, 200, 200).Select
  ActiveSheet.Shapes.AddLine(201, 100, 201, 250).Select
  
  ActiveSheet.Shapes.AddLine(250, 100, 250, 200).Select
  ActiveSheet.Shapes.AddLine(251, 100, 251, 250).Select
  
  ActiveSheet.Shapes.AddLine(300, 100, 300, 200).Select
  ActiveSheet.Shapes.AddLine(301, 100, 301, 250).Select
  
  ActiveSheet.Shapes.AddLine(350, 100, 350, 200).Select
  ActiveSheet.Shapes.AddLine(351, 100, 351, 250).Select
  
  ActiveSheet.Shapes.AddLine(400, 100, 400, 200).Select
  ActiveSheet.Shapes.AddLine(401, 100, 401, 250).Select
  
  ActiveSheet.Shapes.AddLine(450, 100, 450, 200).Select
  ActiveSheet.Shapes.AddLine(451, 100, 451, 250).Select
  
  ActiveSheet.Shapes.AddLine(500, 100, 500, 200).Select
  ActiveSheet.Shapes.AddLine(501, 100, 501, 250).Select

それぞれの2本の線の間隔が一定になりません。
私に環境に特有の問題でしょうか?
同じ現象になることはあるでしょうか?
解決方法をご存知の方はいましたら、教えていただけないでしょうか?
よろしく、お願いします。

【40650】Re:AddLineのずれ
発言  ichinose  - 06/7/19(水) 18:06 -

引用なし
パスワード
   ▼okura さん:
こんばんは。

>AddLineでの、線がずれる問題に困っています。
>
'==================================
Sub test()
  Dim ln1shp As Shape
  Dim ln2shp As Shape
  Set ln1shp = ActiveSheet.Shapes.AddLine(100, 100, 100, 200)
  Set ln2shp = ActiveSheet.Shapes.AddLine(101, 100, 101, 250)
  DoEvents
  With ln1shp
    MsgBox .Left & "---" & .Top
    End With
  With ln2shp
    MsgBox .Left & "---" & .Top
    End With
  Set ln1shp = ActiveSheet.Shapes.AddLine(150, 100, 150, 200)
  Set ln2sgp = ActiveSheet.Shapes.AddLine(151, 100, 151, 250)
  DoEvents
  With ln1shp
    MsgBox .Left & "---" & .Top
    End With
  With ln2shp
    MsgBox .Left & "---" & .Top
    End With
End Sub

新規ブックで上記のコードを実行させてみてください。

Leftを100と指定したのに99.75になっていますよね?
ポイントって0.75単位でしか指定できません。
よって、100と指定しても
round(100/0.75,0)*0.75という計算でまるめられます。
これを計算に入れてシェイプを作成しなくてはなりません。

【40651】Re:AddLineのずれ
お礼  okura  - 06/7/19(水) 18:18 -

引用なし
パスワード
   ichinose さんありがとうございます。

数日間悩んでた問題が、こんなに早く突破口が開けるとは。。。
目からウロコがおちました。

*0.75を考慮して、再度グラフのコードを書き直してみます。

本当にありがとうございました。

7189 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free