Text ausschneiden und an Text anderer Zelle dranhängen

  • Excel

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Excelwolf.

    Text ausschneiden und an Text anderer Zelle dranhängen

    Ausgangslage:
    TExt in A1 = "1 Heller (Cu) Joseph II. 1765 - 1790"
    Text in A2 = "Brustbild Josef II n. r. "

    Ziel:
    Text in A1 =
    "1 Heller (Cu) Joseph II. 1765 - 1790
    Brustbild Josef II n. r."

    Habe bei ca. 1000 Zeilen den Text z. B. "A2" an den Text "A1" mit Zeilenumbruch dranzuhängen. Meine Makroaufzeichnung habe ich relativ gemacht und erweitert, aber irgendwo einen simplen VBA-Fehler. Die Zellenanwahl "A2" geschieht per Maus. Eine relative Zellenanwahl ist notwendig,

    VBA Code

    VB.NET-Quellcode

    1. x = ActiveCell.Row
    2. y = ActiveCell.Column
    3. strWert = Selection
    4. ActiveCell.Offset(-1, 0).Select
    5. ' AktiveCell erhält einen Wert von A1, allerdings keine Übergabe an strWert1 = ""
    6. 'strWert1 = ActiveCell.Offset(-1, 0).Value
    7. strWertGesamt = strWert1 & Chr(10) & strWert
    8. Sheets("Tabelle1").Range(ActiveCell).Value = strWertGesamt
    9. Selection.Clear
    10. End Sub




    Danke für einen Tipp
    Dateien
    • Text_anfügen.xls

      (26,62 kB, 123 mal heruntergeladen, zuletzt: )

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Excelwolf“ ()

    Ich habs mal so gelöst:

    [vb]Sub Texteinsobenanhängen()
    '
    ' Texteinsobenanhängen Makro
    ' Makro am 04.12.2015 von Lacheiner aufgezeichnet
    ' Neu 05.12.2015 hfh
    ' Tastenkombination: Strg+k
    '

    Dim strWert As String
    Dim strWert1 As String
    Dim strWertGesamt As String


    strWert = Selection.Value

    ActiveCell.Offset(1, 0).Select
    strWert1 = Selection.Value
    Selection.Clear

    strWertGesamt = strWert & Chr(10) & strWert1

    ActiveCell.Offset(-1, 0).Select
    ActiveCell = strWertGesamt

    End Sub/vb]

    Hab die X/Y weggelassen. Wenn Du sie brauchst wäre vielleicht X für Columns (horizontal) und Y für Rows (Vertikal) besser?

    Gruß
    Horst

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „horstfh“ ()

    Hört bitte auf, per Code im Sheet herumzuklicken.
    Der Macrorekorder kann's nicht besser, aber für Programmierer ist das ein Faux-Pas.

    Für die ausgewählten Zeilen:

    Visual Basic-Quellcode

    1. Dim c As Range
    2. For Each c In Intersect(Selection.EntireRow, Range("C:C"))
    3. c.Value = c.Offset(0, -2) & vbLf & c.Offset(0, -1)
    4. Next

    Oder, falls für gesamte Sheet gemacht werden soll:

    Visual Basic-Quellcode

    1. Dim c As Range
    2. For Each c In Intersect(UsedRange.EntireRow, Range("C:C"))
    3. c.Value = c.Offset(0, -2) & vbLf & c.Offset(0, -1)
    4. Next


    Wenn's tatsächlich relativ zur ausgewählten Zelle sein soll:

    Visual Basic-Quellcode

    1. If Selection.Column > 2 Then Selection.Value = Selection.Offset(0, -2) & vbLf & Selection.Offset(0, -1)
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „petaod“ ()

    Danke für die schnelle Lösungen:

    Beide Lösungen ausprobiert, angepasst und bringen Erfolg. Die Lösung von petaod ist klar zu bevorzugen. Hab bis vor 15 Jahren VBA programmiert und kann leider jetzt mit 70 und der langen Pause vieles nicht mehr abrufen. Daher Danke für eure Hilfe von einem, der wieder auf dem Beginnerstatus steht.