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.

VBA Code verstehen
#1
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
Antworten Top
#2
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
Antworten Top


Gehe zu:


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