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.

Datenzuweisung über Array?
#1
Hi,

ich mache eine Wetterstatistik und muß da diverse Daten kopieren.

Code:
For i = loLetzte24 To loLetzte
     With Workbooks("Wetterdaten-Stunde.xlsb").Sheets(strJahr)
        ' "Wetterdaten-Stunde" Spalte B bekommt Wert aus "Wetterdaten" Spalte B
        .Range("B" & loNeueTarget).Value = Range("B" & i + 1).Value    ' Datum
        .Range("C" & loNeueTarget).Value = Range("F" & i + 1).Value    ' Außen-Temp
        .Range("D" & loNeueTarget).Value = Range("O" & i + 1).Value    ' letzte Stunde
        .Range("E" & loNeueTarget).Value = Range("P" & i + 1).Value    ' 24 Stunden
        .Range("F" & loNeueTarget).Value = Range("Q" & i + 1).Value    ' Woche
        .Range("G" & loNeueTarget).Value = Range("R" & i + 1).Value    ' Monat
        .Range("H" & loNeueTarget).Value = Range("S" & i + 1).Value    ' Total
     End With
     
     loNeueTarget = loNeueTarget + 1
     
     ' "Wetterdaten" Spalte X bekommt Wert aus "Wetterdaten" Spalte B
     Range("X" & i).Value = Range("B" & i).Value
     Range("Y" & i).Value = Range("F" & i).Value
     Range("Z" & i).Value = Range("O" & i).Value
     Range("AA" & i).Value = Range("P" & i).Value
     Range("AB" & i).Value = Range("Q" & i).Value
     Range("AC" & i).Value = Range("R" & i).Value
     Range("AD" & i).Value = Range("S" & i).Value
     
     With Sheets("Zusammenfassung")
        ' "Wetterdaten" Sheet "Zusammenfassung" Spalte B bekommt Wert aus "Wetterdaten" Spalte B
        .Range("A" & i).Value = Range("B" & i).Value
        .Range("B" & i).Value = Range("F" & i).Value
        .Range("C" & i).Value = Range("O" & i).Value
        .Range("D" & i).Value = Range("P" & i).Value
        .Range("E" & i).Value = Range("Q" & i).Value
        .Range("F" & i).Value = Range("R" & i).Value
        .Range("G" & i).Value = Range("S" & i).Value
     End With
  Next i

Kann ich das auch über ein Array machen, geht das dann schneller?
Antwortento top
#2
Hallo Ralf,

das ginge sicher schneller.
Du kannst aber auch ohne Arrays schon etwas Zeit sparen, wenn Du Bereiche nicht in einer Schleife überträgst sondern als Bereich.

Unten ein Beispielcode auf der Grundlage Deines Codes, nur mal die erste Zeile:


Code:
   i = loLetzte - loLetzte24
    With Workbooks("Wetterdaten-Stunde.xlsb").Sheets(strJahr)
       ' "Wetterdaten-Stunde" Spalte B bekommt Wert aus "Wetterdaten" Spalte B
       .Range("B" & loNeueTarget & ":B" & loNeueTarget + i).Value = Range("B" & loLetzte24 & ":B" & i + 1).Value  ' Datum
    End With


Kann sein, dass ich etwas übersehen habe, und es nicht ganz passt, aber das Prinzip solltest Du erkennen können.
Außerdem, falls Du es nicht in Deinem Code eingearbeitet hast, würde ich die Berechnung zu Beginn abschalten und am Ende wieder einschalten.
Das könnte auch noch einiges an Zeit sparen.
Gruß Atilla
Antwortento top
#3
Hi Atilla,

(29.03.2015, 21:32)atilla schrieb: Unten ein Beispielcode auf der Grundlage Deines Codes, nur mal die erste Zeile:
[...]
Kann sein, dass ich etwas übersehen habe, und es nicht ganz passt, aber das Prinzip solltest Du erkennen können.
Außerdem, falls Du es nicht in Deinem Code eingearbeitet hast, würde ich die Berechnung zu Beginn abschalten und am Ende wieder einschalten.
Das könnte auch noch einiges an Zeit sparen.

danke, das ist eine gute Idee.
Das werde ich morgen mal testen, heute komme ich nicht mehr dazu.
Antwortento top
#4
Hi Atilla,

(29.03.2015, 21:32)atilla schrieb: Unten ein Beispielcode auf der Grundlage Deines Codes, nur mal die erste Zeile:

Jetzt wollte ich den Code testen, aber nun habe ich ein neues Problem.

Dieser Code

Code:
  strText = Space(LOF(lngFN))                          ' String erzeugen mit Länge des Datei-Inhaltes

der unter Office 2010 funktioniert, bringt eine Fehlermeldung:

Projekt oder Bibliothek nicht gefunden!

Und das Space ist markiert.

Es fehlt bei den Verweisen wohl das ATPVBAEN.XLAM
Wo bekomme ich das für 2013 her?
Oder kann ich die Benutzung das AddIn umgehen?
Antwortento top
#5
Hallo Ralf,

zum Testen könntest Du es mal so versuchen:


Code:
strText = VBA.Space(LOF(lngFN))    


Wird unter den Verweisen ein defekter Verveis angezeigt?
Wenn ja, dann lösch ihn.
Gruß Atilla
Antwortento top


Gehe zu:


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