Hallo,
wenn ein Laufzeitfehler auftritt, kann man durch Anklicken des Buttons "Debuggen" die fehlerhafte Zeile anzeigen lassen.
Dadurch kann die Fehlersuche eingegrenzt werden.
Zusätzlich kommt es auch die eingesetzte Office-Version drauf an.
Der VBA-Code wurde in Excel 2013 getestet.
Gemäß des Range-Bereichs wollen Sie die Angaben aus der Tabelle1 Spalte A und B in die Tabelle2 (Spalten A und F) eintragen lassen:
Tabelle1 Spalte A -> Tabelle2 Spalte A
Tabelle1 Spalte B -> Tabelle2 Spalte F
Für diesen Einsatz muss der VBA-Code durch folgenden Code ausgetauscht werden, da mehrere Areale betroffen sind:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngDest As Range, rngSrc As Range
Dim rngDestArea As Range, rngSrcArea As Range
Dim iAreas As Integer
Dim iCol As Integer, iRow As Integer
Set rngDestArea = Application.ThisWorkbook.Worksheets("Tabelle2").Range("A:A,F:F")
Set rngSrcArea = Target.Worksheet.Range("A:A,B:B")
For iAreas = 1 To rngSrcArea.Areas.Count
Set rngSrc = rngSrcArea.Areas.Item(iAreas)
Set rngDest = rngDestArea.Areas.Item(iAreas)
If Not Intersect(Target, rngSrc) Is Nothing Then
' Relative Position von Target zum rngSrc ermitteln
iCol = Target.Column - rngSrc.Column
iRow = Target.Row - rngSrc.Row
' Innerhalb des Zielbereichs die gleiche Zelle ändern
rngDest.Cells(iRow + 1, iCol + 1).FormulaR1C1 = Target.FormulaR1C1
End If
Next
End Sub
Diese Lösung funktioniert nur solange, wie im rngDestArea und rngSrcArea die gleiche Anzahl von Arealen definiert werden!
VG, BigBen
|