Skip to content

Instantly share code, notes, and snippets.

View YujiFukami's full-sized avatar
💣

AERO_IKI YujiFukami

💣
View GitHub Profile
@furyutei
furyutei / 0.README.md
Last active October 5, 2021 13:16
[Excel][VBA] ドキュメント座標を画面座標に変換

[Excel][VBA] ドキュメント座標を画面座標に変換

ドキュメント座標[^1]を画面座標[^2]に変換するのにWindow.PointsToScreenPixelsX()Window.PointsToScreenPixelsY()を使おうとしたところはまってしまいました

  • (0, 0) 以外のドキュメント座標がうまく変換できない
  • ウィンドウ枠の固定をしていたり、マルチディスプレイ環境の場合もうまく変換できない

踊るエクセル@ExcelVBAer さんのご教示により、ドキュメント座標がActiveWindowの.Panes(i).VisibleRange(i=1~.Panes.Count)のどこに属するか調べた上で、当該PaneのPane.PointsToScreenPixelsX()Pane.PointsToScreenPixelsY()を使用すればよいことがわかったので、これを元に[汎用プロシージャ:ConvertToScreenCoordinates()](#file-mod_convertt