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

Forumthread: Makro: Zellen verbinden

Makro: Zellen verbinden
15.12.2005 13:54:44
Kerstin
Hallo,
ich habe folgendes Problem:
bestehende Zahlen (jeweils in einer Zelle/Spalte): 5 5 5 6 6 6 6 7 7 usw.
Das Makro soll nun die Zellen verbinden, wenn die Zahlen gleich sind, d.h. das am Ende nur eine 5, eine 6, eine 7 usw. auftauchen. Es muss aber eine Überprüfung stattfinden, ob, die nächste Zahl noch gleich ist oder nicht, da nicht von jeder Zahl gleich viele Zellen vorhanden sind.
Ich hoffe, das Problem ist nicht zu kompliziert erklärt.
Habe bisher folgendes probiert:
For colIndex = 7 To 256
With Worksheets("Terminplan").Cells(4, colIndex)
If Cells(4, colIndex).Value = Cells(4, colIndex + 1).Value Then
Worksheets("Terminplan").Activate
Range(Cells(4, colIndex), Cells(4, colIndex + 1)).Select
Selection.Merge
End If
End With
Next colIndex
Klappt so aber noch nicht. Kann mir jemand helfen? Danke.
Gruß, Kerstin.
Anzeige

21
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro: Zellen verbinden
15.12.2005 14:04:39
Klaus-Dieter
Hallo Kerstin,
Zellen verbinden ist eine üble Sache. Sollte man möglichst vermeiden. Was ist denn dein Ziel? Eventuell gibt es bessere Lösungsansätze.
Viele Grüße Klaus-Dieter

Online-Excel
Anzeige
AW: Makro: Zellen verbinden
15.12.2005 14:19:46
Kerstin
Hallo,
das ganze bezieht sich auf Spalten in einem Terminplan. Für jeden Tag ist eine Spalte eingerichtet (Breite 1), oben sollen jeweils die Kalenderwoche und der Monat angegeben werden. Diese Angaben stehen jetzt in jeder Zelle, aber die Kalenderwoche 5 muss natürlich nur einmal genannt werden, d.h. die Zellen sollen zusammengefasst werden, damit man auch überhaupt einen Eintrag in der Zelle erkennt (bei Spaltenbreite 1 ist das sonst nicht möglich).
Das Makro verbindet auch die Zellen, allerdings immer nur 2 Zellen. Es fehlt die Bedingung, dass er solange kontrolliert, bis die Bedingung "=" nicht mehr erfüllt ist und erst dann die Zellen markiert und verbindet. Wahrscheinlich irgendeine Verschachtelung.
Gruß, Kerstin.
Anzeige
AW: Makro: Zellen verbinden
15.12.2005 14:18:24
Matthias
Hallo Kerstin,
Klaus-Dieter hat zwar recht, aber wenn damit nicht weiter in VBA gerechnet werden soll:

Sub Zusammenfassen()
Dim sp As Integer, sp0 As Integer, ls As Integer
Dim wert
sp = 7
sp0 = sp
Application.DisplayAlerts = False
With Worksheets("Terminplan")
ls = .Cells(4, .Columns.Count).End(xlToLeft).Column
Do
wert = .Cells(4, sp)
Do
sp0 = sp0 + 1
Loop Until .Cells(4, sp0) <> wert
With Range(.Cells(4, sp), .Cells(4, sp0 - 1))
.Merge
.HorizontalAlignment = xlCenter
End With
sp = sp0
Loop Until sp > ls
End With
Application.DisplayAlerts = True
End Sub

Gruß Matthias
Anzeige
AW: Makro: Zellen verbinden
15.12.2005 15:05:27
Kerstin
Hallo Matthias,
klappt schon ganz gut mit deinem Vorschlag, allerdings fehlt irgendwie noch eine Schleife, dass wirklich die ganzen Spalten beim ersten Mal durchlaufen werden. Im Moment fasst er alle "5" zusammen, dann ist Schluss. Beim nächsten Versuch, die "6" usw.
Da ich in VBA noch nicht ganz so fit bin, verstehe ich leider nicht genau jeden Schritt, so dass ich da nicht ganz weiterkomme. Bin mir nicht sicher, wo ich etwas einfügen müsste. Kannst du dieses Problem vielleicht auch lösen? Wäre super. Vielen Dank schon mal.
Kerstin.
Anzeige
AW: Makro: Zellen verbinden
15.12.2005 15:26:07
Kerstin
Hallo,
sorry, habe meine erste Nachricht plötzlich nicht mehr gesehen, deshalb die zweite ...
Funktioniert aber leider wirklich nicht. Habe vor das Makro noch
Worksheets("Terminplan").Activate
geschrieben, da der Makro-Button auf einem anderen Blatt ist. Muss ich das vielleicht noch öfter einfügen?
Das Makro ist in ein größeres Makro/Modul eingebettet. Aber auch alleine ändert sich nichts.
Hast Du noch eine Idee?
Gruß, Kerstin.
Anzeige
AW: Makro: Zellen verbinden
15.12.2005 15:41:25
Matthias
Haallo Kerstin,
klappt denn meine Beispieldatei auf deinem Rechner?
Lade doch mal eine Mustermappe hoch.
Gruß Matthias
AW: Makro: Zellen verbinden
15.12.2005 15:44:50
Kerstin
Hallo Matthias,
die Beispieldatei läuft. Genau so soll es funktionieren.
Gruß Kerstin.
AW: Makro: Zellen verbinden
15.12.2005 15:49:09
Matthias
Hallo Kerstin,
und in deiner Mappe sind nicht vielleicht leere Zellen dazwischen (Stichwort File-Upload!)?
Gruß Matthias
Anzeige
AW: Makro: Zellen verbinden
15.12.2005 16:06:14
Kerstin
Hallo,
dazwischen nicht, aber am Ende kommen leere Zellen (mit Formel, ohne Inhalt). Aber würde er dann nicht einfach alle leeren Zellen verbinden? Oder kann man ihm sagen nur bis zur letzten "gefüllten" Zelle? Position dieser Zelle variiert aber.
Stichwort File-Upload sagt mir nichts, wie gesagt, Excel-Kenntnisse gut-sehr gut, VBA noch nicht viel.
Kerstin.
Anzeige
AW: Makro: Zellen verbinden
15.12.2005 16:10:09
Matthias
Hallo Kerstin,
baue eine Mustermappe mit den wichtigsten Inhalten nach, speichere sie z.B. auf D:\text.xls auf klicke hier unten auf der Seite auf Hier geht es zum File-Upload.
Folge den Anweisungen, bis du den Link auf die Datei in einem Textfeld siehst. Kopiere den Link, klicke im Browser 2x auf Zurück, bis dein Beitragsentwurf wieder sichtbar ist und kopiere den Link in deine Antwort.
Gruß Matthias
Anzeige
AW: Makro: Zellen verbinden
15.12.2005 16:45:24
Matthias
Hallo Kerstin,
äh... hilf mir mal, wo muss ich was eintragen, damit in Zeile 4 auf Werte stehen?
Gruß Matthias
AW: Makro: Zellen verbinden
15.12.2005 16:55:50
Kerstin
Hallo,
da müssten eigentlich Werte drinstehen, aber erst wirklich sichtbar, wenn die Spaltenbreite z.B. auf 10 steht. Genauso Zeile 3. Die Formeln dafür stehen auch in Spalte F, können von da auch die Zeile runter kopiert werden. Wird sonst in meinem Makro auch anfangs neu gesetzt, um Urzustand herzustellen bei neuer Terminplanerstellung.
Kerstin
Anzeige
AW: Makro: Zellen verbinden
15.12.2005 17:02:45
Matthias
Hallo Katrin,
der Fehler lag hier:
ls = .Cells(4, .Columns.Count).End(xlToLeft).Column
ls wird hier zu niedrig, wg. der Formeln in den Zellen.

Sub Zusammenfassen()
Dim sp As Integer, sp0 As Integer, ls As Integer
Dim wert
sp = 7
sp0 = sp
Application.DisplayAlerts = False
With Worksheets("Terminplan")
ls = 256 'bis zum Schluss
Do
wert = .Cells(4, sp)
Do
sp0 = sp0 + 1
Loop Until .Cells(4, sp0) <> wert
With Range(.Cells(4, sp), .Cells(4, sp0 - 1))
.Merge
.HorizontalAlignment = xlCenter
End With
sp = sp0
Loop Until sp < ls
End With
Application.DisplayAlerts = True
End Sub

Gruß Matthias
Anzeige
AW: Makro: Zellen verbinden
15.12.2005 17:39:33
Kerstin
Hallo,
in der Musterdatei funktioniert es, in der Originaldatei noch nicht. Ich suche den Fehler noch ...
Trotzdem schon mal danke.
Kerstin.
AW: Makro: Zellen verbinden
16.12.2005 08:23:07
Kerstin
Guten Morgen Matthias,
irgendwie funktioniert es immer noch nicht und ich finde leider den Fehler nicht. Inzwischen funktioniert auch das Muster nicht mehr.
Könnte ich dir vielleicht die Originaldatei per email schicken das du da einen Blick drauf werfen könntest? Wäre super. Wie lautet deine mail-Adresse?
Kerstin.
Anzeige
AW: Makro: Zellen verbinden
16.12.2005 13:51:38
Matthias
Hallo Kerstin,
das Datei wird durch "zippen" deutlich kleiner, dann kannst du sie auch hier hochladen.
Gruß Matthias
AW: Makro: Zellen verbinden
16.12.2005 14:02:26
Kerstin
Hallo,
auch die gezippte Datei ist zu groß (382 KB), Upload funktioniert nicht. Ich würde ungern etwas rauslöschen, da ich bestimmt das Glück habe, genau die entscheidenen Passagen zu löschen. Wäre dumm.
Kerstin.
Anzeige
AW: Makro: Zellen verbinden
16.12.2005 14:31:03
Matthias
Hallo Kerstin,
matthias.goessner[at]gmx.de
Gruß Matthias
AW: Makro: Zellen verbinden
15.12.2005 15:17:15
Kerstin
Hallo Matthias,
dein Vorschlag klappt schon sehr gut. Allerdings fehlt irgendwie noch eine Schleife, um alle Zellen gleich beim ersten Durchlauf zu überprüfen und ggf. zusammen zu fassen. Im Moment werden nur die "5" zusammengefasst, erst beim nächsten Versuch die "6" usw.
Hast Du noch eine Idee, wie man nur einen Durchlauf benötigt? Meine VBA-Kenntnisse reichen da leider nicht ganz aus.
Wäre super. Vielen Dank schon mal.
Gruß, Kerstin.
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Zellen verbinden mit Excel VBA


Schritt-für-Schritt-Anleitung

Um Zellen in Excel mithilfe von VBA zu verbinden, kannst du das folgende Makro verwenden. Es überprüft eine Zeile und verbindet Zellen, wenn die Werte gleich sind.

Sub Zusammenfassen()
    Dim sp As Integer, sp0 As Integer, ls As Integer
    Dim wert
    sp = 7 ' Startspalte
    sp0 = sp
    Application.DisplayAlerts = False
    With Worksheets("Terminplan")
        ls = .Cells(4, .Columns.Count).End(xlToLeft).Column ' Letzte Spalte ermitteln
        Do
            wert = .Cells(4, sp)
            Do
                sp0 = sp0 + 1
            Loop Until .Cells(4, sp0) <> wert
            With Range(.Cells(4, sp), .Cells(4, sp0 - 1))
                .Merge
                .HorizontalAlignment = xlCenter
            End With
            sp = sp0
        Loop Until sp > ls
    End With
    Application.DisplayAlerts = True
End Sub
  1. Öffne den VBA-Editor in Excel (ALT + F11).
  2. Erstelle ein neues Modul (Einfügen > Modul).
  3. Kopiere den obigen Code und füge ihn in das Modul ein.
  4. Schließe den VBA-Editor und führe das Makro aus.

Häufige Fehler und Lösungen

  • Fehler: Excel Zellen verbinden nicht möglich

    • Stelle sicher, dass keine leeren Zellen zwischen den zu verbindenden Zellen vorhanden sind. Das Makro funktioniert nicht, wenn leere Zellen in der Reihe vorhanden sind.
  • Fehler: Das Makro verbindet immer nur zwei Zellen

    • Überprüfe, ob die Schleifenbedingungen korrekt gesetzt sind. Stelle sicher, dass die innere Schleife bis zur letzten Zelle durchläuft, bevor die Zellen verbunden werden.

Alternative Methoden

Wenn du die Zellen nicht unbedingt mit VBA verbinden möchtest, gibt es auch manuelle Methoden:

  • Manuelles Verbinden: Markiere die Zellen und klicke auf "Zellen verbinden" in der Registerkarte "Start".
  • Verwenden von Formeln: Du kannst die Werte auch in einer neuen Zelle zusammenführen, indem du die Funktion =TEXTVERKETTEN() oder =VERKETTEN() verwendest.

Praktische Beispiele

  1. Einfaches Makro zum Verbinden von Zellen:

    • Dieses einfache Makro verbindet nur Zellen in einer bestimmten Zeile, wenn die Werte gleich sind.
  2. Komplexes Beispiel mit Überprüfung:

    • Ein erweitertes Makro könnte leere Zellen ignorieren und trotzdem die Füllung bis zur letzten Zelle aufrechterhalten.
Sub VerbindenMitPruefung()
    Dim sp As Integer, ls As Integer
    sp = 7 ' Startspalte
    Application.DisplayAlerts = False
    With Worksheets("Terminplan")
        ls = .Cells(4, .Columns.Count).End(xlToLeft).Column
        For i = sp To ls
            If .Cells(4, i) <> "" Then
                ' Füge hier die Verbindungscode-Logik hinzu
            End If
        Next i
    End With
    Application.DisplayAlerts = True
End Sub

Tipps für Profis

  • Verwende Application.ScreenUpdating = False, um das Flackern des Bildschirms während der Ausführung des Makros zu vermeiden.
  • Teste dein Makro immer mit einer Kopie deiner Excel-Datei, um Datenverlust zu vermeiden.
  • Berücksichtige bei der Entwicklung deines VBA-Makros die Möglichkeit, dass die Struktur deiner Excel-Tabelle sich ändern kann. Ein flexibles Design ist von Vorteil.

FAQ: Häufige Fragen

1. Warum kann ich in meiner Excel-Tabelle Zellen nicht verbinden? Es könnte sein, dass leere Zellen zwischen den zu verbindenden Zellen vorhanden sind. Stelle sicher, dass alle Zellen in der Reihe Werte enthalten.

2. Wie kann ich Zellen in einer HTML-Tabelle verbinden? HTML-Tabellen unterstützen das Verbinden von Zellen nicht direkt. Du kannst jedoch CSS verwenden, um die Darstellung zu ändern oder JavaScript verwenden, um die Zellen dynamisch zu erweitern.

3. Welche Excel-Version benötige ich für VBA? VBA ist in den meisten modernen Versionen von Microsoft Excel verfügbar, einschließlich Excel 2010, 2013, 2016, 2019 und Microsoft 365.

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