Excel VBA質問箱 IV

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

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


10408 / 13644 ツリー ←次へ | 前へ→

【22007】ユーザーフォームの表示位置 kawata 05/2/7(月) 10:29 質問[未読]
【22008】Re:ユーザーフォームの表示位置 IROC 05/2/7(月) 10:48 回答[未読]
【22009】Re:ユーザーフォームの表示位置 IROC 05/2/7(月) 10:59 回答[未読]
【22013】Re:ユーザーフォームの表示位置 kawata 05/2/7(月) 12:32 お礼[未読]
【22017】Re:ユーザーフォームの表示位置 kawata 05/2/7(月) 13:39 お礼[未読]

【22007】ユーザーフォームの表示位置
質問  kawata  - 05/2/7(月) 10:29 -

引用なし
パスワード
   kawataです、お世話になってます、よろしくお願いします。
(Windows2000/Excel2000)

セルのダブルクリックイベントでユーザーフォームを表示
するところまでは作成済です。

で、そのユーザーフォームの表示位置を、
ダムルクリックしたセルのちょうど真下あたりに持って
いきたいのですが、設定の仕方がよくわかりません、
ぜひ、ご指導ください、よろしくお願いします。

ダブルクリックイベントで、
Target の Top,Leftプロパティ、
を取得し

ユーザーフォームのInitializeで、
ユーザーフォーム の Top,Leftプロパティ、
またMove

等も試してみました、が、さっぱり希望の位置にセット
されません。

【22008】Re:ユーザーフォームの表示位置
回答  IROC  - 05/2/7(月) 10:48 -

引用なし
パスワード
   ユーザーフォームのTop,Leftプロパティと
セル(Target)のTop,Leftプロパティでは基準が違うのでしかたありません。

【22009】Re:ユーザーフォームの表示位置
回答  IROC  - 05/2/7(月) 10:59 -

引用なし
パスワード
   APIでマウスカーソルの座標を取得して、
アクティブウィンドウの位置を移動しては如何でしょうか?

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  Cancel = True
  UserForm1.Show
End Sub


Private Sub UserForm_Activate()
Dim Poi As POINTAPI
Dim hwnd As Long
  GetCursorPos Poi
  hwnd = GetActiveWindow()
  MoveWindow hwnd, Poi.X, Poi.Y, 100, 200, 1
End Sub


−API宣言−

Public Declare Function MoveWindow Lib "user32" _
(ByVal hwnd As Long, ByVal X As Long, ByVal Y As Long, _
ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) _
As Long

Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long

Public Declare Function GetActiveWindow Lib "user32" () As Long

Public Type POINTAPI
  X As Long
  Y As Long
End Type

【22013】Re:ユーザーフォームの表示位置
お礼  kawata  - 05/2/7(月) 12:32 -

引用なし
パスワード
   IROCさん、ありがとうございました。
お返事遅くなって申し訳ないです、よろしくお願いします。

>APIでマウスカーソルの座標を取得して、
>アクティブウィンドウの位置を移動しては如何でしょうか?

なるほど・・・、
と、こうなってくると、あっ、そうか!と理解できる範囲を
超えていますので、とりあえず、組み込ませていただきます。
感謝です、ありがとうございました。

APIを自在に使えると、守備範囲がまったく違ってくるという
のは分かるのですが、自分のものにするのは、なかなか難しいです。
サンプル等をコピペで使うことはいていますが・・・。

ありがとうございました、結果報告しますね、
取り急ぎ、まずは、お礼まで。

【22017】Re:ユーザーフォームの表示位置
お礼  kawata  - 05/2/7(月) 13:39 -

引用なし
パスワード
   IROCさん、ありがとうございました。

>  MoveWindow hwnd, Poi.X, Poi.Y + 12 , 350, 350, 1

で、できました。
もう少しセルの下よりに欲しかったのであれこれテストしていまして
+12で落ち着きました。

先に、動けばよし!で、申し訳ないです。
ありがとうございました!、感謝です。

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