Hi Bernd,
http://www.myimg.de/?img=excelTabelle70910.jpg
http://www.myimg.de/?img=excelvbae1e4f.jpg
besser ist, du lädst eine kleine Beispieldatei hoch, siehe FAQ:2861
Die VBA Anwendung für sich alleine funktioniert
erstaunlich
aber wenn ich
die VBA- Funktion über die Wenn- Funktion aufrufe:
‚=WENN(C5;miDatum();"")‘,
dann bekomme ich eine Zirkelbezugswarnung!
nicht erstaunlich, normalerweise schreibt man Funktionen so daß sie einen Rückgabewert liefern, also zum Ende des Codes sowas
miDate=Date
o.ä.
Deine Funktion hat, da dies fehlt, einen Rückgabe wert von o, oder nothing oder 1.1.1900, habs nicht nachgeprüft.
Der Zirkelbezug hat eine andere Ursache, probier das mal:
Function midate() As Date
Range(„A3“) = Date
End Function
und schreibe in A1,A2 und A3
=midate() rein
Entweder bekommst du den Fehler „#Wert“, wahrscheinlich weil die Formel keinen Rückgabewert hat, das kommt daher, daß sie mitten im Code abbricht weil sie nur in die Zelle schreiben kann in der sie aufgerufen wird.
Steht sie in der Zelle in der sie schreiben soll kommt es halt zu Zirkelbezug, warum weiß man in der Schweiz *starkschätz*, bei mir hat sich das noch nicht so rumgesprochen
)
Könnte mir einer von euch weiterhelfen?
Ich habe den dir genannten Code angepasst, ungetestet. Klicke unten mit rechter Maustaste auf den Blattnamen, dort dann „Code anzeigen“, im aufgehenden Fenster dann den nachstehenden Code reinkopieren, Editor schliessen.
Option Explicit
'
Private Sub Worksheet\_Change(ByVal Target As Range)
Dim rngZelle As Range
Set Target = Application.Intersect(Target, Range("C:C"))
If Not Target Is Nothing Then
On Error GoTo ErrorHandler
Application.EnableEvents = False
For Each rngZelle In Target
With rngZelle
.Offset(0, -1).ClearContents
If .Value "" Then
.Offset(0, -1).Value = Date
.Offset(0, -1).NumberFormat = "dd.mm.yyyy"
End If
End With
Next rngZelle
End If
ErrorHandler:
Application.EnableEvents = True
End Sub
Gruß
Reinhard