Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Erklärung bzw. Verständnisfrage
#1
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!
Antworten Top
#2
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"
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
[-] Folgende(r) 1 Nutzer sagt Danke an Klaus-Dieter für diesen Beitrag:
  • Westhofen
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste