Drag picture

  • Thread starter Thread starter youu917
  • Start date Start date
Y

youu917

can anyone tell me how to make the picture box in the excel form be
dragable by using VBA programming?
 
can anyone tell me how to make the picture box in the excel form be
dragable by using VBA programming?

youu,

I'm not sure you can do that because re-positioning and/or resizing a
form require it to be in edit mode. You could collect Left and Top
positions of the image object from the user to adjust it's position on
the form. But that would be clumsy.

Whenever anyone asks about these more exotic kinds of VBA
functionality, my first question is, "What value are you trying to
provide to the user?" Followed by, "Ts what you are trying to do
value-added from your and the user's perspective? And then step back
and see if you could deliver essentially the same value from an
alternative solution strategy or else try to persuade the customer to
reduce his requirements. (Time is money.)

Good Luck.

SteveM

P.S. to youu and anybody else who reads this thread, google "Occams
Razor". Read a few things about that and take note...
 
youu,

I'm not sure you can do that because re-positioning and/or resizing a
form require it to be in edit mode.  You could collect Left and Top
positions of the image object from the user to adjust it's position on
the form.  But that would be clumsy.

Whenever anyone asks about these more exotic kinds of VBA
functionality, my first question is, "What value are you trying to
provide to the user?"  Followed by, "Ts what you are trying to do
value-added from your and the user's perspective?  And then step back
and see if you could deliver essentially the same value from an
alternative solution strategy or else try to persuade the customer to
reduce his requirements.  (Time is money.)

Good Luck.

SteveM

P.S. to youu and anybody else who reads this thread, google "Occams
Razor".  Read a few things about that and take note...

thank you very much
 
can anyone tell me how to make the picture box in the excel
form be dragable by using VBA programming?

You said "picture box", but I am going to assume you meant ImageBox. Place
an ImageBox (leave the default name of Image1) on the form. Copy/paste the
code below my signature into the UserForm's code window, run the project and
press Shift+<LeftMouseButton> to drag the ImageBox around the form.

Rick

Private OffsetX As Long, OffsetY As Long
Private Moving As Boolean

Private Sub Image1_MouseDown(ByVal Button As Integer, ByVal Shift As _
Integer, ByVal X As Single, ByVal Y As Single)
If Button = 1 And Shift = 1 Then
OffsetX = X
OffsetY = Y
Moving = True
End If
End Sub

Private Sub Image1_MouseMove(ByVal Button As Integer, ByVal Shift As _
Integer, ByVal X As Single, ByVal Y As Single)
If Moving Then
With Image1
.Move .Left + X - OffsetX, .Top + Y - OffsetY
End With
End If
End Sub

Private Sub Image1_MouseUp(ByVal Button As Integer, ByVal Shift As _
Integer, ByVal X As Single, ByVal Y As Single)
Moving = False
End Sub
 
I'm not sure you can do that because re-positioning and/or resizing a
form require it to be in edit mode. You could collect Left and Top
positions of the image object from the user to adjust it's position on
the form. But that would be clumsy.

See my response to the OP for a simple method to do what he asked.

Rick
 
Rick,
Very nice, I will keep this one even though I may never use it.
--
Jim Cone
San Francisco, USA
http://www.realezsites.com/bus/primitivesoftware
(Excel Add-ins / Excel Programming)




"Rick Rothstein (MVP - VB)"
wrote in message
can anyone tell me how to make the picture box in the excel
form be dragable by using VBA programming?

You said "picture box", but I am going to assume you meant ImageBox. Place
an ImageBox (leave the default name of Image1) on the form. Copy/paste the
code below my signature into the UserForm's code window, run the project and
press Shift+<LeftMouseButton> to drag the ImageBox around the form.

Rick

Private OffsetX As Long, OffsetY As Long
Private Moving As Boolean

Private Sub Image1_MouseDown(ByVal Button As Integer, ByVal Shift As _
Integer, ByVal X As Single, ByVal Y As Single)
If Button = 1 And Shift = 1 Then
OffsetX = X
OffsetY = Y
Moving = True
End If
End Sub

Private Sub Image1_MouseMove(ByVal Button As Integer, ByVal Shift As _
Integer, ByVal X As Single, ByVal Y As Single)
If Moving Then
With Image1
.Move .Left + X - OffsetX, .Top + Y - OffsetY
End With
End If
End Sub

Private Sub Image1_MouseUp(ByVal Button As Integer, ByVal Shift As _
Integer, ByVal X As Single, ByVal Y As Single)
Moving = False
End Sub
 
Very nice,

Thank you!
I will keep this one even though I may never use it.

LOL

By the way, the procedure I posted is not restricted to ImageBox'es only;
you can use it with any control having those three Mouse events available.
For example, put a ListBox on the UserForm, copy/paste the code I posted
earlier, click Edit/Replace (or key in Ctrl+H) and replace all occurrence of
Image1 with ListBox1. Now, run the project and Shift+LeftMouseClick over the
ListBox and drag it around instead.

Rick
 
Thank you very much! Appreciated that you solved my problem,thank you.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads


Back
Top