PDA

Vollständige Version anzeigen : Fehlermeldung Laufzeitfehler '13' Typen unverträglich


jule18
22.02.2008, 12:24
Hallo Zusammen,

in meiner Excel Tabelle erscheint mir diese Fehlermeldung: Laufzeitfehler '13' Typen unverträglich.
Und am Code zeigt mir an der Stelle "If Not Target.Value ="" Then" den Fehler an.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row < 15 Then Exit Sub
Application.EnableEvents = False
If Not Target.Value = "" Then ------> Fehlermeldung
Cells(Target.Row, 1).Value = Cells(Target.Row - 1, 1).Value + 1
Else
Cells(Target.Row, 1).Value = ""
End If
Application.EnableEvents = True
End Sub

Diese Fehlermeldung zeigt mir an sobald ich in der Spalte B zwei Zellen markiert habe und ich sie gerne nach unten ziehen möchte.

Ich verzweifle so langsam.

Auf eine Unterstützung und Lösungsansatz bedanke ich im Voraus

gruss

jule:)

EarlFred
22.02.2008, 12:32
Hallo Jule,

wenn Target eine einzelne Zelle ist, klappt es, ansonsten liegt ein Array vor und dann müsstest Du jeden einzelnen Wert des Arrays prüfen.

Mit
If Target.Count > 1 Then Exit Sub
kannst Du zumindest den Fehler abfangen.

Ansonsten könntest Du jeden einzelnen Wert prüfen mit


For Each Wert In Target
If Not Wert = "" Then
[...]
End If
Next


Grüße
EarlFred

Sebastian Schulz
22.02.2008, 12:33
Hallo jule,

dir müsste dieser Codeschnipsel eigentlich schon helfen. Muss ganz zu beginn

If Target.Count > 1 Then Exit Sub

jule18
22.02.2008, 13:06
Hallo Ihr beiden,

hoffe als anfängrein habe ich es richtig eingefügt.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Row < 15 Then Exit Sub
Application.EnableEvents = False
If Not Target.Value = "" Then
Cells(Target.Row, 1).Value = Cells(Target.Row - 1, 1).Value + 1
Else
Cells(Target.Row, 1).Value = ""
End If

die Fehlermeldung erscheint gott sei dank nicht mehr, aber die Fortlaufende Nummer auch nicht mehr.

Liegt es vielleicht das ich den Code nicht richtig eingefügt habe?


gruss

jule:)

EarlFred
22.02.2008, 13:10
Hallo Jule,

naja doch, Du hast den Code genau richtig eingefügt - allerdings wirft er Dich dann gleich aus dem Makro raus ("Exit Sub"), wenn mehr als eine Zelle geändert wurde!

Wenn Du alle geänderten Zellen abarbeiten willst, solltest Du Dir meinen Codeschnipsel 2 anschauen. Der gehört um Deine innere If-Abfrage, wobei Du dann anstelle "Target" jeweils "Wert" nehmen müsstest.

Grüße
EarlFred

jule18
22.02.2008, 13:24
Hallo EarlFred,

danke für die schnelle Hilfe, aber ich bin zu "blöd" dein Code richtig einzufügen.
habe es so eingefügt siehe unten:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row < 15 Then Exit Sub
Application.EnableEvents = False
For Each Wert In Target
If Not Wert = "" Then
Cells(Wert.Row, 1).Value = Cells(Wert.Row - 1, 1).Value + 1
Else
Cells(Wert.Row, 1).Value = ""
End If
Application.EnableEvents = True
End Sub


Was habe ich da Falsch gemacht?


Vielen Dank im Voraus

gruss

jule

EarlFred
22.02.2008, 13:29
Hallo Jule,

nee, so "blöd" biste ganz sicher nicht - hast lediglich das "Next" veressen:


Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row < 15 Then Exit Sub
Application.EnableEvents = False
For Each Wert In Target
If Not Wert = "" Then
Cells(Wert.Row, 1).Value = Cells(Wert.Row - 1, 1).Value + 1
Else
Cells(Wert.Row, 1).Value = ""
End If
Next
Application.EnableEvents = True
End Sub

Grüße
EarlFred

jule18
22.02.2008, 13:36
Hallo EarlFred,

vielen dank für deine Hilfe, so klappt es zumindest wie ich es mir vorgestellt habe.

Hoffe das ich am Montag keine andere Fehler finde.

Schönes Wochenende an Alle

gruss

jule:)

EarlFred
22.02.2008, 13:39
Na fein!
Auch Dir ein schönes WE!

EarlFred