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
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
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
' 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.
Guten Abend Uwe, 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
23.10.2024, 21:56 (Dieser Beitrag wurde zuletzt bearbeitet: 23.10.2024, 21:56 von Egon12.)
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.
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:1 Nutzer sagt Danke an Egon12 für diesen Beitrag 28 • luna101