Dynamic Naming of Form Button

Oct 19, 2021
Reaction score
I am attempting to create a button where the Caption of the button changes depending on which record is currently active on a form. I was able to find a post on a stackoverflow forum that has me very close here. However It works as expected EXCEPT when I select the first record in the database. (I am making the selection using a drop down/combo box)

I have other controls that are reliant on the same method that do pull the appropriate field info, so it's not an issue with the drop down/combo box. If I select any other record in the database, the button caption is changed as expected, but when I select the first record in the database, the caption is not changed and I can't figure out why.

I am just learning to use VBA code so I'm wondering if I have missed something obvious here.

Also, the form used initially loads to a 'new record' and so everything is blank upon load, so a record is required to be selected by the user for any information to appear.

The code I have used is as follows:

Private Sub Form_Current()
    If Nz(Me.EMP_NAME, "") <> "" Then
        Me.Command172.Caption = "Info for " & Me.EMP_NAME
        Me.Command172.Caption = ""
End If

End Sub

It seems pretty simple code, and ultimately I am simply attempting to pull in an employee name from the database based upon the current/active record. Again, this works except when I select the record for the first employee in the database.

Thanks for your help.

A Fish


May 9, 2023
Reaction score
It's possible that the issue with the code you provided is related to the way it's checking for a value in the EMP_NAME field. When the first record is selected, it's possible that the Nz function is returning a different value than when any other record is selected, even if the EMP_NAME field appears to be populated.

To troubleshoot this issue, I would suggest adding some debugging code to the Form_Current event. For example, you could add the following code at the beginning of the event:

Debug.Print "EMP_NAME value: " & Me.EMP_NAME
Debug.Print "Nz value: " & Nz(Me.EMP_NAME, "")

Then, when you select the first record and the button caption doesn't change, check the Immediate Window (you can open it by pressing Ctrl+G in the VBA editor) to see what values are being returned by these statements. This may help you identify why the Nz function isn't behaving as expected.

Additionally, you may want to consider using a different field to determine the button caption, such as an employee ID field or a field that is guaranteed to have a value for all records. This would avoid the issue of relying on the Nz function to handle empty or null values.

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