Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1092to1096
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Laufzeitfehler 13 bei Verwendung der Entf.-Taste

Laufzeitfehler 13 bei Verwendung der Entf.-Taste
Michael
Hallo
bei folgendem Code wird o.g. Laufzeitfehler 13 gemeldet wenn ich ich im Tabellenblatt in einer _ beliebigen Zelle die ENTF-Taste drücke (und zwar die erste if bedingung)

Private Sub Worksheet_Change(ByVal Target As Range)
If Target = Range("O11") Then
If Application.CountIf(Range("AA96:AA200"), Range("O11")) > 0 Then
Range("o9") = Range("a220")
Range("o8") = Range("a219")
Else
Range("o9") = "Zahl unbekannt! Bitte Text hier eingeben!"
Range("o8") = "Zahl unbekannt! Bitte Text hier eingeben!"
End If
End If
End Sub

Wie kann ich diese Meldung vermeiden? Ich kann leider die Nichtverwendung der ENTF Taste nicht verhindern.
Vielen Dank für einen Lösungsvorschlag
Michael
If Target.Address="O11" then '_oT
10.08.2009 17:40:15
NoNet
_oT = "ohne Text"
AW: If Target.Address="O11" then '_oT
10.08.2009 17:53:34
Michael
Vielen Dank für diie schnelle Rückmeldung
bloß: was heißt _oT und wo kommt das hin?
Liebe Grüße
Michael
Lies meinen GESAMTEN Beitrag ! '_oT
10.08.2009 17:57:00
NoNet
_oT = "ohne Text"
oT- heisst ohne weiteren Text - owT
10.08.2009 17:57:14
robert
AW: If Target.Address="O11" then '_oT
10.08.2009 17:59:39
Michael
o mann
erstmal lesen
jetzt hab ichs kapiert
vielen dank
funzt bestens auch wenn ich nicht weiß was ich da jetzt genau getan habe
grüße
michael
AW: If Target.Address="O11" then Korrektur
10.08.2009 18:14:48
Daniel
Hi
@NotNet:
wie es in Excel 2007 aussieht, weiß ich nicht, aber in Excel XP gibt .Address ohne weitere Parameterangabe immer noch die Absolut-Addresse aus, also müsste es heissen:
If Target.Address = "$O$11 Then
oder
If Target.Address(0,0) = "O11" Then
@Michael:
zur Erläuterung: wenn eine Rangevariable ohne weitere Eigenschaftsangabe verwendet wird, dann ergänzt Excel automatisch ".Value" als verwendete Eigenschaft, dh. mit
Target = Range("O11")
prüfts du NICHT, ob grade die Zelle O11 geändert wurde, sondern ob die Zelle, die du geändert hast (egal welche), den gleichen Inhalt hat wie die Zelle O11.
zu dem Fehler kommt es, weil beim löschen der Zelle TARGET nichts mehr hat, nicht mal einen Leeren Inhalt, das führt dann zu dem Fehler.
Wenn du allerdings mit Target.Value = Range("O11").Value prüftst, tritt der Fehler nicht auf, wenn die zu prüfende Eigenschaft vorhanden ist und nicht ergänzt werden muss, tritt der Fehler nicht auf sondern wird abgefangen.
solltest du allerdings prüfen wollen, ob die Zelle O11 geändert wurde, dann musst du es so machen, wie oben beschrieben.
alternativ verwendet man für diesen Fall auch diese Prüfung:
If Not Intersect (Target, Range("O11")) Is Nothing Then
dh es wird geprüfst, ob beide Zellbereiche gemeinsame Zellen haben.
dies Prüfung würde auch anschlagen, wenn die Zelle O11 in einem grösseren Zellverbund verändert wird (z.B. ganze Spalte O wird geleert). Die obere Prüfung würde in diesem Fall nicht reagieren, weil die Addresse von Target ja $O:$O ist.
und noch ein Hinweis:
dein Makro ruft sich selber auf, in dem Moment, wo du was in die Zellen reinschreibst und diese veränderst (ist ja das CHANGE-Event)
Das kann u.U. zu ungewünschten effekten oder langen Laufzeiten führen.
Man kann das aber mit APPILCATION.ENABLEEVENTS = FALSE unterbinden.
ab dem Zeitpunkt, ab dem dies gesetzt ist, werden keine Event-Makros mehr ausgeführt.
ACHTUNG: diese Einstellung bleibt nach dem Makro-Ende erhalten!
daher muss man im Makro vor dem Ende wieder APPILCATION.ENABLEEVENTS = TRUE setzen.
Sollte das vergessen werden oder das Makro vorher mit einem Fehler abbrechen (kann ja mal passieren), muss man diesen Befehl im Direktfenster eingeben, um die Event-Makros wieder zu aktivieren.
im Code sieht das alles dann so aus:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = ("$O$11") Then
Application.EnableEvents = False 
If Application.CountIf(Range("AA96:AA200"), Range("O11")) > 0 Then
Range("o9") = Range("a220")
Range("o8") = Range("a219")
Else
Range("o9") = "Zahl unbekannt! Bitte Text hier eingeben!"
Range("o8") = "Zahl unbekannt! Bitte Text hier eingeben!"
End If
Application.EnableEvents = True
End If
End Sub
Gruß, Daniel
Anzeige
If Target.Address(0,0) =("O11") Then
10.08.2009 17:45:16
Herbert
oT
AW: Laufzeitfehler 13 bei Verwendung der Entf.-Taste
10.08.2009 17:56:47
MichaV
Hallo,
kann es sein dass Du mehrere Zellen ausgewählt hast wenn der Fehler auftritt?
Target = Range("O11") verlangt dass nur eine Zelle ausgewählt ist.
Gruss- Micha
PS: NoNet und Herbert, die Anweisung kann auch Target.Value = Range("O11").Value geschrieben werden.
AW: Laufzeitfehler 13 bei Verwendung der Entf.-Taste
10.08.2009 18:02:54
Michael
uups
jetzt gibts doch noch ein problem
in 09 und 08 wird text über eine V-Funktion eingelesen. das geht dann nicht mehr mit dem ersten Vorschlag
nein ich hab eigentlich nur eine zelle ausgewählt
grüße
Vermutlich FALSCH verstanden !
10.08.2009 18:03:59
NoNet
Hallo Micha,
ich bin zirmlich sicher, dass der Fehler bereits im Ursprungscode bestand :
If Target = Range("O11") then überprüft den WERT einer Zelle (so wie in Deinem Vorschlag mit .Value). Ich bin mir aber fast 100% sicher, dass nicht der WERT der Zelle, sondern die Zelladresse O11 überprüft werden sollte !
Wenn man dies konsequent lösen würde, müste man z.B. folgendermassen codieren :
If Not intersect(Target,Range("O11")) is nothing then
Das würde bewirken, dass nicht nur O11, sondern neben O11 auch gleichzeitig noch andere Zellen gelöscht werden könnten (z.B. N10:P15).
Sollte NUR O11 gelöscht werden, dann wie in meinem Vorschlag :
If Target.Address = "$O$11" then
Gruß, NoNet
Anzeige
AW: Vermutlich FALSCH verstanden !
10.08.2009 18:13:13
Michael
klasse
die erste variante läuft einwandfrei
vielen dank für deine hilfe
ich werde heute abend versuchen zu verstehen, warum es funktioniert
grüße
michael

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige