Apr 26 2021 07:19 AM
Hello,
I am currently trying to write some VBA code that will initialize once I left click on a UserForm image I have uploaded. In my specific situation, I am using a hovering effect for a 'Login' button that will highlight a white 'Login' button/image green when hovered over with the mouse. This is done by hiding the white image and only showing the green image. See below, where I just have the white image over top the green one.
That part works fine right now, but the goal after this green highlight is to select the green button with the mouse, and after left clicking, some code will run. This is not working right now. I looked up on other forums and it looked like all I needed to do was have the code run with a '_Click()' sub in the code, but when I run a _Click for the image, an error returns saying below.
Whenever I right click on the image itself and do 'View Code', it creates a new Private Sub for '_BeforeDragOver()' and when I look in the top right drop down menu, there is no option for 'Click'. When I have the below code, the same error from above is returned. And when using the '_BeforeDragOver()' created Sub, nothing would happen when I do anything with the image.
Is there a new way to do this in the most recent Excel? Or is this not feasible anymore?
All other forums seemed to point to using a _Click sub for the image but I can't seem to make it work.
Any help is appreciated.
Thank you,
Ryan
Apr 26 2021 07:33 AM - edited Aug 07 2022 07:54 AM
Added later: the Image control actually does have a Click event, but it is hidden. See the replies by JonPeltier below.
The Image control does not have a click event. you can use the MouseUp (or MouseDown) event instead, with syntax
Private Sub Image1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
' your code here
End Sub
with the name of your control instead of Image1, of course.
Apr 26 2021 10:12 AM
Thank you for the reply! Very much appreciated!
That did work for me to be able to click on the button after the highlight. Now, I have a different problem, hopefully minor.
So I have code that will run when the MouseUp sub is run after I left click on the 'Login' button, and it should be checking the login credentials and verifying that they are correct with a username and password. If the username and/or password is incorrect, it will return a message saying 'ATTENTION: Wrong Login Information'. If not, the main menu UserForm will pop up and the login form will be unloaded. See code below.
Private Sub OKButton_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If Me.Username.Value = "fhwa" Then
If Me.Password.Value = "1234" Then
Unload Me
frmMainMenu.Show
Exit Sub
End If
End If
MsgBox "ATTENTION: Wrong Login Information"
End Sub
When testing, it works correctly when the wrong info is inputted, but it also returns the error message when I input the correct login credentials as well. See below (Password is 1234)
Do you know where in the code I might be going wrong? Are there some extra steps that need to be taken in order to have another UserForm open up based on user inputs?
Does the Me.Username.Value have to be directly referenced from the login form now that I'm using pictures instead of command buttons?
Thanks,
Ryan
Apr 26 2021 10:17 AM
I also will note that I tested out the below code, and it worked as intended. The main menu UserForm was opened up when the green Login button was selected. So it seems to me that its related to the Username/Password user inputs.
Private Sub OKButton_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Unload Me
frmMainMenu.Show
End Sub
Ryan
Apr 26 2021 10:19 AM
Try this version:
Private Sub OKButton_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If Me.UserName.Value = "fhwa" And Me.Password.Value = "1234" Then
Unload Me
frmMainMenu.Show
Else
MsgBox "ATTENTION: Wrong Login Information"
End If
End Sub
It shouldn't make a difference whether you use an image or a command button.
If you need to refer to the username elsewhere, you could store the value of Me.UserName in a public variable that has been declared in a standard module. It will then be available to all code in the workbook.
Apr 26 2021 10:58 AM
Apr 26 2021 11:05 AM
Could you attach a sample workbook without sensitive information that demonstrates the problem?
Apr 28 2021 12:00 PM
Apologies for the delayed response, thanks for the reply as always.
I've gone ahead and created a simplified Excel file that has both of the UserForms, 'frmLogin' (One giving me issues) and then one 'frmMainMenu' that should pop up when the correct login information is given and 'Login' is selected in the login userform. I annotated all of the buttons within the code if that helps find the issue.
I removed the functionality of every other button from the main menu, so there should be minimal code to hopefully find a solution.
All I need is to somehow go from entering in the username: fhwa and password: 1234 in the frmLogin, then selecting the 'Login' green button/picture, then the login form will close itself and the main menu will pop up.
Thanks again for the help.
Ryan
Apr 28 2021 12:29 PM
SolutionThere is a textbox named TextBox1 on top of the Password text box.
So you actually enter the password in TextBox1, and the Password text box remains empty. Hence the message that the login information is incorrect.
May 03 2021 07:08 AM
May 05 2021 05:51 PM
May 05 2021 05:55 PM
Aug 05 2022 08:57 AM
I am not sure of if this thread is actual, however, it looks like Image control has _Click event, despite it doesn't present in the VBA list.
If you type directly:
Private Sub Image1_click()
Excel will call that procedure on clicking the image area.
I have written an add-in for Excel 2003 for getting points from scientific graphic files.
It works well in Excel 2021.
Sincerely,
Andrey
Aug 05 2022 09:11 AM
Aug 07 2022 06:33 AM