ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Variable IF statement (in VBA) (https://www.excelbanter.com/excel-programming/366496-variable-if-statement-vba.html)

Post Tenebras Lux

Variable IF statement (in VBA)
 
I would like to build a variable IF statement, that is being run in VBA code,
that draws the operand (, < , = , =, <=) from a cell on the spreadsheet.
The purpose is to permit the user to test a variety of conditions (which the
rest of the code does). Sort of like allowing the user to build an SQL query
on the fly.

For example:
I want to replace the following code:
If Signal 0 and Signal < 100 then
'do something
End if

with something like this:

Dim strOperand1 as string, strOperand2 as string

If Signal strOperand1 0 and Signal strOperand2 100 then
' do something
End if

strOperand1 and strOperand2 would contain, for example, "" and "<",
respectively. Each of these values would be entered by the spreadsheet user
into a cell directly (which is range named - so that strOperand1 =
Range("Operand1").value - for example).

I've tried & Evaluate(Operand1) & , but that doesn't work.

Any suggestions would be greatly appreciated!



Die_Another_Day

Variable IF statement (in VBA)
 
Try using Select Case

Case "<"
Blah,Blah
Case ""
Blah,Blah
Etc...

Post back if you have problems...

HTH

Die_Another_Day

Post Tenebras Lux wrote:
I would like to build a variable IF statement, that is being run in VBA code,
that draws the operand (, < , = , =, <=) from a cell on the spreadsheet.
The purpose is to permit the user to test a variety of conditions (which the
rest of the code does). Sort of like allowing the user to build an SQL query
on the fly.

For example:
I want to replace the following code:
If Signal 0 and Signal < 100 then
'do something
End if

with something like this:

Dim strOperand1 as string, strOperand2 as string

If Signal strOperand1 0 and Signal strOperand2 100 then
' do something
End if

strOperand1 and strOperand2 would contain, for example, "" and "<",
respectively. Each of these values would be entered by the spreadsheet user
into a cell directly (which is range named - so that strOperand1 =
Range("Operand1").value - for example).

I've tried & Evaluate(Operand1) & , but that doesn't work.

Any suggestions would be greatly appreciated!



Jim Thomlinson

Variable IF statement (in VBA)
 
Evaluate works for me...

In cell A1 put
In cell A2 put <
In cell A3 put =

Now run this code...
Sub test()
MsgBox Evaluate("10 " & Range("A1").Value & " 5")
MsgBox Evaluate("10 " & Range("A2").Value & " 5")
MsgBox Evaluate("10 " & Range("A3").Value & " 5")
End Sub

It is important to note that evaluate takes a full equation as it's
argument, not just the operand.
--
HTH...

Jim Thomlinson


"Post Tenebras Lux" wrote:

I would like to build a variable IF statement, that is being run in VBA code,
that draws the operand (, < , = , =, <=) from a cell on the spreadsheet.
The purpose is to permit the user to test a variety of conditions (which the
rest of the code does). Sort of like allowing the user to build an SQL query
on the fly.

For example:
I want to replace the following code:
If Signal 0 and Signal < 100 then
'do something
End if

with something like this:

Dim strOperand1 as string, strOperand2 as string

If Signal strOperand1 0 and Signal strOperand2 100 then
' do something
End if

strOperand1 and strOperand2 would contain, for example, "" and "<",
respectively. Each of these values would be entered by the spreadsheet user
into a cell directly (which is range named - so that strOperand1 =
Range("Operand1").value - for example).

I've tried & Evaluate(Operand1) & , but that doesn't work.

Any suggestions would be greatly appreciated!



Post Tenebras Lux

Variable IF statement (in VBA)
 

If Evaluate(lngLower & strOperand_L & aIndicator(i, 0)) And
Evaluate(aIndicator(i, 0) & strOperand_R & lngUpper) Then



Works like a charm. Thanks!



"Jim Thomlinson" wrote:

Evaluate works for me...

In cell A1 put
In cell A2 put <
In cell A3 put =

Now run this code...
Sub test()
MsgBox Evaluate("10 " & Range("A1").Value & " 5")
MsgBox Evaluate("10 " & Range("A2").Value & " 5")
MsgBox Evaluate("10 " & Range("A3").Value & " 5")
End Sub

It is important to note that evaluate takes a full equation as it's
argument, not just the operand.
--
HTH...

Jim Thomlinson


"Post Tenebras Lux" wrote:

I would like to build a variable IF statement, that is being run in VBA code,
that draws the operand (, < , = , =, <=) from a cell on the spreadsheet.
The purpose is to permit the user to test a variety of conditions (which the
rest of the code does). Sort of like allowing the user to build an SQL query
on the fly.

For example:
I want to replace the following code:
If Signal 0 and Signal < 100 then
'do something
End if

with something like this:

Dim strOperand1 as string, strOperand2 as string

If Signal strOperand1 0 and Signal strOperand2 100 then
' do something
End if

strOperand1 and strOperand2 would contain, for example, "" and "<",
respectively. Each of these values would be entered by the spreadsheet user
into a cell directly (which is range named - so that strOperand1 =
Range("Operand1").value - for example).

I've tried & Evaluate(Operand1) & , but that doesn't work.

Any suggestions would be greatly appreciated!




All times are GMT +1. The time now is 05:06 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com