Worksheet_Change(ByVal Target As Range) fehler beheben
#11
Hallo Martin,

der eigentlich gängige Weg mittels .Find die passende Spalte zu finden klappt so nicht, da dies eine Range Funktion ist und ein neues Change Ereignis auslöst.
Da bleibt nur der Weg über eine Schleife die passende Spalte zu finden.
Der Bereich #GEN habe ich als Block durchlaufen. Die Prozedur findet Anfang und Ende des Blockes, dass falls der Bereich der Generationen verändert wird, das korrekt erkannt wird.
Die anderen Spalten habe ich mit Namenszuordnung zu den Spalten via Schleife angelegt. Zwecks Test, ob es so passt, erst mal nur 3 Schleifen (Vornamen, Namen und Rufnamen).

Gruß Uwe


Angehängte Dateien
.xlsm   Datenkorrekturen nach Quelldaten kopieren.xlsm (Größe: 88,66 KB / Downloads: 11)
Antworten Top
#12
Star 
Guten Tag Uwe
98 für die Modifikation.
Wenn ich die Einträge in den Spalten einzell lösche funktioniert es einwandfrei, ebenso beim
Generationen Block 7 bis 26 , da werden im Generationen Block 57 bis 68 die Daten gelöscht.
Ist es möglich, dass zusätzlich zum Generationen Block auch noch die Einträge in Spalte 27 und 70
gelöscht werden.Wenn es zu aufwendig wird kann ich auch so damit leben.
Der Rest funktioniert wie gewünscht.
Wünsche ei schöner Tag
Gruss Martin
Antworten Top
#13
Hallo Martin,

um 27 und 70 mit zu entfernen ändere den Teil so:

Code:
For i = lngGenStart - 1 To lngGenEnde                           ' Wert im Generationsblock sowie 27 und 70 löschen
            If .Cells(VarZeile, i) = varWert Then
                MsgBox .Cells(VarZeile, i) & " in Spalte " & i
                .Cells(VarZeile, i) = ""
                .Cells(VarZeile, 27) = ""
                .Cells(VarZeile, 70) = ""
            End If
        Next i

Gruß Uwe
Antworten Top
#14
@egon

Code:
application.union(.Cells(VarZeile, i),.Cells(VarZeile, 27),.Cells(VarZeile, 70)).clearcontents
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#15
Guten Tag Uwe
Danke für die Modifikation. Funktioniert einwandfrei.
Genauso habe ich mir das vorgestellt. Freue mich schon auf das Endergebniss,
oder auf deine Hilfe, um die restlichen Löschungen zu realisieren.
Gruss Martin
Antworten Top
#16
Guten Tag Uwe
 69 Ich kriege es nicht zum Laufen. Ich habe versucht, dass Makro zu vervollständigen
und zum Laufen zu bringen, leider war der Erfolg nicht allzu gross. Alle gelb markierten Zellen
wurden gelöscht, der Rest jedoch nicht. Ich vermute es liegt an den Überschriften. Wenn ja,
dann könnte man von den Spalten "A" bis "AV" die Spaltenbezeichnungen nehmen, da diese immer
am gleichen Ort stehen und sich nicht ändern. Ich weiss aber wie das Makro geändert werden muss.
Darf ich nochmals um deine Hilfe bitten?
Mit freundlichen Guss
Martin


Angehängte Dateien
.xlsm   Datenkorrekturen nach Quelldaten kopieren.xlsm (Größe: 92,97 KB / Downloads: 5)
Antworten Top
#17
Hallo Martin,

du hast erst mal die einzelnen Prozedurschritte richtig zugeordnet. Aber diese werden über ein Change Ereignis ausgelöst: Set Bereich = Intersect(Target, Range("G7:AH800"))
Das bedeutet, dass dieser Bereich entsprechend angepasst werden muss.
Also: Set Bereich = Intersect(Target, Range("G7:AV800"))
Anbei die Datei

Gruß Uwe


Angehängte Dateien
.xlsm   Datenkorrekturen nach Quelldaten kopieren(1).xlsm (Größe: 88,72 KB / Downloads: 18)
Antworten Top
#18
Guten Tag Uwe
98 98 für das modifizierte Makro.
Bis auf das Löschen der Spalte "Adresse" läuft es .
Hoffe, das auch noch hin zu kriegen, sonst melde ich
mich wieder.
Gruss Martin
Antworten Top
#19
Guten Tag Uwe,
habe versucht den Fehler zu finden, um die Einträge der Spalte "Wohn Adresse"
zu löschen. Leider ohne Erfolg. Wo liegt der Fehler ? Bitte um Hilfe.
Gruss Martin
Antworten Top
#20
Hallo Martin,

die Ursache ist ganz simpel und durch entfernen eines Leezeichens zu lösen:
In Zelle AN6 ist hinter dem Spaltennamen ein Leerzeichen. Das kannst du entweder entfernen oder falls du das nicht möchtest dann den gesuchten Inhalt in der Prozedur entsprechend anpassen:

Code:
If ActiveCell.Offset(-ActiveCell.Row + 6, 0) = "Wohn Adresse " Then

Gruß Uwe
Antworten Top


Gehe zu:


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