Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1672to1676
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

Worksheet_Change Fehler 13

Worksheet_Change Fehler 13
30.01.2019 13:46:57
Luisa
Hallo,
Ich möchte bei einem Tabellenblatt die Eingabe überprügen und nutze dazu Worksheet_Change(...). Funktioniert auch alles wunderbar. Nur wenn ich Daten in mehr als einer Zelle gleichzeitig lösche, bekomme ich eine Fehlermeldung, was mir auch logisch erscheint, das ich einen Bereich mit einem Einzelwert vergleiche.
Mein Problem: Wie umgehe ich den Fehler?
Das ist (ein Ausschnitt) von meinem Code:

Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Column = 3 _
And Target.Value = "x" _
And Cells(Target.Row, 4)  "" _
And WorksheetFunction.CountA(Tabelle1.Range(Cells(Target.Row, 8), Cells(Target.Row, 11)) _
= 0 Then
Tabelle1.Range(Cells(Target.Row, 8), Cells(Target.Row, 11)).Interior.Color = RGB(255,  _
199, 206)
End If
End Sub

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Worksheet_Change Fehler 13
30.01.2019 13:58:15
Daniel
Hi
kommt darauf an, was genau passieren soll, wenn der Anwender mehrere Zellen gleichzeitig ändert:
a) es soll nichts passieren, nur wenn eine Zelle markiert wurde, soll der Code ablaufen, dann folgende Prüfung voranstellen:
If Target.CountLarge > 1 then Exit sub
b) es soll so weiter gearbeitet werden, wie wenn der Anwender nur eine Zelle markiert hätte:
dann einfach im Code Target(1) statt Target verwenden. Damit reduzierst du das Target im Falle einer mehrzelligkeit auf die erste Zelle
c) jede Zelle des Targets soll bearbeitet werden.
dann brauchst du eine Schleife über jede Zelle von Target.
dim Zelle as range
if Target.Column = 3 Then
for each Zelle in Intersect(Target, columns(3))
If Zelle.Value = "x" and Cells(Zelle.Row, 4) 

naja und so weiter im Code, innerhalb der For-Each-Schleife dann mit "Zelle" statt "Target"
ich hoffe mal, dass dir das bei VBA-Gut als Ansatz ausreicht.
Gruß Daniel
Anzeige
AW: Worksheet_Change Fehler 13
30.01.2019 14:04:36
Luisa
Hallo Daniel,
Vielen Dank für deine Antwort. Ja, das reicht mir aus :) (Hoffe ich zu mindestens :D)
danke!
Luisa
AW: Worksheet_Change Fehler 13
30.01.2019 14:12:25
Luisa
Nochmal hallo Daniel,
Ich habe deinen Vorschlag b) etwas abgeändert. Geht das so auch oder werde ich da langfristig auf Probleme stoßen:
Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim groesse As Integer
groesse = Target.CountLarge
For i = 1 To groesse
If Target(i).Column = 3 _
And Target(i).Value = "x" _
And Cells(Target(i).Row, 4)  "" _
And WorksheetFunction.CountA(Tabelle1.Range(Cells(Target(i).Row, 8), Cells(Target(i) _
.Row, 11))) = 0 Then
Tabelle1.Range(Cells(Target(i).Row, 8), Cells(Target(i).Row, 11)).Interior.Color =  _
RGB(255, 199, 206)
End If
End Sub

Anzeige
AW: Worksheet_Change Fehler 13
30.01.2019 14:23:25
Daniel
ja, gibt Probleme wenn Target ein diskontinuierlicher Zellbereich ist, dh
aus mehrere nicht zusammenhängende Zellen besteht (Auswahl mit STRG-Taste), z.B. C1, C5 und C9
wenn du in so einem Fall mit dem Index arbeitest (Target(i)) so läuft die Schleife über die falschen Zellen.
Target(2) ist dann C2 und nicht wie erwartet C5
der Index orientiert sich immer nur an der allersten Zelle des Bereichs und verwendet diesen als Bezugspunkt, ohne die weitern Teilbereiche zu berücksichtigen.
der Index funktioniert nur bei lückenlosen, rechteckigen Zellbereichen.
ansonsten musst du for-Each verwenden.
Gruß Daniel
Anzeige
AW: Worksheet_Change Fehler 13
30.01.2019 14:31:40
Luisa
Ah, okay. Klingt logisch :)Danke!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige