Wir wünschen allen Forenteilnehmern ein frohes Fest und einen guten Rutsch ins neue Jahr. x

Kopierte Zellen markieren
#1
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


Angehängte Dateien
.xlsm   Änderungen markieren Test(1).xlsm (Größe: 181,17 KB / Downloads: 9)
Antworten Top
#2
Moin 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
Antworten Top
#3
Hallo,

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
Antworten Top
#4
Hallo,

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
Antworten Top
#5
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.


Beispiel:
'If Cells(Zelle.Row, "AB") = "" Then Cells(Zelle.Row, "Name") = " " 
'If Cells(Zelle.Row, "AB").Interior.ColorIndex = 40 Then Cells(Zelle.Row, "Name").Interior.ColorIndex = 40 Else Cells(Zelle.Row, "Name").Interior.ColorIndex = 2

Dasselbe bei:    "AC" zu "Name - _RUFName"

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


Angehängte Dateien
.xlsm   Änderungen markieren Test(1)(2).xlsm (Größe: 182,38 KB / Downloads: 9)
Antworten Top
#6
Hallo 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
Antworten Top
#7
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:
  • luna101
Antworten Top
#8
Guten Abend Klaus-Dieter 78 und   Heart  -lichen  98
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 35 
Wünsche noch ein schöner Abend.
Gruss Martin
Antworten Top
#9
Hallo 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
Antworten Top
#10
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
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste