Änderungen werden immer im «Januar» unternommen?
Und es gibt für jeden einzelnen Tag einen Partner? Ließe sich der ggf. ausrechnen um seine Position, also mehr die des Ziels, dynamisch ermitteln zu können?
Wie erkenne ich denn den Tag? Es ist Unsinn über Abfragen jeder Zellposition die korrespondierende zuzuweisen; mehr noch zuerst zu ermitteln ob die aktive Zelle innerhalb eines Rasters, oder schlimmer, in einer Liste steht.
Wir stolpern hier über das bekannte Phänomen, dass die eigentliche Maßnahme lächerlich klein ist, den Fall aber zu erfassen und zu koordinieren aber einen gehörigen Aufwand bedeutet.
Dieser Code muss im Codefenster des (oder mehr: jedes) Quellblatts eingefügt sein:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim QuellBlatt As String
Dim ZielBlatt As String
Dim QuellZeile As Integer
Dim QuellSpalte As Integer
Dim ZielZeile As Integer
Dim ZielSpalte As Integer
QuellBlatt = ActiveSheet.Name
QuellZeile = Target.Row
QuellSpalte = Target.Column
'Jan!DF104 und Feb!F23 = Jan,104|110 / Feb,23|6
If QuellBlatt = "Jan" Then ZielBlatt = "Feb"
If Zeile = 104 And Spalte = 110 Then
ZielZeile = 23
ZielSpalte = 6
End If
Uebertragen QuellBlatt, QuellZeile, QuellSpalte, ZielBlatt, ZielZeile, ZielSpalte
End Sub
Und dies hier kommt in ein Modul (damit es nur einmal vorhanden ist, aber auch von überall erreichbar:
Sub Uebertragen(QB As String, QZ As Integer, QS As Integer, ZB As String, ZZ As Integer, ZS As Integer)
Dim Text As String
Dim ZielZelle As Range
Dim QuellZelle As Range
Set ZielZelle = Worksheets(ZB).Cells(ZZ, ZS)
Set QuellZelle = Worksheets(QB).Cells(QZ, QS)
ZielZelle.Value = QuellZelle.Value
If Not QuellZelle.Comment Is Nothing Then 'reiner Pessimismus
If Not ZielZelle.Comment Is Nothing Then ZielZelle.ClearComments
ZielZelle.AddComment
With ZielZelle.Comment
.Visible = False
.Text Text:=QuellZelle.Comment.Text
' Was man z.B. noch so alles anstellen könnte
' With .Shape.TextFrame.Characters.Font
' .Bold = False
' .Size = 10
' .Name = "Arial"
' .Color = RGB(0, 0, 64)
' End With
.Shape.TextFrame.AutoSize = True
End With
End If
End Sub
Du erkennst selbst die große Hürde mit den
Ifs stupide Quelle und Ziel zusammenfriemeln zu müssen.
Man könnte… …annehmen, dass das Zielblatt immer eine laufende Position weiter als das aktuelle ist. Dass der Zielort immer um soundsoviel Zeilen/Spalten versetzt ist, oder der Soundsovielte (den ich an der Quelle erkenne) sich berechnen und positionieren ließe.
Eric March