重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

エクセルについての質問です。

現在、ユーザーフォーム上に、いくつかのコマンドボタンを配置して、

さらに、スクロールによって、たくさんのコマンドボタンをみれるようにしています。

特に、コマンドボタンにマウスカーソルを合わせると、コマンドボタンの隣に図を表示する構成です。

しかしながら、図の表示位置をユーザーフォームから座標を指定しているため、

スクロールして、コマンドボタンの位置が変わると、図の表示位置がコマンドボタンに追従せず、ずれてしまいます。

なにか良い方法はないでしょうか。

Private Sub UserForm_Initialize()
Me.StartUpPosition = 0
Me.Top = UserForm1.Top + 80
Me.Left = UserForm1.Left + 70

Me.Height = 80
Me.Width = 90

End Sub

A 回答 (1件)

UserForm_Scroll()で移動量を計算して、


CommandButton1_MouseMove()で相対座標を計算すればいいと思います
が、全コマンドボタンにMouseMoveを入れないとダメです

制度は甘いですがこんな感じでしょうか

Dim m_dNowY As Double

Private Sub CommandButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

Dim dScrollCnt As Double
Dim dY As Double

dScrollCnt = m_dNowY / Me.Height

dY = (Me.CommandButton1.Top + 20) - (dScrollCnt * Me.Height) 'UserFormのタイルの高さ(20)を考慮

MsgBox dY


End Sub


Private Sub UserForm_Initialize()

Me.Height = 100
Me.ScrollHeight = Me.Height * 4

End Sub

Private Sub UserForm_Scroll(ByVal ActionX As MSForms.fmScrollAction, ByVal ActionY As MSForms.fmScrollAction, ByVal RequestDx As Single, ByVal RequestDy As Single, ByVal ActualDx As MSForms.ReturnSingle, ByVal ActualDy As MSForms.ReturnSingle)

m_dNowY = m_dNowY + ActualDy
If 0 > m_dNowY Then
m_dNowY = 0
End If

End Sub
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!