Neuberechnung von selbsterstellten Funktionen
22.06.2006 15:09:27
selbsterstellten
Ich habe folgendes Problem:
Jede Zeile in Spalte A ruft mit =myfunc(B#) eine eigene Funktion (Code siehe weiter unten. Die Funktion wandelt die Zahl in der Spalte B in eine Hexadezimalzahl um). # entspricht dabei der jeweiligen Zeilennummer, also in A1 steht =myfunc(B1)
Bis jetzt funktionierte das auch immer. Nun wollte ich die Spalte A pseudo-sperren (richtiges sperren geht durch andere Funktionen, die ich noch benötige, nicht). Dazu habe ich im Worksheet_Change überprüft, ob was in Spalte A geändert wurde und wenn ja, schreibe ich die Formel wieder rein.
Dann kommt für etwa eine Sekunde das richtige Ergebnis in der jeweiligen Zelle, aber dann erscheint da nur noch "#WERT!". Sobald ich aber per CTRL-ALT-F9 alles neu berechne, steht wieder das Richtige drin.
Wie kann ich machen, dass das von Anfang an schon richtig ist? application.Calculate habe ich versucht, aber es macht damit ziemlich nichts..
Die Funktion (myfunct):
Public Function myfunc(mystring As String)
If Len(mystring) = 0 Then
myfunc = 0
ElseIf Len(mystring) = 1 Then
If mystring >= "0" And mystring myfunc = Asc(mystring) - 48
ElseIf mystring >= "A" And mystring myfunc = Asc(mystring) - 65 + 10
Else
myfunc = 0
End If
Else
myfunc = myfunc(Right(mystring, 1)) + 16 * myfunc(Left(mystring, Len(mystring) - 1))
End If
End Function
Im "Tabelle1":
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
Target.Formula = "=myfunc(B" & CStr(Target.Row) & ")"
Application.Calculate
End If
End Sub