1.3k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo,
ich habe kurz vor Weihnachten noch ein kniffliges Problem.
Ich möchte 1 Felder (z.Bsp. Jan!DF104 und Feb!F23) miteinander in der Form verknüpfen, dass der Eintrag und das Kommentarfeld automatisch übernommen werden.
Bisher konnte ich nur 2 halbherzige Lösungen gefunden.

1. Public Function Kommentar(Zelle As Range) As String
Application.Volatile
If Zelle.Cells.Count <> 1 Then Exit Function

On Error GoTo Fehler
Kommentar = Zelle.Comment.Text
Exit Function

Fehler:
Kommentar = ""
End Function

Hier wird aber nur der Inhald des Kommentarfeldes übernommen und da ich ja auch noch - =Kommentar(Jan!DF104) - in das Feld Feb!F23 eintagen muß, wrid auch noch die Verknüpfung zerstört.

2. Sub Makro1()

Selection.Copy
Sheets("Tabelle2").Select
Range("A4").Select
ActiveSheet.Paste
Sheets("Tabelle1").Select
Application.CutCopyMode = False
Sheets("Tabelle2").Select

End Sub

Hier wird zwar genau das was ich will übertragen, aber nur das entsprechende Feld und ich muß es manuell ausführen, was ja automatisch erfolgen soll

Es wäre sehr schön, wenn mir jemand helfen und mir eine Lösung aufzeigen könnte?
Ausserdem wäre es noch ein zusätzliches Weihnachtsgeschenk für mich.

LG Flodnug

6 Antworten

0 Punkte
Beantwortet von ericmarch Experte (4.6k Punkte)
Ich möchte 1 Felder (z.Bsp. Jan!DF104 und Feb!F23) miteinander in der Form verknüpfen, dass der Eintrag und das Kommentarfeld automatisch übernommen werden.

1 oder 2 Felder?!

In einer Neuen Zelle soll sich also der ›addierte‹ Textinhalt besagter Zellen einfinden plus deren Ebenfalls addierte Kommentare?
Und das soll bitte auf welche Weise ausgelöst werden?

Eric March
0 Punkte
Beantwortet von
Hallo Eric,
danke erstmal für die Reaktion.
Sorry für den Schreibfehler. Es soll in diesem Beispiel das Feld Feb!F23 mit dem Feld Jan!DF104 verknüpft werden.
Es soll im Prinzip auf die Weise geschehen, als wenn ich im Feld Feb!F23 =Jan!DF104 eintrage und dann alles, was im Feld Jan!DF104 eingetragen wird auch im Feld Feb!F23 erscheint, damit ich nicht alles doppelt schreiben muß. Nur werden eben auf diese Weise nur die Einträge und nicht auch noch die Kommentarfelder übernommen (die ich aber unbedingt auch brauche).
Gruß Flodnug
0 Punkte
Beantwortet von ericmarch Experte (4.6k Punkte)
Damit ich das nicht völlig versiebe…

Zellinhalte bekäme man per Bezug von der Quelle zum Ziel, Kommentare natürlich nicht. Was aber wäre denn in unseren Falle die Quelle, was das Ziel?
Sind es explizit immer 2 bestimmte Zellen die miteinander ›Datenaustausch‹ treiben; ändert sich das dynamisch?

Mein Plan ist effektiv dieser:
über ›ein‹ Ereignismakro ist es kein Problem bei Änderungen am Zellinhalt (!) diesen und jeden Kommentar an die Partnerzelle zu übertragen. Das geht quick&dirty oder auch de luxe, aber das wären Feinheiten.
Was aber nicht geht wäre eine direkte Reaktion auf Änderungen an Kommentaren. Das wäre nur beschränkt machbar wenn ausschließlich ein Makro Kommentareinträge empfängt und setzt (weil es dann auch das Übertragen anstoßen kann).
Allenfalls wäre ein Button [oder eine Tastenkombination] als Startbefehl denkbar der die markierte Zelle zur Partnerzelle überträgt.

Wo genau wären wir also dran was Quelle, Ziel und auslösendes Moment anginge?

Eric March
0 Punkte
Beantwortet von
Hallo Eric,
danke zunächst für die Antwort.
Da es sich um quasi einen Kalender handelt, sind es immer dieselben Zellen, die in Verbindung stehen, da mein Kalender immer am 1. unabhängig vom Wochentag anfängt. In einer anderen Zelle variiert dann natürlich der Wochentagsname.
Also in meinem Bsp. steht immer in Jan!DF104 und Feb!F23 der Eintrag für den 1.Februar. Und natürlich ändert sich in Feb!F23 der Inhalt, wenn der Inhalt in Jan!DF104 geändert wird (also Quelle: Jan!DF104; Ziel: Feb!F23). Aber das sollte eben auch für den Kommentar der Fall sein. Und dieses Problem hätte ich gern gelöst.
Gruß Flodnug
0 Punkte
Beantwortet von ericmarch Experte (4.6k Punkte)
Ä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
0 Punkte
Beantwortet von
Hallo Eric,
danke für Deine Hilfe.
Ich werde mich über die Feiertage mit der Umsetzung befassen und bei eventuellen Problemen mich im neuen Jahr nochmal melden.
Also nochmals vielen Dank und ein frohes Fest und einen guten Rutsch.
Flodnug
...