Ich habe mir das mal genauer angeschaut (Sorry, war vorher zu faul) So wird das eh nicht funktionieren.
Public Function test()
For i = 1 To 20
Start = Timer
Do 'Zeitverzögerung
Zeit = Timer - Start
Loop Until Zeit >= 1
Worksheets("Tabelle1").Range("A1").Copy
Worksheets("Tabelle1").Range("B" + CStr(i)).PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Next i
End Function
ist eigentlich keine Funktion im üblichen Sinn, sondern eine Prozedur.
Eine Funktion ist etwas, das einen Rückgabewert liefert:
Public Function test(ByVal Target As Excel.Range, ByVal Par as Long) As String 'als Beispiel
Dim strERG as String
'...beliebiger Code
strERG = "irgendwas"
'...beliebiger Code
test = strERG
End Function
So sind die "normalen" WorksheetFunctions" aufgebaut. Sie liefern ein Ergebnis für die Zelle in die sie geschrieben werden.
Was Du hier schreibst solltest Du als Ereignisprozedur schreiben:
Private Sub Worksheet_Change(ByVal Target as Range)
Dim i As Long
Dim Start As Single
Dim Zeit as Single
If Target.Column <> 1 Then Exit Sub 'Nur Spalte A wird ausgewertet
'If Target.Address <> "$A$1" Then Exit Sub 'Nur Zelle A1 wird ausgewertet
If Target <= 20 Then Exit Sub
Application.EnableEvents = False
For i = 1 To 20
Start = Timer
Do 'Zeitverzögerung
Zeit = Timer - Start
Loop Until Zeit >= 1
Target.Copy Range("B" + CStr(i))
Next i
Application.EnableEvents = True
End Sub
|