Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Versionsabfrage bei bedingter Kompilierung

38 views
Skip to first unread message

A. Eckl

unread,
Aug 30, 2004, 5:07:11 AM8/30/04
to
Hallo,

wer kann mir bei folgendem Problem weiterhelfen.

Ich möchte VBA-Code abhängig von der Excel-Version ausführen. Dabei verwende
ich folgende Abfrage:

Sub Abfrage_Version()
xlVersion = Application.Version
#If xlVersion > 10 Then
MsgBox Application.Version
#Else
MsgBox "anderer code"
#End IF
End Sub

Es handelt sich um eine bedingte Kompilierung, d. h. es soll nur der Code
kompiliert werden, der für die entsprechende Excel-Version ausgeführt werden
soll. Dies ist notwendig, da Symbolleisten erstellt werden, welche unter
Excel 2003 durchsichtig angezeigt werden sollen. Dazu ist ein Befehl
notwendig, der unter Excel 2002 und kleiner zu einem kompilierungsfehler
führt. Jezt war mein Gedanke, die Kompilierung abhängig von der
Excel-Version durchführen zu lassen

Leider wird hier jedoch nur die Else-Bedingung ausgeführt, obwohl die
If-Bedingung unter Excel 2003 zutrifft. (Excel 2003 = Version 11, also
größer als 10)
Die Online-Hilfe sagt, dass die Zuweisung der Variable über den Befehl
#Const stattfinden soll. Es ist jedoch nicht möglich, der Anweisung Const
die Excel-Version über den Befehl application.version zuzuweisen. Scheitert
immer mit einem Fehler.

Woran könnte dies liegen? Wer hat eine Idee?

Vielen Dank für euere Infos.


--
bis denn

Alois Eckl
www.excel-inside.de

_________________________________________

Thomas Ramel

unread,
Aug 30, 2004, 5:46:56 AM8/30/04
to
Grüezi Alois

A. Eckl schrieb am 30.08.2004

> Es handelt sich um eine bedingte Kompilierung, d. h. es soll nur der Code
> kompiliert werden, der für die entsprechende Excel-Version ausgeführt werden
> soll. Dies ist notwendig, da Symbolleisten erstellt werden, welche unter
> Excel 2003 durchsichtig angezeigt werden sollen. Dazu ist ein Befehl
> notwendig, der unter Excel 2002 und kleiner zu einem kompilierungsfehler
> führt. Jezt war mein Gedanke, die Kompilierung abhängig von der
> Excel-Version durchführen zu lassen
>
> Leider wird hier jedoch nur die Else-Bedingung ausgeführt, obwohl die
> If-Bedingung unter Excel 2003 zutrifft. (Excel 2003 = Version 11, also
> größer als 10)
> Die Online-Hilfe sagt, dass die Zuweisung der Variable über den Befehl
> #Const stattfinden soll. Es ist jedoch nicht möglich, der Anweisung Const
> die Excel-Version über den Befehl application.version zuzuweisen. Scheitert
> immer mit einem Fehler.
>
> Woran könnte dies liegen? Wer hat eine Idee?

Die bedingte Kompilierung reagiert nur auf Konstanten; Konstanten können
aber nicht abhängig von variablen Bedingungen gestzt werden.

Hier beisst sich dic Katze in den Schwanz - leider.

Du musst also auch den Teil, der nur in xl2003 gebraucht wird kompilieren
lassen, dann klappt es auch.
Vielleicht wäre es noch gut, die Variable in einen Wert umzueandeln:

Sub Abfrage_Version()
xlVersion = Val(Application.Version)


If xlVersion > 10 Then
MsgBox Application.Version

Else
MsgBox "anderer code"
End IF
End Sub

--
Mit freundlichen Grüssen

Thomas Ramel
- MVP für Microsoft-Excel -

[Win XP Pro SP-1 / xl2000 SP-3]

Melanie Breden

unread,
Aug 30, 2004, 6:31:16 AM8/30/04
to
Hallo Alois,

A. Eckl schrieb:


> Ich möchte VBA-Code abhängig von der Excel-Version ausführen. Dabei verwende
> ich folgende Abfrage:
>
> Sub Abfrage_Version()
> xlVersion = Application.Version
> #If xlVersion > 10 Then
> MsgBox Application.Version
> #Else
> MsgBox "anderer code"
> #End IF
> End Sub

versuch mal die Versionsabfrage mit der Val-Funktion durchzuführen und
lager den Code, der nicht in allen Versionen erkannt wird in externe Prozeduren aus:

Sub Abfrage_Version()
If Val(Application.Version) > 10 Then
Code2003
Else
CodeUnter2003
End If
End Sub

Public Sub Code2003()
MsgBox Application.Version
End Sub

Public Sub CodeUnter2003()
MsgBox "anderer code " & Application.Version
End Sub

--
Mit freundlichen Grüssen

Melanie Breden
- Microsoft MVP für Excel -

http://excel.codebooks.de (Das Excel-VBA Codebook)
#Excel-Auftragsprogrammierung#

A. Eckl

unread,
Sep 1, 2004, 9:34:32 AM9/1/04
to
Hallo Melanie,

super hinweis.... Genau das war´s!

Vielen Dank


--
bis denn

Alois Eckl
www.excel-inside.de

_________________________________________


"Melanie Breden" <Melanie....@SPAMmvps.org> schrieb im Newsbeitrag
news:2pgdvqF...@uni-berlin.de...

0 new messages