Textinhalte in einer ganzen Spalte automatisch einklammern!

Dieses Thema Textinhalte in einer ganzen Spalte automatisch einklammern! im Forum "Windows XP Forum" wurde erstellt von nikola75, 25. Sep. 2010.

Thema: Textinhalte in einer ganzen Spalte automatisch einklammern! Hallo, habe gleich zwei Anliegen: 1) habe ein Datenblatt mit mehreren tausend beschrifteten Zeilen, bzw. 12 Spalten...

  1. Hallo,
    habe gleich zwei Anliegen:

    1) habe ein Datenblatt mit mehreren tausend beschrifteten Zeilen, bzw. 12 Spalten und würde gern den Textinhalt von drei bestimmten Spalten nachträglich einklammern, bzw. daß, wenn ich weitere Zeichen in weitere Zeilen dieser Spalten eingebe, diese automatisch in Klammern versetzt werden.

    2) ebenfalls würde ich gern in weiteren drei Spalten dieses Datenblattes, welche aber nicht die gleichen wie die oben sind, in jeder Zeile das Wort->' Std. hinter dem, schon vorhandenen Text stehen haben, bzw. auch so wie oben, daß dies automatisch passiert, wenn ich noch weitere Zeilen innerhalb dieser Spalten beschrifte.

    Ich weiß, daß meine Wünsche nur mit Formeln erfüllt werden können, allerdings bin ich im Formeln zusammenbasteln absolut nicht begabt und ich würde mich freuen, wenn mir jemand dabei helfen könnte und mir dann auch noch sagen könnte, wie und wo ich diese Formel einsetzen muß!
    Gruß an alle
     
  2. Hallo nikola75,

    das ist mit Formeln leider nicht möglich.

    Der erste Wunsch mit den Klammern ist lösbar über->bedingte Formatierung', indem man ein benutzerdefiniertes Format für nicht leere Zellen setzt:
    Code:
    (@)
    (der String wird von Klammern eingerahmt)

    Für Std. könnte man den gleichen Weg gehen
    Code:
    @ Std.
    Aber leider sind die Zeichen S, t, d und Punkt innerhalb des Formatstrings mit anderer Funktionalität belegt, so dass das nicht klappt.

    Es gibt aber einen Ausweg über Makros. (zum Ausprobieren auf jeden Fall erstmal eine Kopie deiner Datei verwenden)

    Füge ein Modul ein, in das du folgenden Code kopierst:

    Code:
    Option Explicit
    
    '<<< A N P A S S E N >>>
    Public Const c_ERSTE_ZEILE = 2 ->erste Zeile nach den Überschriften
    Public Const c_SP_KLAMMER_1 = 4->1. Spalte in der Text geklammert werden soll
    Public Const c_SP_KLAMMER_2 = 5->2. Spalte in der Text geklammert werden soll
    Public Const c_SP_KLAMMER_3 = 6->3. Spalte in der Text geklammert werden soll
    Public Const c_SP_STD_1 = 7  ->1. Spalte in der Text-> Std.' angehaengt werden soll
    Public Const c_SP_STD_2 = 8  ->2. Spalte in der Text-> Std.' angehaengt werden soll
    Public Const c_SP_STD_3 = 9  ->3. Spalte in der Text-> Std.' angehaengt werden soll
    '<<< A N P A S S E N  E N D E >>>
    
    Sub TextKlammerUndStdSetzen()
     Dim Zelle As Range, ws As Worksheet
     Dim lRows As Long, z As Long, sp As Long, x As Long
     
    ->Blatt setzen
     Set ws = ThisWorkbook.ActiveSheet
     
    ->1) ich würde gern den Textinhalt von drei bestimmten Spalten nachträglich einklammern
     For x = 1 To 3
      Select Case x
       Case 1: sp = c_SP_KLAMMER_1
       Case 2: sp = c_SP_KLAMMER_2
       Case 3: sp = c_SP_KLAMMER_3
      End Select
      lRows = ws.Cells(ws.Rows.Count, sp).End(xlUp).Row
      For z = c_ERSTE_ZEILE To lRows
       Set Zelle = ws.Range(ws.Cells(z, sp), ws.Cells(z, sp))
       Call RangeText_InKlammernSetzen(Zelle)
      Next
     Next
     
    ->2) ich würde gern in drei Spalten-> Std.' hinter dem schon vorhandenen Text stehen haben
     For x = 1 To 3
      Select Case x
       Case 1: sp = c_SP_STD_1
       Case 2: sp = c_SP_STD_2
       Case 3: sp = c_SP_STD_3
      End Select
      lRows = ws.Cells(ws.Rows.Count, sp).End(xlUp).Row
      For z = c_ERSTE_ZEILE To lRows
       Set Zelle = ws.Range(ws.Cells(z, sp), ws.Cells(z, sp))
       Call RangeText_StdAnhaengen(Zelle)
      Next
     Next
     
    AUFRAEUMEN:
     Set ws = Nothing: Set Zelle = Nothing
    End Sub
    
    '**********************************************************************
    Function RangeText_InKlammernSetzen(Zelle As Range)
     
     Const c_KLAMMER_LINKS = (
     Const c_KLAMMER_RECHTS = )
     
     If  = Zelle.Value Then Exit Function
     If Not ((Left(Zelle.Value, Len(c_KLAMMER_LINKS)) = c_KLAMMER_LINKS) _
       And (Right(Zelle.Value, Len(c_KLAMMER_RECHTS)) = c_KLAMMER_RECHTS)) Then
      Zelle.Value = c_KLAMMER_LINKS & Zelle.Value & c_KLAMMER_RECHTS
     End If
    End Function
    
    '**********************************************************************
    Function RangeText_StdAnhaengen(Zelle As Range)
     
     Const c_TEXT_STD =  Std.
     
     If  = Zelle.Value Then Exit Function
     If Right(Zelle.Value, Len(c_TEXT_STD)) <> c_TEXT_STD Then
      Zelle.Value = Zelle.Value & c_TEXT_STD
     End If
    End Function
    Unter <<< A N P A S S E N >>> trägt du deine entsprechenden Zeilen/Spalten-Nummern ein


    Danach kannst du Das Makro Sub TextKlammerUndStdSetzen() ausführen und schauen, ob es das Gewollte ausführt.

    Zur Automatisierung muß dann folgender Code in die Code-Seite des Tabellenblattes eingefügt werden.
    (direkt zu erreichen über: Tabellenblattlasche->rechte Maustaste->Code anzeigen)

    Code:
    Option Explicit
    
    Private Sub Worksheet_Change(ByVal Target As Range)
     Dim Zelle As Range
     
     For Each Zelle In Target
      If Zelle.Row > c_ERSTE_ZEILE Then
       If (Zelle.Column = c_SP_KLAMMER_1) _
       Or (Zelle.Column = c_SP_KLAMMER_2) _
       Or (Zelle.Column = c_SP_KLAMMER_3) Then
        Set Zelle = Me.Range(Me.Cells(Zelle.Row, Zelle.Column), Me.Cells(Zelle.Row, Zelle.Column))
        Call RangeText_InKlammernSetzen(Zelle)
       ElseIf (Zelle.Column = c_SP_STD_1) _
         Or (Zelle.Column = c_SP_STD_2) _
         Or (Zelle.Column = c_SP_STD_3) Then
         Set Zelle = Me.Range(Me.Cells(Zelle.Row, Zelle.Column), Me.Cells(Zelle.Row, Zelle.Column))
         Call RangeText_StdAnhaengen(Zelle)
       End If
      End If
     Next
     
    AUFRAEUMEN:
     Set Zelle = Nothing
    End Sub
    Gruß Matjes :)
     
  3. Vielen Dank, Matjes, für all deine Mühe um mir weiterzuhelfen! Ich habe alles so gemacht, wie du es geschrieben hast, aber irgendwie, woran immer es auch liegen mag, hat es nicht geklappt.

    Doch nun habe ich einen jahrealten vergessenen Thread, indem ich schonmal
    nach einer ähnlichen Funktion gefragt hatte, wiederentdeckt.
    Das mit dem (@), bezüglich zu meinem ersten Wunsch, hat wunderbar geklappt!
    Die andere Sache habe ich folgendermaßen gelöst:
    Habe neben den vorhandenen Spalten, in denen schon der Text vorhanden ist, noch jeweils drei weitere Spalten eingefügt. Also A, B, C, und D.
    In Spalte A ist schon der Text drin;
    In Spalte B habe ich oben in die erste Zeile das Wort Std. eingegeben und es in alle weitere Zeilen der Spalte heruntergezogen;
    In Spalte C habe ich die Formel =A1& &B1 eingetragen und sie ebenfalls in alle weiteren Zeilen der Spalte gezogen, so daß ich dann in jeder einzelnen Zeile dieser Spalte genau mein gewünschtes Resultat stehen habe;
    Anschliessend habe ich die Inhalte von Spalte C kopiert und diese in Spalte D->'nur als Text eingefügt, so daß ich danach, wenn das Arbeitsblatt komplett fertig ist, problemlos die nun überflüssigen Spalten A, B und C löschen kann.

    Trotzdem Vielen Dank, für deine schnelle Antwort und all die Mühe und Zeit, um mir weiterzuhelfen.
     
Die Seite wird geladen...

Textinhalte in einer ganzen Spalte automatisch einklammern! - Ähnliche Themen

Forum Datum
Fehlermeldung beim remote Login zu meiner IP-Cam Windows 7 Forum Dienstag um 12:31 Uhr
EXE-Dateien nach einer Zeit nicht mehr ausführbar Windows 8 Forum Sonntag um 21:21 Uhr
Ergebnis einer Google-suche speichern in Favoriten-liste Windows 8 Forum Samstag um 18:16 Uhr
Fehler beim Ändern der Eigenschaften einer Datei Windows 10 Forum 17. Okt. 2016
Einbau einer Grafikkarte Windows 10 Forum 8. Okt. 2016