PDA

Vollständige Version anzeigen : Mittels Target mehrere Zellen übertragen


Shifty173
21.09.2016, 07:02
Hallo Allerseits und ein herzliches Grüß Gott (bin ja neu)!

Ich habe folgendes Problem:
Ich habe Tabellenblatt - Ebene mittels Private Sub eine Prozedur geschrieben, bei welcher mittels Target beim ändern einer Zelle diese in der entsprechenden Spalte und der ersten freien Zeile eines anderen Tabellenblattes der Wert übertragen wird. Dies funktioniert, solange ich immer nur einen einzelnen Wert ändere. Wenn ich allerdings mehrere Zellen gleichzeitig ändere (z.B. Strg V) bekomme ich den Laufzeitfehler 13 - Typen unverträglich.
Mir ist klar, dass es so ist, da die Variable, in welche ich den Wert von Target einspiele, als Integer deklariert ist, komme aber leider nicht auf die Lösung.

Anbei mal mein Code:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

Call Werte

Set Target = Application.Intersect(Target, AT10Bereich)

If Target Is Nothing Then Exit Sub

Worksheets(AT10Tabelle).Unprotect 'Blattschutz aufheben für Tabellenblatt "Jahresplaner AT10"

AT10FAUF = Target.Value 'speichert in der Variable die aktuelle FAUF - Nummer

AT10Tag = Target.Column 'speichert in der Variable die Spaltennummer der aktuell bearbeiteten Zelle

AT10zuGesamtErsteFreieZeile = ErsteZeileFAUFs

'Finden der ersten freie Zeile des aktuellen Tages in der Tabelle "Jahresplaner Gesamt"
Do Until Worksheets(GesamtTabelle).Cells(AT10zuGesamtErsteFreieZeile, AT10Tag).Value = ""
AT10zuGesamtErsteFreieZeile = AT10zuGesamtErsteFreieZeile + 1
Loop


Worksheets(GesamtTabelle).Unprotect 'Blattschutz aufheben für Tabellenblatt "Jahresplaner Gesamt"
Worksheets(GesamtTabelle).Cells(AT10zuGesamtErsteFreieZeile, AT10Tag).Value = AT10FAUF 'FAUF - Nummer in "Jahresplaner Gesamt" eintragen
Worksheets(GesamtTabelle).Cells(AT10zuGesamtErsteFreieZeile, AT10Tag).Interior.Color = AT10Farbe 'Farbe in Zelle im "Jahresplaner Gesamt" für AT10 hinterlegen
Worksheets(GesamtTabelle).Cells(AT10zuGesamtErsteFreieZeile, AT10Tag).Locked = True 'Zelle im "Jahresplaner Gesamt" sperren
'Worksheets(GesamtTabelle).Protect


Target.Interior.Color = AT10Farbe 'Farbe in Zelle im "Jahresplaner AT10" für AT10 hinterlegen
Target.Locked = True 'Zelle im "Jahresplaner AT10" sperren
'Worksheets(AT10Tabelle).Protect 'Blatt "Jahresplaner AT10" schützen

Call SpeichernOhneSchließen

End Sub

Ich hoffe jemand von euch hat ne Idee und hoffe ebenfalls, das der Code gut lesbar ist.

Bin für Anregungen offen! ;)

Vielen Dank im Vorraus!

LG!
Shifty

RPP63neu
21.09.2016, 07:13
Moin!
Target ist ein Range und kann daher durchaus mehrere Ranges enthalten.
Ein grober Ansatz:
Du musst das Target durchschleifen:
Dim rngZelle As Range
For Each rngZelle In Target
'DeinCode
Next
Gruß Ralf

Shifty173
21.09.2016, 15:08
Hallo Ralf!

Super, das wars! :)

Vielen Dank!