Excel VBA質問箱 IV

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

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


38823 / 76732 ←次へ | 前へ→

【43038】図形を回転すると位置がズレル?
質問  yata  - 06/9/29(金) 22:13 -

引用なし
パスワード
   こんばんは
いつも掲示板で勉強させてもらっています。
質問ですが、Excel2003でオートセイプの直線で三角形を作って展開図作成マクロを作りましたが、位置あわせのため図形を回転したい時があります。
困ったことに1度回転すると作業が続けられなくなります。
原因は回転すると三角形がバラけてしまうためのようです。
そこで下記のコードで確かめました。
1「準備」で三角形を2つ作ります。
2「右回転」または「左回転」を実行してメッセージでズレを確認します。

なぜ回転するとずれてしまうのでしょうか?
Sub 準備()
'三角形を2つ作る
  ActiveSheet.Shapes.AddLine(100, 100, 100, 50).Select
  ActiveSheet.Shapes.AddLine(100, 50, 150, 30).Select
  
  '分かりやすいように3本目から色と名前を付ける
  With ActiveSheet.Shapes.AddLine(100, 100, 150, 30)
    .Name = "aLine"
    .Line.ForeColor.RGB = RGB(0, 255, 0)
  End With
  With ActiveSheet.Shapes.AddLine(150, 30, 180, 130)
    .Name = "bLine"
    .Line.ForeColor.RGB = RGB(0, 0, 255)
  End With
  With ActiveSheet.Shapes.AddLine(100, 100, 180, 130)

  .Name = "cLine"
  .Line.ForeColor.RGB = RGB(255, 0, 0)
  End With
  
  Application.Wait (Now + TimeValue("0:00:1"))
'ズレを確認
  MsgBox ズレ
End Sub
Sub 右回転()
'グループ化して名前を「グループ1」とする
 ActiveSheet.Shapes.SelectAll
 Selection.Group.Name = "Group1"

'15度回転
  Shapes("Group1").Rotation = 15
'グループ解除
 Shapes("Group1").Ungroup
Application.Wait (Now + TimeValue("0:00:1"))
'ズレを確認
  MsgBox ズレ
End Sub

Sub 左回転()
 ActiveSheet.Shapes.SelectAll
 Selection.Group.Name = "Group1"
  Shapes("Group1").Rotation = -15
  Shapes("Group1").Ungroup 
  Application.Wait (Now + TimeValue("0:00:1"))
  MsgBox ズレ
End Sub

Function ズレ()
With ActiveSheet
  With .Shapes("cLine")
    cTop = .Top
    cLeft = .Left
  End With
  With .Shapes("aLine")
    aBottom = .Top + .Height
    aLeft = .Left
  End With
End With
'取り敢えず赤い線と緑の線の接点を調べる
If cLeft = aLeft And cLeft = aBottom Then
  ズレ = "ズレなし"
Else
  ズレ = "ずれている!" & "aBottom" & aBottom & "<>" & "cTop" & cTop
End If
End Function

ズレていると、前に作った三角形の3辺がどのような位置関係にあるかを調べ、次の三角形の頂点を反対方向に作るということが出ません。
0 hits

【43038】図形を回転すると位置がズレル? yata 06/9/29(金) 22:13 質問
【43046】Re:図形を回転すると位置がズレル? yata 06/9/30(土) 9:38 お礼

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