Wenn Text in Spalte AA ändert, dann auch in Spalte H
#1
Hallo ihr fleissigen Helfer,
Bitte um Hilfe.
Wenn sich Text in der Spalte "Vornamen" ändert,
sollte sich der Text in der gleichen Zeile in der Spalte "G:Z"ebenfals ändern. 
Bei Zellen die mit " '+ Text " beginnen (zB.'+ Peter)
darf nur  Peter durch den Text aus Spalte Vornamen geändert werden.
Numerische Zellen dürfen nicht überschrieben werden.
Ich kriege es nicht gebacken.
Mit dankbaren Grüssen
Martin


Angehängte Dateien
.xlsm   Test_Vornamen_nach_Generationen _modifizieren.xlsm (Größe: 1,38 MB / Downloads: 14)
Antworten Top
#2
Moin Martin

Zitat:Größe: 1,38 MB
Bitte lade eine kleinere Datei hoch.
Wir sehen uns!
... Detlef

Meine Beiträge können Ironie oder Sarkasmus enthalten.

Antworten Top
#3
Hallo Martin,

ins Modul des Tabellenblattes in Sub Worksheet_Change(ByVal Target As Range) :
Code:
    ' Namen anpassen
    If Not Intersect(Target, Me.Range("AF7:AF9")) Is Nothing Then   ' Range anpassen
        For i = 7 To 31
            If Cells(Target.Row, i) <> "" And Not IsNumeric(Cells(Target.Row, i)) And Cells(Target.Row, i) <> Target.Text Then
                Cells(Target.Row, i) = Target.Text
            End If
        Next i
    End If
das sollte so ausreichend sein.

Gruß Uwe
Antworten Top
#4
Danke Uwe, 
werde es mal testen
Gruss Martin.

Hallo Detlef,
her der schlankere Code.
Gruss Martin

.xlsm   Test_Vornamen_nach_Generationen _modifizieren.xlsm (Größe: 47,19 KB / Downloads: 9)
Antworten Top
#5
Danke Uwe,
Die Daten werden geändert, leider werden dabei die '+ auch überschrieben.
Auch sollten die Daten der Spalte AA7 bis zur letzten beschriebenen Zelle
geändert werden.
Gruss Martin
Antworten Top
#6
Hallo Martin,

das wäre dann so:
Code:
    ' Namen anpassen
    If Not Intersect(Target, Me.Range("AF7:AF" & Cells(Rows.Count, 27).End(xlUp).Row)) Is Nothing Then   ' Range anpassen
        For i = 7 To 31
            If Cells(Target.Row, i) <> "" And Not IsNumeric(Cells(Target.Row, i)) And Cells(Target.Row, i) <> Target.Text Then
                If InStr(1, Cells(Target.Row, i), "'+ ", vbTextCompare) > 0 Then
                    Cells(Target.Row, i) = " '+ " & Target
                Else
                    Cells(Target.Row, i) = Target.Text
                End If
            End If
        Next i
    End If
Was soll in Spalte AA7..AA letzte Zeile an Daten sich ändern. Da sind keine Einträge in deinem Beispiel vorhanden. In der Schleife werden alle Zellen der geänderten Zeile von Spalte G bis AE überprüft und ggf. geändert.

Gruß Uwe
Antworten Top
#7
Guten Abend Uwe,
98 für Deine Hilfe.
mit diesem Code, werden die '+  immer noch überschrieben.

Set Bereich = Intersect(Target, Range("AF7:AF" & Range("AF7").End(xlDown).Row))                  '"Vornamen"    Bereich AF7 bis AF letzte Zelle überwachen
    If Not Intersect(Target, Me.Range("AF7:AF31" & Cells(Rows.Count, 31).End(xlUp).Row)) Is Nothing Then  ' Range anpassen
        For i = 7 To 31
            If Cells(Target.Row, i) <> "" And Not IsNumeric(Cells(Target.Row, i)) And Cells(Target.Row, i) <> Target.Text Then
                If InStr(1, Cells(Target.Row, i), "'+ ", vbTextCompare) > 0 Then
                    Cells(Target.Row, i) = " '+ " & Target
                Else
                    Cells(Target.Row, i) = Target.Text
                End If
            End If
        Next i
    End If
Wo liegt der Fehler?
Gruss Martin
Antworten Top
#8
Hallo Martin,

so:
Code:
Set Bereich = Intersect(Target, Range("AF7:AF" & Range("AF7").End(xlDown).Row))                  '"Vornamen"    Bereich AF7 bis AF letzte Zelle überwachen
    If Not Intersect(Target, Me.Range("AF7:AF" & Cells(Rows.Count, 32).End(xlUp).Row)) Is Nothing Then  ' Range anpassen
        For i = 7 To 31
            If Cells(Target.Row, i) <> "" And Not IsNumeric(Cells(Target.Row, i)) And Cells(Target.Row, i) <> Target.Text Then
                If InStr(1, Cells(Target.Row, i), "'+ ", vbTextCompare) > 0 Then
                    Cells(Target.Row, i) = " '+ " & Target
                Else
                    Cells(Target.Row, i) = Target.Text
                End If
            End If
        Next i
    End If
Benutze für Code den CodeTag im Editor rechts neben der nummerierten Liste.

Gruß Uwe
Antworten Top
#9
Guten Morgen Uwe,
leider werden die '+ immer noch überschrieben. 22   Huh
Wo mache ich nur den Fehler? Ist so richtig eingefügt?
Gruss Martin


.xlsm   Test_Vornamen_nach_Generationen _modifizieren.xlsm (Größe: 55,22 KB / Downloads: 2)
Antworten Top
#10
Hallo Martin,

den Grund sieht man, wenn man sich den Inhalt der Zelle Q8 anschaut.
'+ bedeutet: ' ist Text und + also auch Text
Wenn vor dem einfachen Hochkommata ein Leerzeichen steht ist es bereits Text und Excel behandelt das einfache Hochkommata als Zeichen im Textstring und nicht zur Umwandlung der Zelle in Text.

Soll eine einheitliche Ausgabe (Umwandlung) erfolgen wie:
 " '+"
das wäre dann so:
Code:
Set Bereich = Intersect(Target, Range("AF7:AF" & Range("AF7").End(xlDown).Row))                  '"Vornamen"    Bereich AF7 bis AF letzte Zelle überwachen
    If Not Intersect(Target, Me.Range("AF7:AF" & Cells(Rows.Count, 32).End(xlUp).Row)) Is Nothing Then  ' Range anpassen
        For i = 7 To 31
            If Cells(Target.Row, i) <> "" And Not IsNumeric(Cells(Target.Row, i)) And Cells(Target.Row, i) <> Target.Text Then
                If InStr(1, Cells(Target.Row, i), "'+ ", vbTextCompare) > 0 Or InStr(1, Cells(Target.Row, i), "+ ", vbTextCompare) > 0 Then
                    Cells(Target.Row, i) = " '+ " & Target
                Else
                    Cells(Target.Row, i) = Target.Text
                End If
            End If
        Next i
    End If
End Sub

oder beide Ausgaben wie:
 " '+"  und  "  '+" 
Das wäre dann so:
Code:
Set Bereich = Intersect(Target, Range("AF7:AF" & Range("AF7").End(xlDown).Row))                  '"Vornamen"    Bereich AF7 bis AF letzte Zelle überwachen
    If Not Intersect(Target, Me.Range("AF7:AF" & Cells(Rows.Count, 32).End(xlUp).Row)) Is Nothing Then  ' Range anpassen
        For i = 7 To 31
            If Cells(Target.Row, i) <> "" And Not IsNumeric(Cells(Target.Row, i)) And Cells(Target.Row, i) <> Target.Text Then
                If InStr(1, Cells(Target.Row, i), "'+ ", vbTextCompare) > 0 Or InStr(1, Cells(Target.Row, i), "+ ", vbTextCompare) > 0 Then
                    If InStr(1, Cells(Target.Row, i), "+ ", vbTextCompare) = 1 Then
                        Cells(Target.Row, i) = "'+ " & Target
                    Else
                        Cells(Target.Row, i) = " '+ " & Target
                    End If
                Else
                    Cells(Target.Row, i) = Target.Text
                End If
            End If
        Next i
    End If
End Sub
Es ist natürlich für Excel kein gut zu verarbeitender Weg mit Plus Zeichen als Text in Zellen zu werkeln. Excel ist im Ursprung zum Rechnen geschaffen worden.

Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Egon12 für diesen Beitrag:
  • luna101
Antworten Top


Gehe zu:


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