Clever-Excel-Forum

Normale Version: Erklärung bzw. Verständnisfrage
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Zusammen,

ich brauche zwar aktuell keine Lösung bin aber in einer Excel Tabelle auf folgendes gestoßen, was ich bisher noch nie gesehen habe. Ich hoffe ihr könnt mir den Code bzw. eine Erklärung geben, damit ich den Code verstehe :)

Zuerst.
"Dim xyz(1000)"
-> was macht das mit der variablen? ist das eine Formatierung als Zahlenformat?

Danach kommt:
"Dim v1(100) as String
  Dim vers_test as String"
-> was bedeutet hier die 100?

Es folgt:
"Sheets("Tabelle2").Select

i = 2

While ActiveSheet.Cells(i, 1) <> ""
    vers(v) = ActiveSheet.Cells(i, 1)
    vers_bez(v) = ActiveSheet.Cells(i, 2)
    v = v + 1
    i = i + 1
Wend


Sheets("Tabelle3").Select
i = 2
While ActiveSheet.Cells(i, 1) <> ""
    vers_test = ActiveSheet.Cells(i, 2)
    For x = 0 To v
        If vers_test = vert(x) Then
            ActiveSheet.Cells(i, 10) = vers_bez(x)
            GoTo weiter3:
        End If
    Next x
weiter3:
    i = i + 1
Wend"


Die Datei hat mehrere Reiter, und meiner Meinung nach vergibt die Formel für einen Bestimmten Bereich eine eindeutige Variable, sodass diese dann auf dem nächsten Reiter durch ein Vergleich, abgerufen und eingetragen werden kann.

Was sagen hier die Profis? Ich finde den einfach spannend, habe aber bei meinen Recherchen nichts hierzu gefunden.

Danke vorab für eure fachliche und sachliche Hilfe!
Hallo,

zu "Dim xyz(1000)" hier werden der Variablen xyz hundert Dimensionen zugewiesen. Alternativ könnte man schreiben: yxz1, xyz2 usw. Spart also Schreiberei. 

"Sheets("Tabelle2").Select  Selektiert die Tabelle2, ein Befehl dessen Verwendung überflüssig, deshalb vermieden werden sollte.

Für die beiden Schleifen muss man etwas weiter ausholen, da kommt noch was.

Hallo,

hier der Rest:

i = 2
While ActiveSheet.Cells(i, 1) <> ""
    vers(v) = ActiveSheet.Cells(i, 1)
    vers_bez(v) = ActiveSheet.Cells(i, 2)
    v = v + 1
    i = i + 1
Wend


 
 
Hier wird auf dem aktiven Tabellenblatt die Spalte A (Cells(i, 1) darauf überprüft, ob die Zellen gefüllt sind (<>““), sobald die 1. Zelle leer ist, erfolgt der Ausstieg.
Die Inhalte aus Spalte A werden dann in die Variable vers(v) geschrieben. Die Inhalte aus Spalte B kommen in die Variable ver_bez(v).
An dieser Vorgehensweise erkennst du den Vorteil von Feldvariablen, die kann man über Schleifen befüllen, was bei Variablen dieser Art (vers1) nicht so gut möglich ist.
 
Das ist eher ein schlechtes Beispiel:
 
Sheets("Tabelle3").Select
i = 2
While ActiveSheet.Cells(i, 1) <> ""
    vers_test = ActiveSheet.Cells(i, 2)
    For x = 0 To v
        If vers_test = vert(x) Then
            ActiveSheet.Cells(i, 10) = vers_bez(x)
            GoTo weiter3:
        End If
    Next x
weiter3:
    i = i + 1
Wend"

 
Über Select hatte ich mich ja schon vertieft. Die Bezeichnung ActiveSheet verwende ich gar nicht. Da könnte man zum Beispiel: Sheets(„Tabelle3“).Cells(i, 2) wobei Sheets(„Tabelle3“) entfallen kann, wenn das Makro auf verschiedenen Blättern Anwendung finden soll.
GoTo weiter3: geht gar nicht. Das kann man auch so schreiben, (Auszug):
            ActiveSheet.Cells(i, 10) = vers_bez(x)
            i = i + 1
        End If
    Next x
Wend"