Guten Abend ihr fleissigen Helfer, Mit "Worksheet_Change(ByVal Target As Range)" kopiere ich in der angehägten Beispieldatei, Daten der Spalte "AB" nach Spaltenüberschrift "Name" und Spalte "AC" nach Spaltenüberschrift "Name - _RUFName" Mit "If Cells(Zelle.Row, "AB").Interior.ColorIndex = 40 Then Cells(Zelle.Row, "BS").Interior.ColorIndex = 40" markiere ich die geänderten Zellen in der Spalte "AB" mit der Farbe 40 und dabei wird auch der geänderte Wert in Spalte "BS" markiert. Wenn ich mit "DEL" eine Zelle leere, wird mit " If Cells(Zelle.Row, "AB") = "" Then Cells(Zelle.Row, "BT") = " " die Zelle "AB" und "BT" ebenfalls markiert. Das funktioniert soweit gut. Frage : Wenn ich aber die Spaltenüberschrift mit "If Cells(Zelle.Row, Range("Name").Interior.ColorIndex = 40 Then....." anspreche,wird die Zelle in der Spaltenüberschrift "Name" nicht markiert. Das gleiche Problem habe ich auch mit "If Cells(Zelle.Row, "AB") = "" Then Cells(Zelle.Row, "Name") = " " Wie muss der Code geändert werden, damit das funktioniert ? Bin dankbar für eure Hilfe. Gruss Martin
ich habe mir Deine Tabelle eben angesehen und verstehe nicht, was Du denn bewirken möchtest. Wenn Du willst, dass im rechten Spaltenblock nur unter anderer Überschrift der selbe Name erscheint, genügt im rechten Block =[Zelladresse im Block links]. Wenn noch farbige Markierungen dazu sollen, helfen die Bedingten Formatierungen.
Grüße
d`r Bastler von den VBAsteleien.de Win 10 & 11, Office 2019 & 2021 & macOS X.15, XL 2019
habe in dieser Zeile: c.Dependents.Interior.ColorIndex = lngColorindex den rot markierten Begriff entfernt, nun scheint es zu funktionieren.
Hinweise: Colorindex wird seit Excel 2007 nur noch aus Gründen der Abwärtskompatibilität mitgeführt. Hier sollte man lieber mit der Color-Anweisung arbeiten. Es reicht innerhalb eines Quelltextes einmal On Error Resume Next einzufügen. Vorzugsweise am Anfang. Wobei ein genereller Einsatz nicht stattfinden darf! Auch die Verwendung von On Error GoTo 0 und Application.EnableEvents reicht einmal, am besten am Anfang des Quelltextes, (letzteres mit FALSE am Anfang und mit TRUE am Ende). Insgesamt macht der Quelltext einen etwas unstrukturierten Eindruck. Gut ist die Verwendung der Kommentare.
Viele Grüße Klaus-Dieter Der Erfolg hat viele Väter, der Misserfolg ist ein Waisenkind Richard Cobden
betreffend der Überschriften musst du in den Intersect-Anweisungen: Set rngSchnitt = Intersect(Target, Range("B7:DJ800")) den Wert 7 in 6 ändern, dann funktioniert das auch da.
Viele Grüße Klaus-Dieter Der Erfolg hat viele Väter, der Misserfolg ist ein Waisenkind Richard Cobden
06.09.2022, 21:08 (Dieser Beitrag wurde zuletzt bearbeitet: 06.09.2022, 21:34 von luna101.)
Guten Abend d'r Bastler danke für deine Info. Wenn in den Spalten"AB","AC" Daten geändert oder gelöscht werden, so werden sie automatisch auch in den Spalten "BT" und "BU" bereinigt und in allen vier Spalten mit der Farbe 40 markiert. Das funktioniert soweit gut. Da die kopierten Daten nicht immer in den Spalten "BT" und "BU" stehen, möchte ich sie über die Spaltenüberschriften "Name" , "Name - _RUFName" ansprechen (Im Makro grün markiert) und mit der Farbe 40 markieren.
Das ansprechen der überschriften kriege ich nicht gebacken und bitte um Hilfe. Gruss Martin Guten Abend Klaus-Dieter danke für die Info's. Habe mal einiges bereinigt und es funktioniert. Was ich nicht schaffe, ist das zum Färben nicht die Spalten "BU" und "BT" angesprochen werden, sondern die Überschriften
"Name" (vorher als Spalte "BT" bezeichnet) und " und "Name - _RUFName" (vorher als Spalte "BU" bezeichnet)
Da wäre ich froh, wenn mir jemand helfen könnte, dies zu bereinigen. Gruss Martin
versuche es mal so: Application.Goto Reference:="Name - _RUFName" Die Zelle mit der Überschrift müsste dann ein benannter Bereich mit dem Namen sein. Wobei es sicher ratsam ist, als Bereichsnamen nicht den exakten Inhalt der Überschrift zu wählen, funktioniert zwar, aber kann zu Irritationen führen, deshalb mache ich das normalerweise nicht.
Hoffe deine Anfrage richtig verstanden zu haben.
Viele Grüße Klaus-Dieter Der Erfolg hat viele Väter, der Misserfolg ist ein Waisenkind Richard Cobden
07.09.2022, 09:22 (Dieser Beitrag wurde zuletzt bearbeitet: 07.09.2022, 09:25 von Klaus-Dieter.)
Hallo Martin,
habe dir mal eine Möglichkeit zum identifizieren der Spalten BT und BU eingebaut. Wenn dazu Fragen hast, meldest du dich einfach noch mal. Die Dim-Anweisungen gehören natürlich in den Beginn des Makros, habe sie nur an diese Stelle gesetzt, damit sie im Quelltext-Schnipsel zu sehen sind.
Code:
Dim intSp1 As Integer ' Spalte mit Überschrift "Name - _Rufname" Dim intSp2 As Integer ' Spalte mit Überschrift "Name" intSp1 = Application.Match("Name - _RUFName", Rows(6), 0) ' Spalte mit Überschrift"Name - _Rufname" finden intsp2 = intSp1 - 1 ' Spalte mit Überschrift "Name" festlegen Set Bereich = Intersect(Target, Range("AC7:AC800")) 'Bereich AC7 bis AC800 überwachen (Rufnamen) If Not Bereich Is Nothing Then Application.EnableEvents = False For Each Zelle In Bereich If Zelle <> "" Then ' Cells(Zelle.Row, "BU") = Zelle ' Änderung in Spalte BT eintragen Cells(Zelle.Row, intSp1) = Zelle End If ' If Cells(Zelle.Row, "AC") = "" Then Cells(Zelle.Row, "BU") = " " ' wenn (mit DEL) Zelle in Spalte "AC" leer ist, dann auch in "BT" leer If Cells(Zelle.Row, "AC") = "" Then Cells(Zelle.Row, intSp1) = "" ' wenn (mit DEL) Zelle in Spalte "AC" leer ist, dann auch in "Rufname" leer ' If Cells(Zelle.Row, "AC").Interior.ColorIndex = 40 Then Cells(Zelle.Row, "BU").Interior.ColorIndex = 40 Else Interior.ColorIndex = 2 ' und markieren If Cells(Zelle.Row, "AC").Interior.ColorIndex = 40 Then Cells(Zelle.Row, intSp1) _ .Interior.ColorIndex = 40 Else Cells(Zelle.Row, intSp1).Interior.ColorIndex = 2 ' und markieren Next Zelle Application.EnableEvents = True End If
Viele Grüße Klaus-Dieter Der Erfolg hat viele Väter, der Misserfolg ist ein Waisenkind Richard Cobden
Folgende(r) 1 Nutzer sagt Danke an Klaus-Dieter für diesen Beitrag:1 Nutzer sagt Danke an Klaus-Dieter für diesen Beitrag 28 • luna101
Guten Abend Klaus-Dieter und -lichen habe mein Makro mit Deinen Vorgaben ergänzt und es funktioniert perfekt. Ich bewundere immer wieder eure Hilfsbereitschaft und die Zeit die Ihr aufwendet, uns Laien zu helfen. Ihr seid Wünsche noch ein schöner Abend. Gruss Martin
vielen Dank für deine positiver Rückmeldung und das "elektronische Danke". Das motiviert dann sehr mit der Hilfe weiterzumachen. Sehr viele Fragesteller halten Foren offenbar für eine Art verlängerten Arm von Microsoft oder einfach eine Servicestelle, so dass alles für selbstverständlich genommen wird. Was treibt mich um, hier und an anderen Stellen zu helfen? Das betrachte ich als eine Art Gehirnjogging, was für einen Menschen meines fortgeschrittenen Alters durchaus sinnvoll ist. Man versucht Probleme zu lösen, für die man häufig auch noch keinen gangbaren Weg kennt. Die Beschäftigung damit ist meiner Ansicht nach effektiver, als zum Beispiel das Lösen von Kreuzworträtseln. Auch finde ich durch Forenanfragen immer wieder neue Ansätze für den Umgang mit den vielen Excel-Funktionen. Vor allem der Umgang mit VBA und die daraus resultierenden Möglichkeiten, fasziniert mich, seit es diese Erweiterung in Excel gibt.
Was mich an deiner Anfrage noch interessiert: was ist das Ziel des direkten Vergleichs zweier Listen auf einem Blatt? Solche Vorgehensweisen betrachte ich eher kritisch, weil sich der Sinn für mich nicht erschließt. Magst du dazu noch etwas schreiben?
Viele Grüße Klaus-Dieter Der Erfolg hat viele Väter, der Misserfolg ist ein Waisenkind Richard Cobden
08.09.2022, 18:59 (Dieser Beitrag wurde zuletzt bearbeitet: 08.09.2022, 19:40 von luna101.)
Guten Abend Klaus-Dieter Gerne beantworte ich Deine Frage möchte nochmals für Deine Hilfe danken. Ich betreibe schon seid einigen Jahren hobbymässig Ahnenforschung. Damit wir einander melden können, wo und welche Änderungen gefunden wurden, brauchen wir, der schnellen Übersicht wegen, eine Exceltabelle. Die wird vom Homepage (HP) verantwortlichen geliefert und enthält viele für uns unnötige Spalten, die wir nur zum Melden nicht benötigen. Darum erstelle ich daraus ein Extakt mit den für uns wichtigen Daten. Wenn nun Änderungen zu melden sind, wird im Extrakt die Änderungen eingetragen und farblich markiert. Diese Änderungen werden mit dem Makro, das Du zum laufen gebracht hast, dann automatisch auch im Original eingetragen und markiert. Der HP verantworliche muss dann nur noch die Verknüpfungen bereinigen, dann damit ein Update ausführen und die HP ist wieder auf dem neuesten Stand und jeder in der Gruppe, sieht wo Änderungen gemacht wurden und kann sie, wenn nötig in der eigenen Datenverwaltung bereinigen. Die von mir gelieferte Tabelle enthält nur 2 Beispiel Einträge, die restlichen Spalten möchte ich versuchen selber anzupassen. Wenn ich damit Probleme kriege, bedanke ich mich für Deine weitere Hilfe. Wünsche noch ein schöner Abend. Mit dankbaren Grüssen Martin