Hallo!
Ich werte gerade viele Solardaten aus und habe dafür einen Code mit Excel-VBA geschrieben (bin aber ein ziemlicher Excel-VBA-Frischling). Der Code funktioniert aber die Rechenzeit ist sehr lang. Unter anderem werden Tagesmittelwerte berechnet und in einer separaten Tabelle aufgeführt. Damit dann beim nächsten Tag weiter gemacht wird schreibe ich im Moment mit Mid() das Jahr, den Monat und den Tag als Zahlen in einzelne Variablen, Excel fängt dann ganz oben an und vergleicht solange, bis dieser nächste Tag gefunden wird, welcher dann ausgewertet wird. Dieses Suchen dauert sehr lange und es würde um ein Vielfaches schneller gehen wenn ich die jeweilige Zelle als „Adresse“ in eine Variable speichern könnte, um dann mit Worksheets(„x“).range(„yz“).select dort direkt hinzukommen. Gibt es einen Befehl oder eine andere Möglichkeit sich den Ort einer Zelle zu „merken“ (in eine Variable o. ä.)?
Vielen Dank für die Hilfe!
Hallo vaiana,
es gibt verschiedene Möglichkeiten den momentanen Wert einer Variablen zu speichern.
Eine Möglichkeit wäre, den Wert in eine Textdatei zu schreiben und diese zu speichern.
Eine andere Möglichkeit besteht darin, den Wert in ein eigenes Tabellenblatt Ihrer Arbeitsmappe zu schreiben. Diese Möglichkeit will ich im folgenden kurz skizzieren.
Sie fügen Ihrer Arbeitsmappe ein Blatt „Notizen“ hinzu. Das Blatt auf dem Sie arbeiten und von dem Sie eine Zelladresse festhalten wollen, nenne ich „Daten“.
Dann könnte das Festhalten der Zelladresse folgendermaßen aussehen:
Sub Zelle_merken()
Dim wsD As Worksheet
Dim wsN As Worksheet
Set wsD = ThisWorkbook.Worksheets(„Daten“)
Set wsN = ThisWorkbook.Worksheets(„Notizen“)
´ Simulation der Verarbeitung
wsD.Activate
wsD.Range(„AX34582“).Select
´ Adresse der momentan selektierten Zelle speichern
If TypeName(Selection) = „Range“ Then
wsN.Range(„A2“) = Selection.Address(False, False)
ThisWorkbook.Save
Else
MsgBox „Selection ist kein Range-Object“ & vbNewLine & _
TypeName(Selection)
End If
End Sub
Generell gibt es eine Reihe von Möglichkeiten VBA-Code zu beschleunigen.
Ich biete Ihnen daher an, dass Sie mir Ihre Arbeitsmappe direkt schicken (ein Hochladen von xlsm-Dateien ist hier leider nicht möglich). Ich würde dann prüfen, ob ich Möglichkeiten zur Beschleunigung sehe.
Meine E-Mail-Adresse
dieter.klemke@web.de
Mit freundlichen Grüßen
Dieter Klemke