How to integrate/link the .bas vba module file contents (variables) into the vba project?
We have 2 macros - say M1 and M2.
The M1 macro is working correctly.
The M2 macro is not working as expected (there are no compile/run-time errors) and the reason for this is that 1 file is missing in this macro M2. Say F1.bas. This file has the foll. code:
Public Const REG_SZ As Long = 1
The other files in the macro refer to this REG_SZ. On Macro M1 if I right click on the REG_SZ in the other files and click on Definition, then it takes me to the F1.bas file on this line.
However, on the M2 although I have imported the F1.bas file, and compiled the code; If I right click on the REG_SZ in the other files and click on Definition, then it gives an popup that says: "Identifier under cursor is not recognized".
My understanding is that any public variable in the module file should be globally accessible. Is there something that I am missing to establish the link, do we need to do something else when importing a module file?
vba ms-word
|
show 3 more comments
We have 2 macros - say M1 and M2.
The M1 macro is working correctly.
The M2 macro is not working as expected (there are no compile/run-time errors) and the reason for this is that 1 file is missing in this macro M2. Say F1.bas. This file has the foll. code:
Public Const REG_SZ As Long = 1
The other files in the macro refer to this REG_SZ. On Macro M1 if I right click on the REG_SZ in the other files and click on Definition, then it takes me to the F1.bas file on this line.
However, on the M2 although I have imported the F1.bas file, and compiled the code; If I right click on the REG_SZ in the other files and click on Definition, then it gives an popup that says: "Identifier under cursor is not recognized".
My understanding is that any public variable in the module file should be globally accessible. Is there something that I am missing to establish the link, do we need to do something else when importing a module file?
vba ms-word
1
Some minimal reproducible code would be good in order to understand your problem? Why do you need the .bas file? Did you maybe do a syntax error?
– Lucas Raphael Pianegonda
Nov 22 '18 at 7:30
No syntax error. Compiles OK. .bas file is needed because it has lot of more global variables. Its just basic code, it looks like the link is missing as explained in the question. I know that in some frameworks you need to include the other files, but in VBA my understanding is that anything declared as Public is global and available in any module file.
– variable
Nov 22 '18 at 7:38
try something like: F1.REG_SZ instead of just REG_SZ
– Lucas Raphael Pianegonda
Nov 22 '18 at 7:41
Yes, that works, but it will mean a lot of changes (find/replace) in the code which is not what I am looking; because the same concept works in the M1 macro by directly referring to REG_SZ, instead of F1.REG_SZ. ANy other suggestions please.
– variable
Nov 22 '18 at 8:16
1
Every .bas should start withOPTION EXPLICIT
. That will avoid you some situations where a module compiles but gives a runtime error.
– Patrick Honorez
Nov 22 '18 at 9:53
|
show 3 more comments
We have 2 macros - say M1 and M2.
The M1 macro is working correctly.
The M2 macro is not working as expected (there are no compile/run-time errors) and the reason for this is that 1 file is missing in this macro M2. Say F1.bas. This file has the foll. code:
Public Const REG_SZ As Long = 1
The other files in the macro refer to this REG_SZ. On Macro M1 if I right click on the REG_SZ in the other files and click on Definition, then it takes me to the F1.bas file on this line.
However, on the M2 although I have imported the F1.bas file, and compiled the code; If I right click on the REG_SZ in the other files and click on Definition, then it gives an popup that says: "Identifier under cursor is not recognized".
My understanding is that any public variable in the module file should be globally accessible. Is there something that I am missing to establish the link, do we need to do something else when importing a module file?
vba ms-word
We have 2 macros - say M1 and M2.
The M1 macro is working correctly.
The M2 macro is not working as expected (there are no compile/run-time errors) and the reason for this is that 1 file is missing in this macro M2. Say F1.bas. This file has the foll. code:
Public Const REG_SZ As Long = 1
The other files in the macro refer to this REG_SZ. On Macro M1 if I right click on the REG_SZ in the other files and click on Definition, then it takes me to the F1.bas file on this line.
However, on the M2 although I have imported the F1.bas file, and compiled the code; If I right click on the REG_SZ in the other files and click on Definition, then it gives an popup that says: "Identifier under cursor is not recognized".
My understanding is that any public variable in the module file should be globally accessible. Is there something that I am missing to establish the link, do we need to do something else when importing a module file?
vba ms-word
vba ms-word
edited Nov 22 '18 at 10:51
variable
asked Nov 22 '18 at 7:03
variablevariable
96321840
96321840
1
Some minimal reproducible code would be good in order to understand your problem? Why do you need the .bas file? Did you maybe do a syntax error?
– Lucas Raphael Pianegonda
Nov 22 '18 at 7:30
No syntax error. Compiles OK. .bas file is needed because it has lot of more global variables. Its just basic code, it looks like the link is missing as explained in the question. I know that in some frameworks you need to include the other files, but in VBA my understanding is that anything declared as Public is global and available in any module file.
– variable
Nov 22 '18 at 7:38
try something like: F1.REG_SZ instead of just REG_SZ
– Lucas Raphael Pianegonda
Nov 22 '18 at 7:41
Yes, that works, but it will mean a lot of changes (find/replace) in the code which is not what I am looking; because the same concept works in the M1 macro by directly referring to REG_SZ, instead of F1.REG_SZ. ANy other suggestions please.
– variable
Nov 22 '18 at 8:16
1
Every .bas should start withOPTION EXPLICIT
. That will avoid you some situations where a module compiles but gives a runtime error.
– Patrick Honorez
Nov 22 '18 at 9:53
|
show 3 more comments
1
Some minimal reproducible code would be good in order to understand your problem? Why do you need the .bas file? Did you maybe do a syntax error?
– Lucas Raphael Pianegonda
Nov 22 '18 at 7:30
No syntax error. Compiles OK. .bas file is needed because it has lot of more global variables. Its just basic code, it looks like the link is missing as explained in the question. I know that in some frameworks you need to include the other files, but in VBA my understanding is that anything declared as Public is global and available in any module file.
– variable
Nov 22 '18 at 7:38
try something like: F1.REG_SZ instead of just REG_SZ
– Lucas Raphael Pianegonda
Nov 22 '18 at 7:41
Yes, that works, but it will mean a lot of changes (find/replace) in the code which is not what I am looking; because the same concept works in the M1 macro by directly referring to REG_SZ, instead of F1.REG_SZ. ANy other suggestions please.
– variable
Nov 22 '18 at 8:16
1
Every .bas should start withOPTION EXPLICIT
. That will avoid you some situations where a module compiles but gives a runtime error.
– Patrick Honorez
Nov 22 '18 at 9:53
1
1
Some minimal reproducible code would be good in order to understand your problem? Why do you need the .bas file? Did you maybe do a syntax error?
– Lucas Raphael Pianegonda
Nov 22 '18 at 7:30
Some minimal reproducible code would be good in order to understand your problem? Why do you need the .bas file? Did you maybe do a syntax error?
– Lucas Raphael Pianegonda
Nov 22 '18 at 7:30
No syntax error. Compiles OK. .bas file is needed because it has lot of more global variables. Its just basic code, it looks like the link is missing as explained in the question. I know that in some frameworks you need to include the other files, but in VBA my understanding is that anything declared as Public is global and available in any module file.
– variable
Nov 22 '18 at 7:38
No syntax error. Compiles OK. .bas file is needed because it has lot of more global variables. Its just basic code, it looks like the link is missing as explained in the question. I know that in some frameworks you need to include the other files, but in VBA my understanding is that anything declared as Public is global and available in any module file.
– variable
Nov 22 '18 at 7:38
try something like: F1.REG_SZ instead of just REG_SZ
– Lucas Raphael Pianegonda
Nov 22 '18 at 7:41
try something like: F1.REG_SZ instead of just REG_SZ
– Lucas Raphael Pianegonda
Nov 22 '18 at 7:41
Yes, that works, but it will mean a lot of changes (find/replace) in the code which is not what I am looking; because the same concept works in the M1 macro by directly referring to REG_SZ, instead of F1.REG_SZ. ANy other suggestions please.
– variable
Nov 22 '18 at 8:16
Yes, that works, but it will mean a lot of changes (find/replace) in the code which is not what I am looking; because the same concept works in the M1 macro by directly referring to REG_SZ, instead of F1.REG_SZ. ANy other suggestions please.
– variable
Nov 22 '18 at 8:16
1
1
Every .bas should start with
OPTION EXPLICIT
. That will avoid you some situations where a module compiles but gives a runtime error.– Patrick Honorez
Nov 22 '18 at 9:53
Every .bas should start with
OPTION EXPLICIT
. That will avoid you some situations where a module compiles but gives a runtime error.– Patrick Honorez
Nov 22 '18 at 9:53
|
show 3 more comments
1 Answer
1
active
oldest
votes
May i suggest that instead of importing F1.bas, create a new module next to M1/M2 and copy contents of F1.
I was able to reproduce your problem, and copying the contents instead of just importing seems to be processed differently by the editor. As for the reasons why... I can't help.
Further testing shows that commenting your variable Public Const REG_SZ As Long = 1
and uncommenting it, forces the editor to recognise it again (from the imported file).
Hope this helps.
1
Thanks man, that works!
– variable
Nov 22 '18 at 10:15
Do you know if there is any way to identify such broken links (in my case there was no compile/run-time error)?
– variable
Nov 22 '18 at 10:44
Could make a sub to debug.print each variable... can't think of a better way.Sub test() If REG_SZ <> 1 Then Debug.Print "REG_SZ link missing." End Sub
– DarXyde
Nov 22 '18 at 12:35
Answer: stackoverflow.com/questions/53429300/…
– variable
Nov 23 '18 at 5:51
I always use Option Explicit at the top for my code, though not for quick testing like for your case... so yeah, that's another way, but it will pretty much stop you at one variable at the time... not particularly useful in your case, depending how often you need to import your modules.
– DarXyde
Nov 23 '18 at 10:12
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53425480%2fhow-to-integrate-link-the-bas-vba-module-file-contents-variables-into-the-vba%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
May i suggest that instead of importing F1.bas, create a new module next to M1/M2 and copy contents of F1.
I was able to reproduce your problem, and copying the contents instead of just importing seems to be processed differently by the editor. As for the reasons why... I can't help.
Further testing shows that commenting your variable Public Const REG_SZ As Long = 1
and uncommenting it, forces the editor to recognise it again (from the imported file).
Hope this helps.
1
Thanks man, that works!
– variable
Nov 22 '18 at 10:15
Do you know if there is any way to identify such broken links (in my case there was no compile/run-time error)?
– variable
Nov 22 '18 at 10:44
Could make a sub to debug.print each variable... can't think of a better way.Sub test() If REG_SZ <> 1 Then Debug.Print "REG_SZ link missing." End Sub
– DarXyde
Nov 22 '18 at 12:35
Answer: stackoverflow.com/questions/53429300/…
– variable
Nov 23 '18 at 5:51
I always use Option Explicit at the top for my code, though not for quick testing like for your case... so yeah, that's another way, but it will pretty much stop you at one variable at the time... not particularly useful in your case, depending how often you need to import your modules.
– DarXyde
Nov 23 '18 at 10:12
add a comment |
May i suggest that instead of importing F1.bas, create a new module next to M1/M2 and copy contents of F1.
I was able to reproduce your problem, and copying the contents instead of just importing seems to be processed differently by the editor. As for the reasons why... I can't help.
Further testing shows that commenting your variable Public Const REG_SZ As Long = 1
and uncommenting it, forces the editor to recognise it again (from the imported file).
Hope this helps.
1
Thanks man, that works!
– variable
Nov 22 '18 at 10:15
Do you know if there is any way to identify such broken links (in my case there was no compile/run-time error)?
– variable
Nov 22 '18 at 10:44
Could make a sub to debug.print each variable... can't think of a better way.Sub test() If REG_SZ <> 1 Then Debug.Print "REG_SZ link missing." End Sub
– DarXyde
Nov 22 '18 at 12:35
Answer: stackoverflow.com/questions/53429300/…
– variable
Nov 23 '18 at 5:51
I always use Option Explicit at the top for my code, though not for quick testing like for your case... so yeah, that's another way, but it will pretty much stop you at one variable at the time... not particularly useful in your case, depending how often you need to import your modules.
– DarXyde
Nov 23 '18 at 10:12
add a comment |
May i suggest that instead of importing F1.bas, create a new module next to M1/M2 and copy contents of F1.
I was able to reproduce your problem, and copying the contents instead of just importing seems to be processed differently by the editor. As for the reasons why... I can't help.
Further testing shows that commenting your variable Public Const REG_SZ As Long = 1
and uncommenting it, forces the editor to recognise it again (from the imported file).
Hope this helps.
May i suggest that instead of importing F1.bas, create a new module next to M1/M2 and copy contents of F1.
I was able to reproduce your problem, and copying the contents instead of just importing seems to be processed differently by the editor. As for the reasons why... I can't help.
Further testing shows that commenting your variable Public Const REG_SZ As Long = 1
and uncommenting it, forces the editor to recognise it again (from the imported file).
Hope this helps.
edited Nov 22 '18 at 9:44
answered Nov 22 '18 at 9:37
DarXydeDarXyde
24016
24016
1
Thanks man, that works!
– variable
Nov 22 '18 at 10:15
Do you know if there is any way to identify such broken links (in my case there was no compile/run-time error)?
– variable
Nov 22 '18 at 10:44
Could make a sub to debug.print each variable... can't think of a better way.Sub test() If REG_SZ <> 1 Then Debug.Print "REG_SZ link missing." End Sub
– DarXyde
Nov 22 '18 at 12:35
Answer: stackoverflow.com/questions/53429300/…
– variable
Nov 23 '18 at 5:51
I always use Option Explicit at the top for my code, though not for quick testing like for your case... so yeah, that's another way, but it will pretty much stop you at one variable at the time... not particularly useful in your case, depending how often you need to import your modules.
– DarXyde
Nov 23 '18 at 10:12
add a comment |
1
Thanks man, that works!
– variable
Nov 22 '18 at 10:15
Do you know if there is any way to identify such broken links (in my case there was no compile/run-time error)?
– variable
Nov 22 '18 at 10:44
Could make a sub to debug.print each variable... can't think of a better way.Sub test() If REG_SZ <> 1 Then Debug.Print "REG_SZ link missing." End Sub
– DarXyde
Nov 22 '18 at 12:35
Answer: stackoverflow.com/questions/53429300/…
– variable
Nov 23 '18 at 5:51
I always use Option Explicit at the top for my code, though not for quick testing like for your case... so yeah, that's another way, but it will pretty much stop you at one variable at the time... not particularly useful in your case, depending how often you need to import your modules.
– DarXyde
Nov 23 '18 at 10:12
1
1
Thanks man, that works!
– variable
Nov 22 '18 at 10:15
Thanks man, that works!
– variable
Nov 22 '18 at 10:15
Do you know if there is any way to identify such broken links (in my case there was no compile/run-time error)?
– variable
Nov 22 '18 at 10:44
Do you know if there is any way to identify such broken links (in my case there was no compile/run-time error)?
– variable
Nov 22 '18 at 10:44
Could make a sub to debug.print each variable... can't think of a better way.
Sub test() If REG_SZ <> 1 Then Debug.Print "REG_SZ link missing." End Sub
– DarXyde
Nov 22 '18 at 12:35
Could make a sub to debug.print each variable... can't think of a better way.
Sub test() If REG_SZ <> 1 Then Debug.Print "REG_SZ link missing." End Sub
– DarXyde
Nov 22 '18 at 12:35
Answer: stackoverflow.com/questions/53429300/…
– variable
Nov 23 '18 at 5:51
Answer: stackoverflow.com/questions/53429300/…
– variable
Nov 23 '18 at 5:51
I always use Option Explicit at the top for my code, though not for quick testing like for your case... so yeah, that's another way, but it will pretty much stop you at one variable at the time... not particularly useful in your case, depending how often you need to import your modules.
– DarXyde
Nov 23 '18 at 10:12
I always use Option Explicit at the top for my code, though not for quick testing like for your case... so yeah, that's another way, but it will pretty much stop you at one variable at the time... not particularly useful in your case, depending how often you need to import your modules.
– DarXyde
Nov 23 '18 at 10:12
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53425480%2fhow-to-integrate-link-the-bas-vba-module-file-contents-variables-into-the-vba%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
Some minimal reproducible code would be good in order to understand your problem? Why do you need the .bas file? Did you maybe do a syntax error?
– Lucas Raphael Pianegonda
Nov 22 '18 at 7:30
No syntax error. Compiles OK. .bas file is needed because it has lot of more global variables. Its just basic code, it looks like the link is missing as explained in the question. I know that in some frameworks you need to include the other files, but in VBA my understanding is that anything declared as Public is global and available in any module file.
– variable
Nov 22 '18 at 7:38
try something like: F1.REG_SZ instead of just REG_SZ
– Lucas Raphael Pianegonda
Nov 22 '18 at 7:41
Yes, that works, but it will mean a lot of changes (find/replace) in the code which is not what I am looking; because the same concept works in the M1 macro by directly referring to REG_SZ, instead of F1.REG_SZ. ANy other suggestions please.
– variable
Nov 22 '18 at 8:16
1
Every .bas should start with
OPTION EXPLICIT
. That will avoid you some situations where a module compiles but gives a runtime error.– Patrick Honorez
Nov 22 '18 at 9:53