Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1848to1852
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zellen automatisch verbinden?

Zellen automatisch verbinden?
07.10.2021 15:11:38
Andreas
Hi zusammen,
würde gerne Zellen innerhalb einzelner Zeilen automatisch verbinden.
Hier meine Datei: https://www.herber.de/bbs/user/148493.xlsx
Wie viele Zellen am Stück verbunden werden sollen, steht in Spalte B.
Denke dafür brauche ich eine VBA?
Hoffe mir kann jemand helfen : )
Vielen Dank vorab
Gruß Andreas

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellen automatisch verbinden?
07.10.2021 15:25:00
Daniel
Hi
Gehts nur darum, an der entsprechenden Linie einen Strich zu ziehen?
Das würde ich mit bedingter Formatierung machen.
Markiere die Zellen E2:DT8 und lege die Regelformel =E$1=$B2
Lege als Format den rechten Rahmen aus.
Fertig
Gruß Daniel
AW: Zellen automatisch verbinden?
07.10.2021 15:26:53
Andreas
Hi Daniel,
Danke für deinen Beitrag, aber die Zellen müssen definitiv verbunden werden.
https://www.herber.de/bbs/user/148493.xlsx
Gruß Andreas
AW: Zellen automatisch verbinden?
07.10.2021 15:39:30
UweD
Hallo
versuch es mal so...
- Rechtsclick auf den Tabellenblattreiter
- Code anzeigen
- Code rechts reinkopieren

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim RNG As Range
Dim St As Integer, En As Integer
Dim Anz As Variant, i As Integer
Set RNG = Range("D2:D8")
St = 5 'Start ab Spalte E
En = 124 'Ende bei Spalte DT
If Not Intersect(RNG, Target) Is Nothing Then
'Reset
Range(Cells(Target.Row, St), Cells(Target.Row, En)).UnMerge
Anz = Cells(Target.Row, 2)
If IsNumeric(Anz) Then
For i = St To En Step Anz
If i + Anz > En Then Anz = En - i + 1
Cells(Target.Row, i).Resize(1, Anz).Merge
Next
Else
MsgBox "Fehler in Eingabe"
End If
End If
End Sub
Bei Änderungen in dem Bereich D2:D8 läuft das Makro automatisch ab
LG UweD
Anzeige
AW: Zellen automatisch verbinden?
07.10.2021 17:12:40
Andreas
Hi Uwe,
vielen Dank, genau so sollte es sein : )
War ja aber nur eine Testdatei, weil ich euch meinen Sauhaufen nicht um die Ohren werfen wollte =D
Aber da bekomme ich es nicht zum laufen :(
Kannst du mir sagen, was ich falsch mache?
Hier meine Originaldatei: https://www.herber.de/bbs/user/148495.xlsm
Die Spalte aus der es die 1-7 auslesen soll, ist Spalte AA, die Spalten auf die es sich auswirken soll sind AD-ET.
Deinen Code habe ich soweit angepasst, wie mir das logisch war, aber funktioniert leider nicht :(
Falls du mir sagen könntest was ich falsch mache, wäre ich dir sehr Dankbar :)
Gruß und einen schönen Abend
Andreas
Anzeige
AW: Zellen automatisch verbinden?
07.10.2021 18:54:28
Werner
Hallo,
und weshalb 1-7 in Spalte AA ?
Du schreibst: Wieviele Spalten verbunden werden sollen steht jeweils in der Spalte AA
Trägst du dort 7 ein, dann werden auch nur 7 Spalten verbunden. Der ganze Block umfasst aber 17 Spalten?

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim RNG As Range
Dim St As Long, En As Long
Dim Anz As Long, i As Long
Application.ScreenUpdating = False
Set RNG = Range("AA4:AA78")
St = 30 'Start ab Spalte E
En = 132 'Ende bei Spalte DT
If Not Intersect(RNG, Target) Is Nothing Then
'Reset
Anz = Cells(Target.Row, "AA")
If IsNumeric(Anz) Then
If Anz > 1 And Anz 
Gruß Werner
Anzeige
AW: Zellen automatisch verbinden?
08.10.2021 08:30:55
Andreas
Hi Werner,
vielen Dank für deine Hilfe =D
Mein Fehler. Habe zuerst eine Testdatei gesendet gehabt, dort waren Infos drin, die ich in meiner zweiten (richtigen Datei, die die du kennst) dann nicht mehr erwähnt habe.
Und zwar, sagen die Zahlen 1-7 aus, wie viele Zellen hintereinander verbunden werden sollen.
Wird also in AA z.B. eine 1 eingetragen, sollen alle 120 Zellen (AD-ET) verbunden werden.
1 120 Zellen
2 60 Zellen
3 40 Zellen
4 30 Zellen
5 24 Zellen
6 20 Zellen
7 17 Zellen
Was mir auch erst danach klar geworden ist, dass von vorne rein immer schon 17 Zellen verbunden sind.
Das soll auch der Standartwert sein. Also das immer 17 verbunden sind und sich nur mehr verbinden, wenn eine 1-6 eingetragen wird.
https://www.herber.de/bbs/user/148495.xlsm
Vielen Dank vorab für deine Mühe und wäre schön wenn du mir den Code nochmal anpassen kannst :) Bin leider sehr unerfahren mit VBA.
Wünsche einen schönen Freitag
Gruß Andreas
Anzeige
AW: Zellen automatisch verbinden?
08.10.2021 08:20:20
UweD
Hallo
versuch es so.

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim RNG As Range
Dim St As Integer, En As Integer, SpL As Integer
Dim Anz As Variant, i As Integer
'Bereich, wo dei Eingabe überwacht wird / gleich der Anzahlspalte
Set RNG = Range("AA4:AA70")
St = 30 'Start ab Spalte AD
En = 149 'Ende bei Spalte ES
SpL = 27 'Spalte mit Anzahl
If Not Intersect(RNG, Target) Is Nothing Then
With Application
.ScreenUpdating = False 'verhindert das Bildschirmflackern
.DisplayAlerts = False ' Schaltet die Warnmeldung aus
End With
'Reset
Range(Cells(Target.Row, St), Cells(Target.Row, En)).UnMerge
Anz = Cells(Target.Row, SpL)
If IsNumeric(Anz) Then
For i = St To En Step Anz
If i + Anz > En Then Anz = En - i + 1
Cells(Target.Row, i).Resize(1, Anz).Merge
Next
Else
MsgBox "Fehler in Eingabe"
End If
With Application
.ScreenUpdating = True
.DisplayAlerts = True
End With
End If
End Sub
Was mir aufgefallen ist, der Letzte Block umfasst 18 Spalten, die Anderen 17
LG UweD
Anzeige
AW: Zellen automatisch verbinden?
08.10.2021 08:40:30
Andreas
Guten Morgen Uwe,
vielen Dank für deine Unterstützung : )
Was mir auch erst gestern Abend klar geworden ist, dass von vorne rein immer schon 17 Zellen verbunden sein müssen.
Das soll auch der Standartwert sein. Also das immer 17 verbunden sind und sich nur mehr verbinden, wenn eine 1-6 eingetragen wird.
Daher kommen im letzten Block auch die 18. Hab einen gemeinsamen Teiler für die Zahlen 1-7 gebraucht, der keine Komma-Zahlen ergibt, gibt ja leider keine halben Zellen =D Bin also auf 120 gekommen:
1 120 Zellen (1*120 =120 Zellen)
2 60 Zellen (2*60 = 120 Zellen)
3 40 Zellen (3*40 = 120 Zellen)
4 30 Zellen (4*30 = 120 Zellen)
5 24 Zellen (5*24 = 120 Zellen)
6 20 Zellen (6*20 = 120 Zellen)
7 17 Zellen (7*17 = 119 Zellen) Geht leider nicht auf, deshalb kommt da noch eine Zelle dazu. Aber das muss in der VBA nicht berücksichtigt werden.
Wenn beim letzten Block auch nur 17 verbunden werden, ist das völlig i.O =D
https://www.herber.de/bbs/user/148495.xlsm
Falls du mir helfen kannst wäre super =)
Schönen Freitag und Gruß
Gruß Andreas
Anzeige
AW: Zellen automatisch verbinden?
08.10.2021 09:45:29
Werner
Hallo,
so?

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim RNG As Range, St As Long, En As Long, Anz As Long
Dim i As Long, j As Long, z As Long
Set RNG = Range("AA4:AA78")
St = 30
En = 132
If Not Intersect(RNG, Target) Is Nothing Then
If IsNumeric(Anz) Then
Anz = Cells(Target.Row, "AA")
If Anz > 0 And Anz 
Gruß Werner
AW: Zellen automatisch verbinden?
08.10.2021 13:48:34
Andreas
Hi Werner,
eher so: https://www.herber.de/bbs/user/148504.xlsm
Den Code hat mir Uwe gebaut.
Jetzt ist nur leider das nächste Problem aufgetreten =/
Vielleicht weißt du wie das gehen könnte?
In AA8 und AA10 muss eine 2 eintragen werden, da es dort z.B. jeweils 2 Blöcke pro Zeile sind.
Was ich nicht bedacht habe, ist das immer in der in der ersten Zelle der 17-Zellenblöcke eine Formel steht, die vergibt dann die Zahl von dem Block.
In AA8 habe ich also eine 2 eingetragen. Es wird AD-ET also in 2 Blöcke aufgeteilt. Der zweite Block bekommt aber keine Nummer mehr, weil die Formel für diesen Block schon in Zelle AU8 stand (Die erste Zelle von Block 2) Kann man das irgendwie schieben lassen?
In AA10 habe ich mal noch keine 2 eingetragen, damit du weißt was ich meine.
Wenn ich das hinbekomme ist es perfekt, vielleicht hast du ja eine Idee?
Gruß und schönen Nachmittag
Andreas
Anzeige
AW: Zellen automatisch verbinden?
08.10.2021 09:54:46
UweD
Noch ein Versuch

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim RNG As Range
Dim St As Integer, En As Integer
Dim Anz As Variant, i As Integer
Dim Arr, MMax As Integer
Set RNG = Range("AA4:AA70") 'Bereich, wo die Eingabe überwacht wird
St = 30 'Start ab Spalte AD
En = 149 'Ende bei Spalte ES
MMax = 7 'maximaler Eingabewert
Arr = Array(0, 120, 60, 40, 30, 24, 20, 17) 'Datensatz Nr beginnen mit 0
If Not Intersect(RNG, Target) Is Nothing Then
'Prüfen auf Ganzzahl und  MMax, Target  Int(Target)
MsgBox "Falsche Eingabe"
Exit Sub
End Select
With Application
.ScreenUpdating = False 'verhindert das Bildschirmflackern
.DisplayAlerts = False ' Schaltet die Warnmeldung aus
End With
'Reset
Range(Cells(Target.Row, St), Cells(Target.Row, En)).UnMerge
Anz = Arr(Target)
For i = St To En Step Anz
If i + Anz > En Then Anz = En - i + 1
Cells(Target.Row, i).Resize(1, Anz).Merge
Next
With Application
.ScreenUpdating = True
.DisplayAlerts = True
End With
End If
End Sub
LG UweD
Anzeige
AW: Zellen automatisch verbinden?
08.10.2021 10:15:47
Andreas
Hi Uwe,
genau so hab ich mir das Vorgestellt, vielen Dank :D
Jetzt ist nur leider das nächste Problem aufgetreten =/
Vielleicht hat du dafür auch noch eine Lösung. https://www.herber.de/bbs/user/148504.xlsm
In AA8 und AA10 muss eine 2 eintragen werden, da es dort z.B. jeweils 2 Blöcke pro Zeile sind, das funktioniert ja auch super =D
Was ich nicht bedacht habe, ist das immer in der in der ersten Zelle der 17-Zellenblöcke eine Formel steht, die vergibt dann die Zahl von dem Block.
In AA8 habe ich also eine 2 eingetragen. Es wird AD-ET also in 2 Blöcke aufgeteilt. Der zweite Block bekommt aber keine Nummer mehr, weil die Formel für diesen Block schon in Zelle AU8 stand (Die erste Zelle von Block 2) Kann man das irgendwie schieben lassen?
In AA10 habe ich mal noch keine 2 eingetragen, damit du weißt was ich meine.
Falls du da noch eine Idee hast wäre ich dir sehr Dankbar. Wenn das nämlich noch klappt ist es perfekt =D
Gruß Andreas
Anzeige
AW: Zellen automatisch verbinden?
08.10.2021 13:39:51
UweD
Hallo
sorry, das ist mir jetzt zu hoch.
Wenn man in Excel Zellen verbindet, bleibt immer nur der Wert / Formel in der ersten Zelle erhalten. Alle Anderen werden gelöscht.
LG UweD
Ich lass die Frage mal offen
AW: Zellen automatisch verbinden?
08.10.2021 13:43:31
Andreas
Hi Uwe,
kein Problem, aber nochmal herzlichen Dank für deine Hilfe.
Das hat mich schon ein gutes Stück weiter gebracht : )
Wünsche dir ein schönes Wochenende.
Gruß Andreas
Ja, in Xl m.deiner StandardMethode, ...
08.10.2021 18:54:15
Luc:-?
…Uwe;
es gibt aber noch andere Möglichkeiten, die das simulieren, was in LOcalc standardmäßig erreichbar ist. Das wurde hier schon vor Jahren diskutiert und für Xl vorgestellt.
Gruß, Luc :-?
AW: Ja, in Xl m.deiner StandardMethode, ...
11.10.2021 08:13:49
Andreas
Guten Morgen Luc,
Danke für den Tipp.
Habe nach XI m excel gegoogelt. Kann aber nichts finden.
Kannst du mir erklären, was genau du damit meinst?
Das wäre super.
Vielen Dank vorab
Gruß Andreas
Xl~ bzw xl~ wird in VBA als Präfix für Namen ...
11.10.2021 11:54:44
Luc:-?
…von Excel-Konstanten verwendet, Andreas,
in Word wäre es Wd~/wd~ und analog bei anderen MSO-Programmen.
Gruß, Luc :-?
AW: Xl~ bzw xl~ wird in VBA als Präfix für Namen ...
11.10.2021 16:17:19
Andreas
Hey Luc,
Danke für deine Hilfe.
Habe viel gegoogelt, verstehe aber nicht wie genau mir das helfen kann.
Hast du mir vielleicht einen Link, wo ich genau das nachlesen könnte was du meinst?
Oder kannst du mir sagen, wie ich das als Lösungsansatz für mein Problem verwenden kann?
Stehe da leider gerade ziemlich auf dem Schlauch =/
Falls du mir helfen kannst/willst schonmal vielen Dank und einen schönen Feierabend.
Gruß Andreas
Ich nehme an, dass sich deine Anfrage ...
12.10.2021 03:49:45
Luc:-?
…nun auf meinen an Uwe gerichteten Hinweis bezieht, Andreas;
der bedeutet schlicht, dass die Xl-StandardMethode der ZellenVerbindung als reine Formatierungsoperation nicht vorsieht, dass eine VerbundZelle ggf verschiedene Formate ihrer FolgeEinzelZellen bewahrt und ebenso keine von Leer verschiedenen Werte in ihnen. Ebenso keine MatrixFmln, nicht einmal singulare (→ liefern nur einen ErgebnisWert — wie es in deiner Matrix-Spilling-Xl-Version damit aussieht, weiß ich nicht). Das ist sowohl manuell als auch per VBA-Methode ~.Merge der Fall. Entsprd lauten dann die FehlerMeldungen, falls anderes versucht wird.
Allerdings kann man in Xl und auch in VBA Formate übertragen (FormatPinsel!), was dazu führt, dass …
1. ein Change-Ereignis ausgelöst wird (sonst nicht!) und …
2. nur das Format einer vorformatierten (Verbund-)Zelle auf eine (bzw mehrere unverbundene) Zellen übertragen wird, wobei deren Wert- und FormelInhalte (auch MatrixFmln mit mehr als 1 ErgebnisWert) erhalten bleiben - und das ganz ohne Fehlermeldung. Letztere kommt erst, wenn man die VerbundZelle auf StandardWeise wieder auflösen will, ist dann aber bedeutungslos. Das fktioniert sowohl manuell als auch per VBA — nur nicht mit ~.Merge! Angezeigt wird aber stets nur der 1.Wert*.
* In LOcalc kann man dagegen auch bei normaler VerbundFormatierung entscheidem, ob nur der 1.Wert oder alle in ihren Zellen erhalten bleiben oder alle Werte in der 1.Zelle zusammengeführt wdn sollen. Beim Aufheben des Verbunds wdn auch alle OriginalFormate der EinzelZellen wiederhergestellt, in Xl aber nicht.
Leider habe ich trotz Ansicht deines Originals nicht ganz verstanden, worauf das hinausläuft und inwiefern hier VerbundZellen, die mehr als 1 Wert|Fml enthalten, erforderlich sind. Aber viell hilft dir ja mein Hinweis, dein Problem selbst zu lösen. Ansonsten gibt's im hiesigen Archiv auch 2 Beiträge (1er mit DemoCode für horizontale und 1er mit Programm für vertikale ZellVerbindung) mit BspCodes, deren LinkAdressen ich allerdings nicht gemerkt habe, weil zumindest der vertikale nicht von mir gepostet wurde und deshalb die ursprüngl vorhandene Erläuterung weitgehend fehlt. Falls an letzterem Beitrag ebenfalls Interesse deinerseits besteht (nach deiner BspMappe sieht es für mich aber nicht danach aus, dass das zur Anwendung kommen könnte), kann ich dir hier die WebAdresse des über WebArchives WayBackMachine erreichbaren OriginalBeitrags mitteilen, denn die Original-WebSite wurde längst gelöscht und das zugehörige Forum eingestellt.
Morhn, Luc :-?

191 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige