Syntax Error '1004'

M

Minitman

Greetings,

I am attempting to run this macro :

For this example x equals 1, 2 or 3. vName & vNum together is the
name of the originating TextBox.

Here is the code fragment in question:

Run "InvCol_" & x, vName, vNum

This will run one of the three procedures known as InvCol_1, InvCol_2
or InvCol_3 each with the pass though arguments of vName & vNum.

The problem is the VB error message:

Run-time error '1004'
The macro 'InvCol_1' cannot be found.

VB is calling it a macro, I'm not sure if that means anything or not.
The full name of the procedure is:

Public Sub InvCol_1(vName As Variant, vNum As Variant)

It is in the UserForm code area as is the rest of this code, It was
working until I changed the calling method to include a variable to
simplify the code.

Can anyone see what I did wrong to mess up this code and, more
importantly, how do I fix it?

Any help will be appreciated.

-minitman
 
H

Homey

i think you need put InvCol_1 and the others in a regular module.

| Greetings,
|
| I am attempting to run this macro :
|
| For this example x equals 1, 2 or 3. vName & vNum together is the
| name of the originating TextBox.
|
| Here is the code fragment in question:
|
| Run "InvCol_" & x, vName, vNum
|
| This will run one of the three procedures known as InvCol_1, InvCol_2
| or InvCol_3 each with the pass though arguments of vName & vNum.
|
| The problem is the VB error message:
|
| Run-time error '1004'
| The macro 'InvCol_1' cannot be found.
|
| VB is calling it a macro, I'm not sure if that means anything or not.
| The full name of the procedure is:
|
| Public Sub InvCol_1(vName As Variant, vNum As Variant)
|
| It is in the UserForm code area as is the rest of this code, It was
| working until I changed the calling method to include a variable to
| simplify the code.
|
| Can anyone see what I did wrong to mess up this code and, more
| importantly, how do I fix it?
|
| Any help will be appreciated.
|
| -minitman
 
M

Minitman

Hey Homey,

Thanks for the reply.

I tried to move the 7 subs. The use of Me.Controls() was not
recognized in a standard module. There may have been other problems
that had not shown up as well. I had to take the code back and call
the macros without the variables (add a select case layer to choose
the correct macro to run - oh well)

Again, thanks for the effort
-Minitman
 
O

OssieMac

Hi Minitman

"It was working until I changed the calling method to include a variable to
simplify the code." This surprises me. However, if you called it with the
following method it would have worked.

Call InvCol_1(vName, vNum)

However, having said that, the only code you should have in the Userform
code area is the event code for the userform. All other code which is called
should be in a standard module and if you move the called code to a standard
module you will most likely fix the problem.
 
H

Homey

-The use of Me.Controls() was not recognized in a standard module.

true that you have to use full name of userform and controls out of the
userform module. like Userform1.Controls instead of me.controls.

| Hey Homey,
|
| Thanks for the reply.
|
| I tried to move the 7 subs. The use of Me.Controls() was not
| recognized in a standard module. There may have been other problems
| that had not shown up as well. I had to take the code back and call
| the macros without the variables (add a select case layer to choose
| the correct macro to run - oh well)
|
| Again, thanks for the effort
| -Minitman
| On Mon, 18 Jan 2010 09:31:13 -0500, "Homey" <none> wrote:
|
| >i think you need put InvCol_1 and the others in a regular module.
| >
| >| >| Greetings,
| >|
| >| I am attempting to run this macro :
| >|
| >| For this example x equals 1, 2 or 3. vName & vNum together is the
| >| name of the originating TextBox.
| >|
| >| Here is the code fragment in question:
| >|
| >| Run "InvCol_" & x, vName, vNum
| >|
| >| This will run one of the three procedures known as InvCol_1, InvCol_2
| >| or InvCol_3 each with the pass though arguments of vName & vNum.
| >|
| >| The problem is the VB error message:
| >|
| >| Run-time error '1004'
| >| The macro 'InvCol_1' cannot be found.
| >|
| >| VB is calling it a macro, I'm not sure if that means anything or not.
| >| The full name of the procedure is:
| >|
| >| Public Sub InvCol_1(vName As Variant, vNum As Variant)
| >|
| >| It is in the UserForm code area as is the rest of this code, It was
| >| working until I changed the calling method to include a variable to
| >| simplify the code.
| >|
| >| Can anyone see what I did wrong to mess up this code and, more
| >| importantly, how do I fix it?
| >|
| >| Any help will be appreciated.
| >|
| >| -minitman
|
 
M

Minitman

Hey OssieMac,

Thanks for the reply.

Do you know of a way of starting a procedure with a split name (part
text and part variable) I got into the problem of which module the
code is sitting with the Run command {Run
 
O

OssieMac

Don't understand your question. You already have code for calling a sub in a
module and passing the arguments/parameters as follows:-

Run "InvCol_" & x, vName, vNum

The above works when InvCol_x is in a standard module.

One of your questions in a previous post on this thread referred to Me but
that was explained. Simply replace it with the Userform name.

Your quote: "I got into the problem of which module the code is sitting
with". Not sure if I understand but you should not need to specify the
module. However, having said that, you cannot have subs by the same name in
different standard modules or you cannot call them.

If this does not answer your question then perhaps you can elaborate on
your question with examples.
 

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

Top