Set Const Conditionally at compile time in VBA
I'd like to set the value of a const variable conditionally at Compile time. I thought i could achieve this using vba compiler directives #If #Else etc. as below, but have been unsuccessful so far:
#If Environ("username") = "myusername" Then
Public Const ErrorHandling As Boolean = False
#Else
Public Const ErrorHandling As Boolean = True
#End If
When i run this code, im getting an error that the Environ variable is undefined.
Would something like this even be possible? Or do i just have to make my 'ErrorHandling' variable Public (not Const), and set it at the initialisation of my code?
Thanks in advance,
cjk
excel vba excel-vba excel-2010
add a comment |
I'd like to set the value of a const variable conditionally at Compile time. I thought i could achieve this using vba compiler directives #If #Else etc. as below, but have been unsuccessful so far:
#If Environ("username") = "myusername" Then
Public Const ErrorHandling As Boolean = False
#Else
Public Const ErrorHandling As Boolean = True
#End If
When i run this code, im getting an error that the Environ variable is undefined.
Would something like this even be possible? Or do i just have to make my 'ErrorHandling' variable Public (not Const), and set it at the initialisation of my code?
Thanks in advance,
cjk
excel vba excel-vba excel-2010
Precompiler directives are evaluated before compilation; any function that's defined in a referenced type library (likeVBA.Interaction.Environ
) effectively doesn't exist yet at that point.
– Mathieu Guindon
Nov 20 '18 at 21:29
add a comment |
I'd like to set the value of a const variable conditionally at Compile time. I thought i could achieve this using vba compiler directives #If #Else etc. as below, but have been unsuccessful so far:
#If Environ("username") = "myusername" Then
Public Const ErrorHandling As Boolean = False
#Else
Public Const ErrorHandling As Boolean = True
#End If
When i run this code, im getting an error that the Environ variable is undefined.
Would something like this even be possible? Or do i just have to make my 'ErrorHandling' variable Public (not Const), and set it at the initialisation of my code?
Thanks in advance,
cjk
excel vba excel-vba excel-2010
I'd like to set the value of a const variable conditionally at Compile time. I thought i could achieve this using vba compiler directives #If #Else etc. as below, but have been unsuccessful so far:
#If Environ("username") = "myusername" Then
Public Const ErrorHandling As Boolean = False
#Else
Public Const ErrorHandling As Boolean = True
#End If
When i run this code, im getting an error that the Environ variable is undefined.
Would something like this even be possible? Or do i just have to make my 'ErrorHandling' variable Public (not Const), and set it at the initialisation of my code?
Thanks in advance,
cjk
excel vba excel-vba excel-2010
excel vba excel-vba excel-2010
asked Nov 20 '18 at 20:34
c jk
236
236
Precompiler directives are evaluated before compilation; any function that's defined in a referenced type library (likeVBA.Interaction.Environ
) effectively doesn't exist yet at that point.
– Mathieu Guindon
Nov 20 '18 at 21:29
add a comment |
Precompiler directives are evaluated before compilation; any function that's defined in a referenced type library (likeVBA.Interaction.Environ
) effectively doesn't exist yet at that point.
– Mathieu Guindon
Nov 20 '18 at 21:29
Precompiler directives are evaluated before compilation; any function that's defined in a referenced type library (like
VBA.Interaction.Environ
) effectively doesn't exist yet at that point.– Mathieu Guindon
Nov 20 '18 at 21:29
Precompiler directives are evaluated before compilation; any function that's defined in a referenced type library (like
VBA.Interaction.Environ
) effectively doesn't exist yet at that point.– Mathieu Guindon
Nov 20 '18 at 21:29
add a comment |
1 Answer
1
active
oldest
votes
You can only use constants in the conditional if statement. Either you set it in the VBAProject Properties, explained here, or in your code.
Sub TestIt()
#Const Errorhandling = False
#If Errorhandling Then
Debug.Print "Error on"
#Else
Debug.Print "Error off"
#End If
End Sub
You find further documentation here and a page on pre-defined constants
Update: As Comintern pointed out correctly my statememt only constants is not completely true, see section 5.6.16.2 of the language spec
2
This is not strictly true. There is a small subset of functions that can be used, as described in section 5.6.16.2 of the language spec.
– Comintern
Nov 20 '18 at 21:07
@Comintern: Thanks! I did not know that.
– Storax
Nov 20 '18 at 21:09
ok, thanks. So my best option is probably to build my conditions into the initialisation of the code. (Interesting how you can use the vba project properties for const declaration as well...)
– c jk
Nov 20 '18 at 21:20
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%2f53401097%2fset-const-conditionally-at-compile-time-in-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
You can only use constants in the conditional if statement. Either you set it in the VBAProject Properties, explained here, or in your code.
Sub TestIt()
#Const Errorhandling = False
#If Errorhandling Then
Debug.Print "Error on"
#Else
Debug.Print "Error off"
#End If
End Sub
You find further documentation here and a page on pre-defined constants
Update: As Comintern pointed out correctly my statememt only constants is not completely true, see section 5.6.16.2 of the language spec
2
This is not strictly true. There is a small subset of functions that can be used, as described in section 5.6.16.2 of the language spec.
– Comintern
Nov 20 '18 at 21:07
@Comintern: Thanks! I did not know that.
– Storax
Nov 20 '18 at 21:09
ok, thanks. So my best option is probably to build my conditions into the initialisation of the code. (Interesting how you can use the vba project properties for const declaration as well...)
– c jk
Nov 20 '18 at 21:20
add a comment |
You can only use constants in the conditional if statement. Either you set it in the VBAProject Properties, explained here, or in your code.
Sub TestIt()
#Const Errorhandling = False
#If Errorhandling Then
Debug.Print "Error on"
#Else
Debug.Print "Error off"
#End If
End Sub
You find further documentation here and a page on pre-defined constants
Update: As Comintern pointed out correctly my statememt only constants is not completely true, see section 5.6.16.2 of the language spec
2
This is not strictly true. There is a small subset of functions that can be used, as described in section 5.6.16.2 of the language spec.
– Comintern
Nov 20 '18 at 21:07
@Comintern: Thanks! I did not know that.
– Storax
Nov 20 '18 at 21:09
ok, thanks. So my best option is probably to build my conditions into the initialisation of the code. (Interesting how you can use the vba project properties for const declaration as well...)
– c jk
Nov 20 '18 at 21:20
add a comment |
You can only use constants in the conditional if statement. Either you set it in the VBAProject Properties, explained here, or in your code.
Sub TestIt()
#Const Errorhandling = False
#If Errorhandling Then
Debug.Print "Error on"
#Else
Debug.Print "Error off"
#End If
End Sub
You find further documentation here and a page on pre-defined constants
Update: As Comintern pointed out correctly my statememt only constants is not completely true, see section 5.6.16.2 of the language spec
You can only use constants in the conditional if statement. Either you set it in the VBAProject Properties, explained here, or in your code.
Sub TestIt()
#Const Errorhandling = False
#If Errorhandling Then
Debug.Print "Error on"
#Else
Debug.Print "Error off"
#End If
End Sub
You find further documentation here and a page on pre-defined constants
Update: As Comintern pointed out correctly my statememt only constants is not completely true, see section 5.6.16.2 of the language spec
edited Nov 20 '18 at 21:14
answered Nov 20 '18 at 20:54
Storax
4,0833518
4,0833518
2
This is not strictly true. There is a small subset of functions that can be used, as described in section 5.6.16.2 of the language spec.
– Comintern
Nov 20 '18 at 21:07
@Comintern: Thanks! I did not know that.
– Storax
Nov 20 '18 at 21:09
ok, thanks. So my best option is probably to build my conditions into the initialisation of the code. (Interesting how you can use the vba project properties for const declaration as well...)
– c jk
Nov 20 '18 at 21:20
add a comment |
2
This is not strictly true. There is a small subset of functions that can be used, as described in section 5.6.16.2 of the language spec.
– Comintern
Nov 20 '18 at 21:07
@Comintern: Thanks! I did not know that.
– Storax
Nov 20 '18 at 21:09
ok, thanks. So my best option is probably to build my conditions into the initialisation of the code. (Interesting how you can use the vba project properties for const declaration as well...)
– c jk
Nov 20 '18 at 21:20
2
2
This is not strictly true. There is a small subset of functions that can be used, as described in section 5.6.16.2 of the language spec.
– Comintern
Nov 20 '18 at 21:07
This is not strictly true. There is a small subset of functions that can be used, as described in section 5.6.16.2 of the language spec.
– Comintern
Nov 20 '18 at 21:07
@Comintern: Thanks! I did not know that.
– Storax
Nov 20 '18 at 21:09
@Comintern: Thanks! I did not know that.
– Storax
Nov 20 '18 at 21:09
ok, thanks. So my best option is probably to build my conditions into the initialisation of the code. (Interesting how you can use the vba project properties for const declaration as well...)
– c jk
Nov 20 '18 at 21:20
ok, thanks. So my best option is probably to build my conditions into the initialisation of the code. (Interesting how you can use the vba project properties for const declaration as well...)
– c jk
Nov 20 '18 at 21:20
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.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- 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%2f53401097%2fset-const-conditionally-at-compile-time-in-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
Precompiler directives are evaluated before compilation; any function that's defined in a referenced type library (like
VBA.Interaction.Environ
) effectively doesn't exist yet at that point.– Mathieu Guindon
Nov 20 '18 at 21:29