[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『円を描く』(JON)
Excel2003で円を描くマクロを組んだのですが、Excel2007で使用すると 円がずれて描かれしまいます。
それと元々Sheet内に描かれているオブジェクトが全てずれてしまいます。
どうしてなのでしょうか? 何か回避する方法はないのでしょうか?
教えてください。 かなり困っております。
コードは提示できませんか? ※2007のマクロは図形描画系が2003以前に比べて「ダメ」になった感 があります。
また、調べたわけではないのでいい加減なこといってるかも知れませんが、 VBAで使う位置はどこから見た位置か、ということが問題になります。 ようするに、現在のエクセルの環境(メニューを二段にしているとか三段に しているとか)によって変わってくる可能性があります。 (カリーニン)
>カリーニンさん ありがとうございます。 2007の方が駄目になったのですね? こまりましたねぇ。
ほんの一部ではありますがコードを提示します。
If OptionButton4.Value = True Then
Set obj = Selection
Call sp_call
Set R = Range("W21")
Set sp = ActiveSheet.Shapes.AddShape _
(msoShapeOval, R.Left + 5, pc(R, 2), pc(R, 3) * 3, pc(R, 3) * 1)
sp.Select
Selection.ShapeRange.Fill.Visible = False
obj.Select
ElseIf OptionButton5.Value = True Then
Set obj = Selection
Call sp_call
Set R = Range("W22")
Set sp = ActiveSheet.Shapes.AddShape _
(msoShapeOval, R.Left + 5, pc(R, 2), pc(R, 3) * 3, pc(R, 3) * 1)
sp.Select
Selection.ShapeRange.Fill.Visible = False
obj.Select
ElseIf OptionButton6.Value = True Then
Set obj = Selection
Call sp_call
Set R = Range("W23")
Set sp = ActiveSheet.Shapes.AddShape _
(msoShapeOval, R.Left + 5, pc(R, 2) + 9, pc(R, 3) * 3, pc(R, 3) * 1)
sp.Select
Selection.ShapeRange.Fill.Visible = False
obj.Select
ElseIf OptionButton7.Value = True Then
Set obj = Selection
Call sp_call
Set R = Range("W24")
Set sp = ActiveSheet.Shapes.AddShape _
(msoShapeOval, R.Left + 5, pc(R, 2) + 4, pc(R, 3) * 1.8, pc(R, 3))
sp.Select
Selection.ShapeRange.Fill.Visible = False
obj.Select
End If
--------------------------
Private Sub sp_call()
Dim sp As Shape
For Each sp In ActiveSheet.Shapes
If Not Intersect(Range("W21:W24"), _
Range(sp.TopLeftCell, sp.BottomRightCell)) Is Nothing Then
sp.Delete
End If
Next
End Sub
どこから見た位置なのかがわかりません。 いろんなサイト等で調べて組み合わせたものなので…。 すいません。
これでお分かりになるでしょうか? よろしくお願いします。
(JON)
円を描いてるのは
Set sp = ActiveSheet.Shapes.AddShape _
(msoShapeOval, R.Left + 5, pc(R, 2), pc(R, 3) * 3, pc(R, 3) * 1)
です。
AddShape と言う単語をヘルプで調べると
expression.AddShape(Type, Left, Top, Width, Height)
が出てきますので、
左が R.Left + 5
上が pc(R, 2)
幅が pc(R, 3) * 3
高さが pc(R, 3) * 1
の位置に描かれるはずです。
例えば
OptionButton4.Value = True
の場合、Rは
Set R = Range("W21")
ですから、左は W21セルの左端+5 の位置に成ると思います。
2003と2007で、図形の位置がずれるのは そう言う物だと思って於いた方が良いように思います。
一応、サポートにこの様な物は有ります。 [オブジェクトの位置関係] でオプションを設定した場合、 Excel 2007 で挿入されたグラフや図形が拡大または位置がずれて印刷される http://support.microsoft.com/kb/934331/
また、検索中に見つけた過去ログ。 [[20070221091920]]『Excel2007について』(kysj) とは言え、この過去ログは2007年の情報なので 最新の物を探せば 何か見つかるかも知れません。
こちらでは http://ziddy.japan.zdnet.com/qa4633984.html ★Office Updateを可能な限り最新にする(2003、2007どちらも) ★拡大/縮小印刷の設定を100%にして保存する 等の案も出されていますので、試してみられても良いかもしれません。
(HANA)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.