ich habe folgendes Problem: Ich habe im Excel ein Makro geschrieben, welches auch zumindest läuft. Leider läuft es zu lange, um Anwender darauf loslassen zu können.
Hintergrund ist folgender:
Die Exceltabelle wird Feld für Feld javaunterstützt aufgebaut. Hier besteht leider keine Eingriffsmöglichkeit. Mein Ziel ist es, bei Änderungen von Feldern in der Spalte "U" eine Prüfung auf den Zellinhalt des geänderten Feldes in der Spalte "U" durchzuführen und dann das Feld ggf. zu formatieren. Da das Feld mit einer Formel bestückt ist, greift zwar beim bestücken des Feldes mit der Formel das Worksheet_Change-Ereignis, dies greift aber nicht, wenn die zur Berechnung benötigten Felder geändert werden (und die Formel der Felder in der "U"-Spalte bleibt).
Deswegen habe ich mich für das Calculation-Event entschieden. Leider nur wird das beim Aufbau des Blattes sehr oft ausgeführt, was dann zu langen Ladezeiten führt.
Meine Fragen deshalb:
- Wie kann man den unten stehenden Code schneller machen?
- Oder gibt es eine einfachere Möglichkeit?
Aufgrund des Aufbaus der Anwendung gibt es leider keine Möglichkeiten, Events wie Open abuzfragen. Die Anzahl der Zeilen ist nicht fix.
Wenn jemand Hinweise oder Ideen dazu hätte wäre ich sehr dankbar.
>>
Private Sub Worksheet_Calculate()
Dim Inhalt As String
Dim my_coloumn As String
Dim my_coloumn_vgl As String
Dim my_range As String
Dim my_error_tmp As Boolean
Dim my_fehler_in_eingabe As Boolean
Dim setze_blattschutz_wieder As Boolean
setze_blattschutz_wieder = False
my_error_tmp = False
my_fehler_in_eingabe = False
my_coloumn = "U"
my_coloumn_vgl = "E"
If Worksheets(1).ProtectContents = True Then
Worksheets(1).Unprotect Password:="TEST"
setze_blattschutz_wieder = True
End If
For i = 13 To 999
my_range = my_coloumn & i
my_range_vgl = my_coloumn_vgl & i
If Range(my_range).Value > (Range(my_range_vgl).Value * 1.5) Or _
Range(my_range).Value
Viele Grüße
Christian