Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: variable Verkettung VBA

variable Verkettung VBA
24.07.2005 10:13:42
Frederike
Guten Morgen zusammen,
habe eine Frage in der ich nicht weiter komme!!
Wie kann ich variabel verketten?
BSP.: Die Bezeichnung L7 taucht in jeder Zeile einmal auf - die Spalte, in der die Bezeichnung steht ist aber immer unterschiedlich. Jetzt soll alles verkettet werden von der ersten bis zur variablen Spalte. Wie kann ich das in VBA programmieren?
i = Zähler in For -Schleife
Spalte = Rows(i).Find("L7").Column
?
?
Danke für Eure Hilfe
FB
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: variable Verkettung VBA
24.07.2005 10:19:28
Matthias
Hallo Federike,
mein Vorschlag:

Sub Kette()
Dim i, j
Dim temp As String
For i = 1 To 30
j = 1
temp = ""
Do
temp = temp & Cells(i, j)
j = j + 1
If j > 256 Then Exit Do 'Falls L7 nicht gefunden wird
Loop Until Cells(i, j - 1) = "L7"
MsgBox "Zeile " & i & ": " & temp
Next i
End Sub

Gruß Matthias
Anzeige
AW: variable Verkettung VBA
24.07.2005 10:36:45
Josef
Hallo Frederike!
Probier's mal so!
Option Explicit

Sub verketten()
    Dim rng As Range
    Dim lRow As Long
    
    For lRow = 1 To Cells(65536, 1).End(xlUp).Row
        Set rng = Rows(lRow).Find("L7")
        If Not rng Is Nothing Then
            Debug.Print verkettenSpezial(Range(Cells(lRow, 1), _
                Cells(lRow, rng.Column)), ", ")
        End If
    Next
End Sub


Private Function verkettenSpezial(bereich As Range, _
        Optional trenner As String) As String

    Dim r As Range
    
    For Each r In bereich
        verkettenSpezial = verkettenSpezial & r & trenner
    Next
    
    verkettenSpezial = Left(verkettenSpezial, Len(verkettenSpezial) - Len(trenner))
    
End Function


Gruß Sepp
P.S.: Rückmeldung nicht vergessen!


Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Variable Verkettung in VBA für Excel


Schritt-für-Schritt-Anleitung

Um in Excel VBA Strings zu verketten, kannst du die folgende Schritt-für-Schritt-Anleitung verwenden:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu: Rechtsklicke auf "VBAProject (DeinWorkbookName)" > Einfügen > Modul.
  3. Gib den Code ein: Kopiere und füge den folgenden Code in das Modul ein:
Sub Kette()
    Dim i As Integer, j As Integer
    Dim temp As String
    For i = 1 To 30
        j = 1
        temp = ""
        Do
            temp = temp & Cells(i, j)
            j = j + 1
            If j > 256 Then Exit Do 'Falls L7 nicht gefunden wird
        Loop Until Cells(i, j - 1) = "L7"
        MsgBox "Zeile " & i & ": " & temp
    Next i
End Sub
  1. Führe das Makro aus: Drücke F5, um das Makro auszuführen und die verketteten Strings zu sehen.

Häufige Fehler und Lösungen

  • Fehler: "Typenkonflikt": Stelle sicher, dass die Datentypen in deinem Code korrekt definiert sind. Zum Beispiel, Dim i As Integer sollte klar definiert sein.

  • Fehler: "Objekt nicht gefunden": Überprüfe, ob die Bezeichnung "L7" tatsächlich in deiner Tabelle vorhanden ist. Wenn nicht, wird das Makro möglicherweise nicht die erwarteten Ergebnisse liefern.

  • Lösung für leere Zellen: Wenn du leere Zellen in deinem Bereich hast, verwende eine Bedingung, um diese zu überspringen:

If Not IsEmpty(Cells(i, j)) Then
    temp = temp & Cells(i, j)
End If

Alternative Methoden

Ein weiteres Beispiel für das Verketten von Strings in Excel VBA ist die Verwendung einer Funktion:

Private Function verkettenSpezial(bereich As Range, Optional trenner As String) As String
    Dim r As Range
    For Each r In bereich
        verkettenSpezial = verkettenSpezial & r & trenner
    Next
    verkettenSpezial = Left(verkettenSpezial, Len(verkettenSpezial) - Len(trenner))
End Function

Diese Funktion kannst du in deinem Hauptsub aufrufen, um Strings effizient zusammenzufügen.


Praktische Beispiele

Hier sind ein paar praktische Beispiele, wie du VBA Strings verketten kannst:

  1. Verketten von Zellen in einer Zeile:

    Dim result As String
    result = verkettenSpezial(Range("A1:C1"), ", ")
    MsgBox result
  2. Verketten basierend auf einer Bedingung:

    Dim rng As Range
    Set rng = Rows(1).Find("L7")
    If Not rng Is Nothing Then
       Debug.Print verkettenSpezial(Range(Cells(1, 1), Cells(1, rng.Column)), ", ")
    End If

Diese Methoden zeigen dir, wie du in Excel VBA Strings verketten kannst, um die Datenverarbeitung zu erleichtern.


Tipps für Profis

  • Verwende Join: Für große Datenmengen kann die Join-Funktion effizienter sein:
Dim arr() As String
arr = Split("Text1,Text2,Text3", ",")
MsgBox Join(arr, ", ")
  • Code optimieren: Reduziere die Anzahl der Zellzugriffe, indem du die Zellen zuerst in ein Array lädst und dann die Verarbeitung durchführst.

  • Verketten großer Datenmengen: Bei sehr großen Datenmengen kann es vorteilhaft sein, die Ergebnisse in einem StringBuilder-Objekt zu speichern, um die Leistung zu verbessern.


FAQ: Häufige Fragen

1. Wie kann ich die Verkettung nur für bestimmte Zeilen durchführen?
Du kannst die Schleife anpassen, um nur die gewünschten Zeilen zu durchlaufen, z.B. For i = 10 To 20.

2. Kann ich auch andere Datentypen verketten?
Ja, VBA konvertiert automatisch die meisten Datentypen in Strings, wenn du sie verkettest. Achte jedoch darauf, dass du beim Verketten von Objekten deren Value-Eigenschaft verwendest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige