ich habe eine Tabelle mit mehreren unterschiedlichen Einzelwerten, welche in den Spalten A, B und C stehen. Diese Einzelwerte (z.B. Farbe, Gewicht, Breite, etc.) werden über eine Suchen & Ersetzen Funktion über "Platzhalter" in eine Zelle in Spalte D, untereinander mit Zeilenumbrüchen geschrieben, sodass eine Zelle die gesamten Werte enthält.
Z.B.
Farbe = blau
Gewicht = 10kg
Breite = 1m
Wobei dann in den Zellen die Werte "blau", "10" und "1" stehen.
Sollte jetzt aus welchen Gründen auch immer ein Einzelwert "leer" sein, möchte ich dass die ganze Zeile verschwindet. Also, z.B. wenn in der Zelle für Gewicht nichts eingetragen ist, soll in der Zelle die Ausgabe dann so aussehen:
Farbe = blau
Breite = 1m
Die Zelle in Spalte D, in die geschrieben wird ist immer mit den jeweiligen Werten vordefiniert, sodass der Code über Ersetzen nach dem Freitext sucht und diesen durch den Wert ersetzt.
Beispiel:
Farbe = varFarbe
Gewicht = varGewicht kg
Breite = varBreite m
Bis jetzt habe ich folgenden Code:
Sub Text_ersetzen()
Dim val_Farbe, val_Gewicht, val_Breite as String
Dim head_Farbe, head_Gewicht, head_Breite, head_Eig As String
Dim col_Farbe, col_Gewicht, col_Breite, col_Eig As Integer
Dim i, last_row, head_row, first_row, loop_row, cl, repl_cl As Long
'Überschriften finden, Spalten rausschreiben und letzte Zeile finden
head_Farbe = "Farbe"
head_Gewicht = "Gewicht"
head_Breite = "Breite"
head_Eig = "Eigenschaften"
head_row = 1
col_Farbe = Application.WorksheetFunction.Match(head_Farbe, Cells(head_row, 1).EntireRow, False)
col_Gewicht = Application.WorksheetFunction.Match(head_Gewicht, Cells(head_row, 1).EntireRow, False)
col_Breite = Application.WorksheetFunction.Match(head_Breite, Cells(head_row, 1).EntireRow, False)
col_Eig = Application.WorksheetFunction.Match(head_Eig, Cells(head_row, 1).EntireRow, False)
last_row = Cells(Rows.Count, col_Eig).End(xlUp).Row
'Schleife zum Austauschen der Variablen
loop_row = 2
For i = loop_row To last_row
'Werte aus den Zellen auslesen
val_Farbe = Cells(loop_row, col_Farbe).Value
val_Gewicht = Cells(loop_row, col_Gewicht).Value
val_Breite = Cells(loop_row, col_Breite).Value
'Werte ersetzen:
Cells(loop_row, col_Eig).Value = Replace(Cells(loop_row, col_Eig).Value, "varFarbe", val_Farbe)
Cells(loop_row, col_Eig).Value = Replace(Cells(loop_row, col_Eig).Value, "varGewicht", val_Gewicht)
Cells(loop_row, col_Eig).Value = Replace(Cells(loop_row, col_Eig).Value, "varBreite", val_Breite)
loop_row = loop_row + 1 'Schleife um 1 hochzählen
Next i
End Sub
Ich komme jetzt nicht so wirklich weiter bei "Werte ersetzen" und wie ich es schaffe, wenn in einer Zelle nichts steht, dass dann diese Textzeile, inkl. Zeilenumbruch aus meinem Text entfernt wird. Wichtig ist hier auch zu erwähnen, dass nur dieser spezielle Zeilenumbruch entfernt werden soll und nicht alle in der Zelle enthaltenen.
Mein Gedankengang wäre jetzt, das ebenfalls über eine Ersetzen-Funktion zu machen, aber da fehlt mir die Idee wie ich den Cursor in die Zeile bekomme um den Zeilenumbruch zu entfernen:
If IsEmpty(val_Farbe.Value) Then
Cells(loop_row, col_Eig).Value = Replace(Cells(loop_row, col_Eig).Value, "Farbe = varFarbe", "")
Else
Cells(loop_row, col_Eig).Value = Replace(Cells(loop_row, col_Eig).Value, "varFarbe", val_Farbe)
End If
Danke schon mal für die Hilfe!