Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows XP全般 : Excel 2003)
フォームを表示する位置を指定したい
投稿日時: 17/10/03 22:20:23
投稿者: 富山の初心者

おねがいします。
 
たとえば、セルE5の下方右隅に、フォームの上方左隅あわせて表示したく、
下記のようなコーディングをしましたが、
FormA.Top/FormA.LeftはEXCELのセルA1の左上隅からではなく、
どうも、ディスプレイの左上隅からのうようです。
 
Load FormA
FormA.StartUpPosition = 0
FormA.Top = Range("E5").Top + Range("E5").Height
FormA.Left = Range("E5").Left + Range("E5").Width
FormA.Show
 
セルE5の下方右隅に、フォームの上方左隅あわせて表示するには、
どのような手順/計算式でFormA.Top/FormA.Leftをもとめればよいのでしょうか?
 
よろしくおねがいします。
 

回答
投稿日時: 17/10/03 23:36:15
投稿者: ピンク

結果だけですが、こんな感じ
With UserForm1
    .StartUpPosition = 0
    .Left = ActiveWindow.PointsToScreenPixelsX(0) * 72 / 96 + (Range("E5").Left + Range("E5").Width) * ActiveWindow.Zoom / 100
    .Top = ActiveWindow.PointsToScreenPixelsY(0) * 72 / 96 + (Range("E5").Top + Range("E5").Height) * ActiveWindow.Zoom / 100
    .Show
End With

投稿日時: 17/10/04 20:06:06
投稿者: 富山の初心者

ピンク様 早速の御回答ありがとうございます。
 
返事が遅くなり、すみませんでした。
 
質問では上方左隅でしたが、
セルの右上/左上/右下/左下の四隅にも、うまく適用できました。
 
「ActiveWindow.PointsToScreenPixelsX(0)」,「72」,「96」,「ActiveWindow.Zoom」など
想定も想像もつかない回答でした。
 
ありがとうございました。
 
 

投稿日時: 17/10/05 12:21:10
投稿者: 富山の初心者

解決済みのチェックをわすれていました。