Run code based on version

A

Anthony

I am aware of the application.version function and I can also use the
conditional compile using the #if #else #endif statements.

What I need to do though is determine the version at run time and then run
different code depending. The conditional code needs a const which I cant
set at run time.

The various code is used to close of certain functionality of the workbook
etc... and this varies between versions.

Thanks in advance


Anthony
 
P

Peter T

The conditional compile will only distinguish betweem XL2000+ and XL97

#If VBA6 Then
s = Replace("AZ", "Z", "B")
#Else
s = Application.Substitute("AZ", "Z", "B")
#End If

You can trap Excel's version like this
xlVer = Val(Left$(Application.Version, 2))

If you want to call a Excel function that was say introduced in XP and will
fail in earlier versions, place the code in a dedicated module for later
version stuff that will never be called in earlier versions.

Alternatively, depending on what you are doing, you might be able to get
away with something like this -

Dim oRng as Object ' note as object not as Range

If xlVer = 9 then
oRng.some-XL-Func(arg's)
Else
oRng.some-XL-Func(extended later version arg's)
End if

above would be suitable with functions like Find and Sort

Regards,
Peter T
 
G

Gary Keramidas

not sure what you're looking for, but maybe something like this. when the
workbook opens, it sets the public variable. then the main sub runs whichever
sub based on the version.

in this workbook module:

Private Sub Workbook_Open()
eVersion = Application.Version
End Sub

in a general module:

Public eVersion As Long

Sub test1()
MsgBox "this runs if excel 2003"
End Sub
Sub test2()
MsgBox "this runs if excel 2007"
End Sub

Sub main_sub()
If eVersion = 11 Then
test1
ElseIf eVersion = 12 Then
test2
End If
End Sub
 

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