Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
484to488
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
484to488
484to488
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

ARRAY als Konstante, geht das?

ARRAY als Konstante, geht das?
15.09.2004 12:44:13
Frank
Hallo an Alle,
ich benötige eine Liste von String-Ausdrücken immer wieder. Am elegantesten lässt sich das über ein Datenfeld (Array) realisieren. Z.B. so:
Option Base 1
Sub(Irgendwas)
Dim i as Integer
dim VName as Variant
VName = Array("Frank","Wiebke","Andrea")
For i = 1 to 3
MsgBox(Vname(i))
Next i
End Sub
So weit, so gut. Das funktioniert. Die Liste mit den Namen ändert sich nicht. Immer die gleichen Namen. Aber diese Namen brauche ich in mehreren Prozeduren (SUBs). Diese Prozeduren stehen alle im gleichen Modul. Deshalb möchte ich gerne dieses Array als PUBLIC CONST ..... am Anfang des Moduls definieren, um dann in allen Prozeduren darauf zugreifen zu können. Mit einem einzelnen Namen geht das so:
Public Const Name as String = "Frank"
Nur mit einem Array will mir das nicht gelingen. Geht das vieleicht gar nicht? Oder weiss da jemand einen Rat?
Ich freue mich, wenn ihr mir einen Vorschlag machen könnt.
Viele Grüße
Frank

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ARRAY als Konstante, geht das?
nighty
hi frank :)
vielleicht so :)
gruss nighty
einzufuegen in einem allgemeinen modul,redim /preserv waere noch dazu zu erwaehnen :)
public Vname as string/variant/integer/long/boolean
oder nach dimensionswuenschen :))
public Vname(5,5,5,5) as string/variant/integer/long/boolean
AW: ARRAY als Konstante, geht das?
Frank
Hallo nighty
vielen Dank für die schnelle Antwort, mit der ich aber leider nicht sehr viel anfangen kann. Redim nützt hier wohl nichts. Und den Ausdruck "preserv" kenne ich und auch die Excel-Hilfe nicht. Der Code steht übrigens, wie von Dir vorgeschlagen, in einem allgemeinen Modul.
Viele Grüße
Frank
Anzeige
AW: ARRAY als Konstante, geht das?
nighty
hi frank :)
wenn die deklarierung ueber public in einem allgemeinen modul erfolgt stehen dessen inhalte solange zur verfuegung wie die mappe geoeffnet ist,als global,die deinen sind local.
gruss nighty
AW: ARRAY als Konstante, geht das?
Frank
Hallo nighty,
es bleibt leider dabei: ich deklariere wie folgt in einem allgemeinen Modul:
Public Const VName as Variant = Array("Text","Text1","usw")
und bekomme die Fehlermeldung: "Fehler beim Kompilieren. Konstanter Ausdruck erforderlich". Nun bin ich also genauso schlau wie zuvor.
Viele Grüße
Frank
AW: ARRAY als Konstante, geht das?
15.09.2004 13:48:35
Stephan
Lieber Frank,
meines Wissens geht es nicht, ein Array als const zu deklarieren. Habe mich auch mit diesem Problem herumgeaergert und bin fuer mich auf folgenden Notbehelf gekommen: ich habe die Definition des Arrays in eine Funktion gesteckt, die mir dann den gewuenschten Eintrag ausliest. Also etwa wie folgt:
public

Function Vorname(index as integer) as string
dim names
names = Array("Anton", "Berta", "Charlie")
Vorname = names(index)
End Function

Jetzt habe ich die Namen an einer einzigen Stelle aufgelistet, und kann trotzdem von ueberall her mit Vorname(i) darauf zugreifen. In meiner Funktion habe ich sogar noch eine Fehlerbehandlung drin, falls i zu gross ist...
Herzlichst,
Stephan.
Anzeige
AW: ARRAY als Konstante, geht das?
Frank
Hallo Stephan,
vielen Dank für die Antwort. Auf die Idee mit der Funktion bin ich nicht gekommen. Gefällt mit aber. Das ist sicher nicht nur ein Notbehelf. Mein Problem kann ich mit Deinem Vorschlag bestens lösen.
Gaaaaanz herzlichen Dank und viele Güße aus dem Norden (Hamburg)
Frank
AW: ARRAY als Konstante, geht das?
15.09.2004 13:51:28
ANdreas
Hallo Frank,
Arrays können keine Konstanten sein.
Wenn Du das Array als globale Variable deklarierst, fehlt ja noch die Initialisierung der Werte. Dies müßte vor der ersten Abfrage der Werte aus dem Array passieren, am besten gleich beim Öffnen der Mappe.
Variante 1:
'Klassenmodul "DieseArbeitsmappe"
Option Explicit
Option Base 1

Private Sub Workbook_Open()
VName = Array("Frank", "Wiebke", "Andrea")
End Sub

'Standardmodul
Option Explicit
Option Base 1
Public VName As Variant
Sub Irgendwas()
Dim i As Integer, s$
For i = 1 To 3
s = s & VName(i) & vbCr
Next i
MsgBox s
End Sub
Oder die zweite Variante Lösung mithilfe einer Funktion (ohne Workbook_Open)
'Standardmodul
Option Explicit
Option Base 1
Public Function VName(intParam%) As String
Dim arrName As Variant
arrName = Array("Frank", "Wiebke", "Andrea")
On Error Resume Next
VName = arrName(intParam)
On Error GoTo 0
End Function
Sub Irgendwas()
Dim i As Integer, s$
For i = 1 To 3
s = s & VName(i) & vbCr
Next i
MsgBox s
End Sub
Hoffe das hilft weiter,
Andreas
Anzeige
AW: ARRAY als Konstante, geht das?
Frank
Hallo Andreas,
Vielen Dank für Deine Antwort. Geholfen hat mir das schon. Das Thema mit dem Klassenmodul ist aber noch ein wenig zu hoch für mich, bin erst Anfänger in VBA. Aber den Vorschlag mit der Funktion habe ich (glaube ich) verstanden. Und mein Problem lässt sich darüber ganz sicherlich lösen. Du hast mir sehr geholfen: Danke schön.
Viele Grüße
Frank
AW: ARRAY als Konstante, geht das?
nighty
hi alle :)
ich lag wohl ein wenig falsch,doch nach der alten arraybildung finde ich es leichter zu gestalten :)
gruss nighty
statt des indexes koennte man auch die var einer schleife einsetzen :)
Public DeineVar(1)

Sub makro01()
DeineVar(0) = "Dein Text"
DeineVar(1) = "Dein text"
End Sub

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige