Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1512to1516
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
Inhaltsverzeichnis

"Variable" Variablennamen [VBA]

"Variable" Variablennamen [VBA]
22.09.2016 13:41:40
André
Hallo zusammen,
ich habe eine For Schleife in der eine Variable hochgezählt wird ich möchte die aktuelle Nummer in den Variablennamen integrieren und verwenden.
Beispiel:
Public TEST As String
SHEET_1 = "TEST1"
SHEET_2 = "TEST2"
SHEET_3 = "TEST3"
SHEET_4 = "TEST4"
For j = 1 To 4
TEST = SHEET_j
Next j

Ich will also das "j" unterbringen. (PS: Das Programm hat in diesem Fall natürlich noch keinen Sinn da die Variable eh überschrieben wird. Soll nur ein Beispiel darstellen!
Freue mich über eure Kommentare!
Gruß
André

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: "Variable" Variablennamen [VBA]
22.09.2016 13:53:50
UweD
Hallo André
so?

Dim StrSheet(1 To 4) As String, Test As String
Dim i As Integer
For i = 1 To 4
Test = StrSheet(i)
Next i
LG UweD
AW: "Variable" Variablennamen [VBA]
22.09.2016 15:48:33
André
Hallo,
das ist nicht das, wonach ich gesucht habe. Es funktioniert dennoch. Arrays sind hier natürlich die schönere Lösung ;-). Es funktioniert so! Auch wenn es sinnlos erscheint ... aus Interesse: Geht das dann tatsächlich auch ohne ein Array zu verwenden? So dass ich dann tatsächlich den Namen der Variable beeinflussen kann und nicht die "Position" in der der Wert sitzt?
Danke :)
Gruß
André
Anzeige
Datenfeld!
22.09.2016 13:55:24
Rudi
Hallo,
SHEET(1) = "TEST1"
SHEET(2) = "TEST2"
SHEET(3) = "TEST3"
SHEET(4) = "TEST4"
For j = 1 To 4
TEST = SHEET(j)
Next j
Gruß
Rudi
AW: Datenfeld!
22.09.2016 15:48:48
André
Hallo,
das ist nicht das, wonach ich gesucht habe. Es funktioniert dennoch. Arrays sind hier natürlich die schönere Lösung ;-). Es funktioniert so! Auch wenn es sinnlos erscheint ... aus Interesse: Geht das dann tatsächlich auch ohne ein Array zu verwenden? So dass ich dann tatsächlich den Namen der Variable beeinflussen kann und nicht die "Position" in der der Wert sitzt?
Danke :)
Gruß
André
Anzeige
AW: Datenfeld!
22.09.2016 18:27:06
Nepumuk
Hallo,
eine andere Möglichkeit per Collection:
Option Explicit

Public TEST As String

Public Sub Beispiel()
    
    Dim j As Long
    Dim objCollection As Collection
    Set objCollection = New Collection
    
    Call objCollection.Add(Item:="TEST1", Key:="SHEET_1")
    Call objCollection.Add(Item:="TEST2", Key:="SHEET_2")
    Call objCollection.Add(Item:="TEST3", Key:="SHEET_3")
    Call objCollection.Add(Item:="TEST4", Key:="SHEET_4")
    
    For j = 1 To 4
        TEST = objCollection("SHEET_" & CStr(j))
    Next j
    
    Set objCollection = Nothing
End Sub

Gruß
Nepumuk
Anzeige
AW: "Variable" Variablennamen [VBA]
22.09.2016 22:21:29
Zwenn
Hallo André,
dynamische Variablennamen, wie Du sie möchtest, werden von VBA nicht unterstützt. Ich wüßte ehrlich gesagt auch nicht, wozu man so ein unübersichtliches Konstrukt verwenden sollte. Geht das in anderen Sprachen? Denn ich habe das noch nie gesehen. Trotz Kenntnissen in C, Java, (Turbo) Pascal, PHP, Javascript und noch ein paar anderen.
Die Lösung mit Arrays wurde Dir ja bereits präsentiert.
Viele Grüße,
Zwenn
Wenn's mal sein MUSS, kann man das bspw ...
23.09.2016 01:50:52
Luc:-?
…so machen, André:
Dokument-Klassenmodul DieseArbeitsmappe:
Option Explicit
Public XSheet1 As Worksheet, XSheet2 As Worksheet, XSheet3 As Worksheet
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Set XSheet1 = Nothing: Set XSheet2 = Nothing: Set XSheet3 = Nothing
End Sub
Private Sub Workbook_Open()
Set XSheet1 = Tabelle1: Set XSheet2 = Tabelle2: Set XSheet3 = Tabelle3
End Sub
Normales Modul:
Option Explicit
Sub varVarTest()
Dim i As Integer, Sh As Worksheet
For i = 1 To 3
Set Sh = CallByName(ThisWorkbook, "XSheet" & CStr(i), VbGet)
MsgBox Sh.Name
Next i
End Sub
Dazu müssen die BasisVariablen der namensvariablen Variable aber zwingend in einem Klassenmodul angelegt wdn, sonst können sie so nicht angesprochen wdn.
Morrn, Luc :-?
Besser informiert mit …
Anzeige
AW: Wenn's mal sein MUSS, kann man das bspw ...
23.09.2016 08:58:20
André
Danke ;-). Das schaut gut aus!

86 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige