Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Bedingte Codeausführung per Attribut

Betrifft: Bedingte Codeausführung per Attribut von: Dudzik
Geschrieben am: 23.06.2008 10:03:00

Hallo Excel VBA-Profis,
ich habe folgendes Problem. In einer Anwendung nutze ich das List.Object und möchte diese Anwendung auch unter Excel 2000 anwenden. Mit Hilfe der bedingten Compilation ist es möglich je nach Bedingung der vordefinierten Konstanten einen Teil des Codes ausführen zu lassen und den anderen Teil zu vernachlässigen. Leider muss ich dafür eine Konstante definieren. Ich möchte aber diese bedingte Codeausführung versionsabhängig gestalten, etwa wie im folgenden Codeabschnitt, so dass ich keine Konstante mit #Const blnVersion = True definieren kann:

Dim intZahl As Integer
Dim blnVersion As Boolean

intZahl = Val(Application.Version)

If intZahl = 11 Then
blnVersion = True
Else
blnVersion = False
End If

#If blnVersion Then
Msgbox "Anweisung für Version 11"
#Else
MsgBox "Anweisung für Version 9"
#End If

Leider funktioniert das nicht. Für jede Hilfe wäre ich sehr dankbar!!!

  

Betrifft: AW: Bedingte Codeausführung per Attribut von: Hajo_Zi
Geschrieben am: 23.06.2008 10:13:10

Hallo Nick,

warum schreibst Du nicht
If Val(Application.Version) =11Then
Msgbox "Anweisung für Version 11"
Elseif Val(Application.Version) =9 Then
MsgBox "Anweisung für Version 9"
End If

GrußformelHomepage


  

Betrifft: AW: Bedingte Codeausführung per Attribut von: Dudzik
Geschrieben am: 23.06.2008 10:54:53

Das List.Object ist ein Objekt, was erst in Excel 2003 eingeführt wurde. Es wandelt einen Bereich in eine Liste um. Beim Versuch der Codeausführung in Excel 2000 gibt es einen Laufzeitfehler, weil der Compiler das Objekt in Excel 2000 nicht erkennen kann. Somit reicht die einfache If Then Else Anweisung nicht aus. Ich muss unbedingt die Codeausführung bedingt compilieren.


  

Betrifft: AW: Bedingte Codeausführung per Attribut von: Rudi Maintaire
Geschrieben am: 23.06.2008 10:35:18

Hallo,
was für ein List-Objekt?

Gruß
Rudi


  

Betrifft: AW: Bedingte Codeausführung per Attribut von: Dudzik
Geschrieben am: 23.06.2008 10:59:14

Das List.Object ist ein Objekt, was erst in Excel 2003 eingeführt wurde. Es wandelt einen Bereich in eine Liste um. Damit werden einige Datenbankfunktionen bereitgestellt.


  

Betrifft: AW: Bedingte Codeausführung per Attribut von: Rudi Maintaire
Geschrieben am: 23.06.2008 11:06:41

Hallo,
danke für die Antwort, ich habe XP.
Es wird dir nichts anderes übrig bleiben, als unter 2000 zu entwickeln.
Gibt es in 2003 evtl eine Compilerkonstante, die du abfragen kannst?

Gruß
Rudi


  

Betrifft: AW: Bedingte Codeausführung per Attribut von: Dudzik
Geschrieben am: 23.06.2008 11:20:37

Ich kenne keine, die ich verwenden könnte, und in meinen VBA-Büchern wird nur auf dieses Vorgehen mit einer Konstanten verwiesen, wobei Monika Weber in Ihrem umfangreichen Handbuch die folgende Variante in einem UserForm.Activate Ereignis vorgestellt hat:
#If VBA6 = 0 Then
' Wenn XL97, dann
EnableWindow FindWindow("XLMAIN", Application.Caption), 1
#End If
Jedoch kann ich diese #If Anweisung nicht auf die Application.Version anwenden.


  

Betrifft: AW: Bedingte Codeausführung per Attribut von: Rudi Maintaire
Geschrieben am: 23.06.2008 11:33:13

Hallo,
VBA6 ist eine Compilerkonstante.
Schau in die Hilfe.

Gruß
Rudi


  

Betrifft: AW: Bedingte Codeausführung per Attribut von: Dudzik
Geschrieben am: 23.06.2008 11:44:18

Du hast Recht - ich kann aber keine Compilerkonstante bezogen auf die Application.Version finden. Gibt es eine Möglichkeit, eine Applicationsversions-Konstante zu ermitteln?


  

Betrifft: AW: Bedingte Codeausführung per Attribut von: Daniel
Geschrieben am: 23.06.2008 23:58:14

Hi
probier doch mal Application.Version aus. Diese Funktion spuckt bei mir die Versions-Nr. der Excel-Application aus.

gruß, Daniel


  

Betrifft: AW: Bedingte Codeausführung per Attribut von: Dudzik
Geschrieben am: 24.06.2008 09:09:07

Application.Version ist nur für eine normale If Then Else Anweisung geeignet. Da ich ein neues Objekt im Code eingebunden habe, muss ich unbedingt eine Compilerkonstante einbeziehen, um diesen Code auch in älteren Versionen laufen zu lassen. Leider habe ich noch keine Compilerconstante für Excel 2003 gefunden. Vielleicht hast Du eine Idee, wie ich die ganze Sache umgehen kann.


 

Beiträge aus den Excel-Beispielen zum Thema "Bedingte Codeausführung per Attribut"