Dr. Wuah
Lt. Commander
- Registriert
- Mai 2005
- Beiträge
- 1.277
Hallo zusammen,
ich hoffe mir kann jemand weiterhelfen. Ich hab gerade auf die schnelle ein Dokument erstellt, dass für die Urlaubsberechnung helfen soll. Zuerst einmal, die Idee:
Es gibt 5 Spalten:
1. Spalte: Beschreibung der Kosten
2. Spalte: Euro Betrag
3. Spalte: Betrag pro Person - Euro (insgesamt 8 Personen)
4. Spalte: Ausländische Währung
5. Spalte: Betrag pro Person - ausländische Währung
Funktionalität des Makros:
Wenn in Spalte 2 oder in Spalte 3 ein Wert eingetragen wird, dann werden entsprechend die anderen 3 Spalten mit Beträgen automatisch gefüllt. Das klappt grundsätzlich auch ohne Probleme. Allerdings verursacht das Makro irgendwie Performanceprobleme. Excel selbst ist sogar schon abgestürzt. Immer nachdem ein Wert eingetragen und die entsprechenden anderen Spalten befüllt waren, wird eine kurze Zeit nicht mehr auf Eingaben reagiert.
Woran könnte das liegen?!
Hier der Code:
ich hoffe mir kann jemand weiterhelfen. Ich hab gerade auf die schnelle ein Dokument erstellt, dass für die Urlaubsberechnung helfen soll. Zuerst einmal, die Idee:
Es gibt 5 Spalten:
1. Spalte: Beschreibung der Kosten
2. Spalte: Euro Betrag
3. Spalte: Betrag pro Person - Euro (insgesamt 8 Personen)
4. Spalte: Ausländische Währung
5. Spalte: Betrag pro Person - ausländische Währung
Funktionalität des Makros:
Wenn in Spalte 2 oder in Spalte 3 ein Wert eingetragen wird, dann werden entsprechend die anderen 3 Spalten mit Beträgen automatisch gefüllt. Das klappt grundsätzlich auch ohne Probleme. Allerdings verursacht das Makro irgendwie Performanceprobleme. Excel selbst ist sogar schon abgestürzt. Immer nachdem ein Wert eingetragen und die entsprechenden anderen Spalten befüllt waren, wird eine kurze Zeit nicht mehr auf Eingaben reagiert.
Woran könnte das liegen?!
Hier der Code:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
Dim result As Double
Dim hilf As Double
Dim exchange As Double
'zuweisen
exchange = Range("I2")
'definiert welche Zellen ein Event triggern
Set KeyCells = Range("B3:B50", "D3:D50")
'Nichts passiert, wenn andere Zellen geändert werden
If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then
'MsgBox "Test: " & Target.Address & " - " & Target.Row
hilf = Range(Target.Address)
'Wenn Spalte B geändert wird:
If (Target.Column = 2) Then
result = hilf * exchange
Range("D" & Target.Row) = result
End If
'Wenn Spalte D geändert wird:
If (Target.Column = 4) Then
result = hilf / exchange
Range("B" & Target.Row) = result
End If
'p.P Werte ausrechnen:
hilf = Range("B" & Target.Row)
result = hilf / 8
Range("C" & Target.Row) = result
hilf = result * exchange
Range("E" & Target.Row) = result
End If
End Sub