Why is a Variant parameter changing its type on function call

0 votes

I was going to ask for assistance when I discovered the cause of the odd behavior. I thought I'd mention it because it seems incredibly cryptic and in case anyone else encounters a similar situation. I'd like to know why this occurs if any of the experts can shed some light on it.

I'm invoking a procedure that registers UserForm metrics. The statement is:

Public Sub SaveFormSettings(FormReference As Variant)

I use the Variant type because UserForms are classes (different types). The user form uses the following call to save its metrics:

SaveFormSettings Me

I often called this from the QueryClose event of the userforms so that the locations and sizes could be restored using RestoreFormSettings on the subsequent run (the form metrics are no longer available at the UserForm Terminate event).

Recently, I developed an intermediate routine that, in addition to calling SaveFormSettings, performs additional work. I now call this intermediate routine in the QueryClose event. What that routine entails is:

Public Sub QueryCloseEvent(FormReference As Variant, Optional SaveSettings As Boolean = True)

And it does this:

If SaveSettings Then SaveFormSettings (FormReference)

There was no compilation error reported. However, the FormReference parameter is now of type "Controls" rather than a UserForm type, such as MyForm1, when it is passed to the SaveFormSettings method. When the routine tries to obtain the name of the form to create the registry key value, it encounters an error as a result of:

n = FormReference.Name & " Form Metrics"

This statement worked when I didn't have the intervening QueryClose function.

Now as it turns out, while typing up this question and analyzing my code for possible errors, I discovered that the problem is caused by the parentheses around the FormReference. When I changed the code to:

If SaveSettings Then SaveFormSettings FormReference ' <-- no parens

It now works as intended. Why?

Jan 22 in Others by Kithuzzz
• 27,740 points
30 views

1 answer to this question.

0 votes

Remove parentheses

If SaveSettings Then SaveFormSettings FormReferen

This will solve your issue.

answered Jan 22 by narikkadan
• 51,240 points

Related Questions In Others

0 votes
1 answer

What is a name function in JavaScript & how to define it?

A named function declares a name as ...READ MORE

answered Mar 7, 2019 in Others by Frankie
• 9,830 points
2,182 views
0 votes
1 answer

What is a callback function?

Callback function is a function which is ...READ MORE

answered Jun 13, 2019 in Others by sunshine
• 1,280 points
498 views
0 votes
1 answer
0 votes
1 answer

What is the impact of covid-19 on a global economy?

Covid-19 that is co-corona,vi-virus,d-development,19-In the year 2019.The ...READ MORE

answered Mar 19, 2020 in Others by Niroj
• 82,840 points
618 views
0 votes
1 answer

Retrieve epay.info Balance with VBA and Excel

This code should log you in, provided ...READ MORE

answered Sep 5, 2018 in Blockchain by digger
• 26,740 points
522 views
0 votes
1 answer

How to load file to Excel Power query from SFTP site

Currently, I don't think there is a ...READ MORE

answered Dec 3, 2018 in Power BI by Upasana
• 8,620 points
2,382 views
0 votes
1 answer

Using VBA Excel to create a gramatically correct list

The Excel AND function is a logical ...READ MORE

answered Feb 9, 2022 in Others by gaurav
• 22,940 points
110 views
0 votes
2 answers

How to copy a formula horizontally within a table using Excel VBA?

Hi so basically, create an adjacent column ...READ MORE

answered Feb 16, 2022 in Others by Edureka
• 13,640 points
274 views
0 votes
1 answer

Is there a way to test a formula result in excel and type it only once, all within one cell and not using a user defined function?

Use the Let function: =LET(Value,A1+B2+C4+G3+B4,IF(Value>10,"No",Value)) I hope this helps ...READ MORE

answered Jan 9 in Others by narikkadan
• 51,240 points
32 views
0 votes
1 answer

Why is just an ID in the URL path a bad idea for SEO?

yes it affects the click through rates ...READ MORE

answered Feb 20, 2022 in Others by narikkadan
• 51,240 points
115 views
webinar REGISTER FOR FREE WEBINAR X
REGISTER NOW
webinar_success Thank you for registering Join Edureka Meetup community for 100+ Free Webinars each month JOIN MEETUP GROUP