Clever-Excel-Forum

Normale Version: VBA Code verstehen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

hoffe Euch allen geht es gut! :)

Im Bezug auf diesen Beitrag:

Code schneller machen, viel schneller!? (clever-excel-forum.de)

versuche ich mir folgenden Code zu erklären, jedoch verstehe ich das nicht ganz. Ich habe versucht die Kommentare hinter den Sternchen unten zu ergänzen, so wie ich den Code verstehe, oder eben auch gar nicht:
Code:
Sub BezeichnungENG()
  With GetObject("C:\Temp123\Artikel.xlsm") * Mit der Datei Artikel.xlsm
     sn = .Sheets("Bez. Englisch").UsedRange.Resize(, 3) * Aus Blatt "Bez. Englisch" den benutzen Bereich Spalte A bis C in sn schreiben
     .Close 0 * keine Ahnung?
  End With * Ende mit dem oberen With :)
  With ThisWorkbook.Sheets("Materialdaten").UsedRange.Resize(, 5) * mit diesem Workbook, Blatt "Materialdaten" benutzter Bereich Spalte A bis E
    sp = .Value * schreibe den Bereich mit diesem Workbook, Blatt "Materialdaten" benutzter Bereich Spalte A bis E in sp
    With CreateObject("scripting.dictionary") * keine Ahnung?
       For j = 2 To UBound(sn) * für j = 2 bis sn letzte Zeile
          .Item(sn(j, 1)) = sn(j, 3) * keine Ahnung?
       Next * nexter j

       For j = 2 To UBound(sp) * für j = 2 bis sp letzte Zeile
         If .exists(sp(j, 1)) Then sp(j, 5) = .Item(sp(j, 1)) *keine Ahnung?
      Next * nexter j
    End With * Ende mit dem Createobject with
    .Value = sp * keine Ahnung?
  End With * Ende mit dem With Thisworkbook... With
End Sub

Bitte nicht lachen! :) Kann jemand sagen ob meine Kommentare korrekt sind und bei denen wo ich keine Ahnung habe evtl. das mit einer für Blöde verständlichen Sprache/Worte zu erklären?

Vielen lieben Dank im Voraus
LG 
Alexandra
Hallo,

der Versuch einer Erklärung:

In Worten: Die Tabelle "Materialdaten" wird mit den Werten aus "Artikel.xlsm" aktualisiert.

Ein paar Ergänzungen im Code:

Code:
Sub BezeichnungENG()
  With GetObject("C:\Temp123\Artikel.xlsm") * Mit der Datei Artikel.xlsm
     sn = .Sheets("Bez. Englisch").UsedRange.Resize(, 3) * Aus Blatt "Bez. Englisch" den benutzen Bereich Spalte A bis C in sn schreiben
     .Close 0 * keine Ahnung? -> Workbook "Artikel.xlsm" schließen ohne speichern
  End With * Ende mit dem oberen With :)

  With ThisWorkbook.Sheets("Materialdaten").UsedRange.Resize(, 5) * mit diesem Workbook, Blatt "Materialdaten" benutzter Bereich Spalte A bis E
    sp = .Value * schreibe den Bereich mit diesem Workbook, Blatt "Materialdaten" benutzter Bereich Spalte A bis E in sp
    With CreateObject("scripting.dictionary") * keine Ahnung? -> legt ein Dictionary an
       For j = 2 To UBound(sn) * für j = 2 bis sn letzte Zeile
          .Item(sn(j, 1)) = sn(j, 3) * keine Ahnung? -> Spalte A ist der key, Spalte C das Item (aus "Artikel.xlsm")
       Next * nexter j

       For j = 2 To UBound(sp) * für j = 2 bis sp letzte Zeile
         If .exists(sp(j, 1)) Then sp(j, 5) = .Item(sp(j, 1)) *keine Ahnung? -> wenn der Wert in "MaterialDaten" in "Artikel.xlsm" enthalten ist, dann wird Spalte E mit dem Wert aus Artikel.xlsm Spalte 3 überschrieben
      Next * nexter j
    End With * Ende mit dem Createobject with
    .Value = sp * keine Ahnung? -> Die Spalten A-E in "Materialdaten" werden mit den aktualisierten Daten aus "Artikel" überschrieben
  End With * Ende mit dem With Thisworkbook... With
End Sub

mfg

PS: Ich finde diese Art Codes zu schreiben interessant