• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:(新)EXCEL VBA コードをズバリで)

(新)EXCEL VBA コードをズバリで

このQ&Aのポイント
  • Shapeオブジェクトで0.7mmの円を描くには?
  • Shapeオブジェクトを目的の位置に配置するには?
  • Shapeオブジェクトの描画における誤描画と位置の設定に関する質問です。

質問者が選んだベストアンサー

  • ベストアンサー
  • end-u
  • ベストアンサー率79% (496/625)
回答No.1

>0.7mm 0.7cmですか? 単純な描画だけの場合、こちらの環境では再現しません。(Zoom100%) Sub test()   Dim L As Single   Dim T As Single   Dim W As Single   Dim i As Long   L = 20   T = 20   W = 19.84252 '0.7cmに該当するポイント   With ActiveSheet.Shapes     For i = 1 To 100       .AddShape msoShapeOval, L, T * i, W, W     Next   End With End Sub 1つの対策としては、Duplicateで複製するのもありかもしれません。 Sub test2()   Dim s As Shape   Dim L As Single   Dim T As Single   Dim W As Single   Dim i As Long   L = 40   T = 20   W = 19.84252   With ActiveSheet.Shapes     Set s = .AddShape(msoShapeOval, L, T, W, W)     For i = 2 To 100       s.Duplicate.Top = T * i     Next   End With   Set s = Nothing End Sub 質問2について、ver2007ではZoomによって描画位置がずれるという話がありました。 Zoom100%での作成をおすすめします。 また、MicrosoftUpdateで最新パッチをあてれば解消されるかとも思います。

noname#140971
質問者

お礼

<質問1について> >こちらの環境では再現しません。 との回答で、当方との差異を考えてみました。 ・円を描画するだけではなく当該のデータを転写していること。 この場合、シートの更新をオフにし描画間隔を0.2秒にすると誤描画は回避可能。 でも、これじゃーチト待機があって難点。 そこで、描画と当該のデータの転写の同時実行を中止、 描画のみ行った後にデータの転写を行って回答者の環境に酷似させてみました。 結果、見事に、誤描画はシートの更新をオフにする限りで皆無となりました。 感謝感激です。 <質問2について> ズーム100%の場合、全く問題はありません。 以上のように問題は悉く解決しました。 完全自動作画を実現した結果、作業時間は60分から6分へと大幅に短縮されました。 ただし、現状では、自動化したパターンは半分のみです。 が、残りの半分も、アイデア次第では完全自動作画が可能だと推察します。 昨年は、半年間、Javaのプログラミングに熱中。 その後、プログラミングから遠ざかって一年。 久しぶりに「よっしゃー」の日々でした。 JavaからVBAに感覚を戻すのに少し苦労しました。 が、回答者のお陰で無事に目的を達成することが出来ました。 まあ、これが還暦を過ぎた私の最後のプログラミングかも知れません。 そういう意味では、お付き合いに本当に感謝しています。

関連するQ&A