Anzeige
Archiv - Navigation
448to452
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
448to452
448to452
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Konstantendefinition mit Abhängigkeit

Konstantendefinition mit Abhängigkeit
02.07.2004 11:37:54
Stefan
Hallo,
ich möchte in einem Makro Konstanten benutzen, deren Wert aber von anderen Konstanten bei der Deklaration abhängt.
Also bspw:
Const modus1=true
if modus1 then
const zielpfad=C:\blabla.xls
else
const zielpfad=d:\bla2.xls
end if
Leider geht das auf diese Weise bei der Deklaration eben nicht.
Kann man das denn irgendwie anders machen?
Stefan

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Konstantendefinition mit Abhängigkeit
Udo
Eine Konstante, das sagt der name, hat einen festen Wert, der nicht verändert
werden kann. Dein Abfrage wird also nie in den Else- Teil gelangen.
Dim modus1 as boolean
modus1 = TRUE
Udo
AW: Konstantendefinition mit Abhängigkeit
Stefan
Ich würde die Angabe aber lieber als Konstante in einem Definitionsteil haben.
Die Konstante soll auch nicht den Wert ändern,sondern ich lege den Wert der Boolschen Variablen Fest.
Bspw:
const modus1=True oder False
Dementsprechend sollen dann die anderen Konstanten definiert werden.
In C gibt es dafür den PreCompiler und damit bspw den Befehl
#ifdef modus1 ...
#else ...
Ich dachte sowas gibts vielleicht auch unter VBA
Stefan
Anzeige
AW: Konstantendefinition mit Abhängigkeit
Reinhard
Hi Stefan,
vielleicht nützt dir der Code was:

Sub test()
Const modus1 = True
Const zielpfad = "C:\blabla.xls"
With Application.VBE.ActiveVBProject.VBComponents("Modul1").CodeModule
If modus1 Then
.DeleteLines 3
.InsertLines 3, "const zielpfad=""C:\blabla.xls"""
Else
.DeleteLines 3
.InsertLines 3, "const zielpfad=""d:\bla2.xls"""
End If
End With
'newHour = Hour(Now())
'newMinute = Minute(Now())
'newSecond = Second(Now()) + 10
'waitTime = TimeSerial(newHour, newMinute, newSecond)
'Application.Wait waitTime
MsgBox zielpfad
End Sub

Allerdings zeigt die msgbox erst nach zweimaligen aufruf von Test den neuen zielpfad an wenn Änderungen an modus1 geschahen. Im Code selbst wird der zielpfad schon bei einem Durchlauf geändert.
Gruß
Reinhard
Anzeige
AW: STOP!
FP
Hallo Stefan,
DEFINITION: Eine "Konstante" soll, wie der Begriff schon sagt "konstant", also immer gleich bleiben!
Eine Abfrage à la "If Modus1", wobei Modus1 ein "konstanter" Wahrheitswert ist, ist daher IMHO Schwachsinn! ( entweder ist die Bedingung immer wahr oder immer falsch )
Was Du brauchst, ist in diesem Fall keine Konstante sondern eine öffentliche Variable.
Soferne Du diese Variable im restlichen Code nicht mehr änderst, behält sie auch ihren Anfangswert bis zur Beendung des Codes - wie eine Konstante ;-)
Servus aus dem Salzkammergut
Franz
so gehts!
05.07.2004 14:25:43
Otto
Hallo Stefan,
Meine Testumgebung: Excel 9.0 SR-1, Multilingual unter Windows 2000 SP-4
was hältst Du von:
Option Explicit
#Const modus1 = False
#If modus1 Then
Const strZielpfad As String = "C:\blabla.xls"
#Else
Const strZielpfad As String = "C:\bla2.xls"
#End If

Sub Haupt()
MsgBox "Der Wert von strZielpfad ist " & strZielpfad
End Sub

Gruß Otto
Anzeige
EXTRAKLASSE
Stefan
Super,
vielen Dank. Das ist genau das was ich gesucht habe. Hatte schon befürchtet VB kennt keine PreCompiler-Befehle.
Nochmals vielen Dank.
Stefan

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige