VBA Zellen verbinden mit schleife?
Hallo,
ich möchte mit Visual Basic in der Spalte A jeweils die 4 aufeinander folgenden Zellen miteinander verbinden. Also A4 - A7, A8 - A11 usw. In der Zeile mit range spuckt er einen Fehler und ich komme nicht drauf warum. Wäre super, wenn jemand mir helfen könnte 😁
Quellcode:
Option Explicit
Sub Merge()
Dim Counter1 As Integer
Dim Counter2 As Integer
Counter1 = 3
Counter2 = 7
Worksheets(„Tabelle1“).Activate
Do While Counter1 <= 1000
Range(Cells(Counter1,1), Cells(Counter2,1)).Select = True
Selection.Merge
Counter1 = Counter1 + 4
Counter2 = Counter2 + 4
Loop
End Sub
2 Antworten
Select = True gibts nicht.
Select und merge musst auch nicht in zwei Zeilen packen. Läuft somit schneller in langen codes.
Und Counter1 muss 4 sein, nicht 3 :-)
Mach mal so: (Selbst getestet)
Option Explicit
Sub Merge()
Dim Counter1 As Integer
Dim Counter2 As Integer
Counter1 = 4
Counter2 = 7
Worksheets(„Tabelle1“).Activate
Do While Counter1 <= 1000
Range(Cells(Counter1, 1), Cells(Counter2, 1)).Merge
Counter1 = Counter1 + 4
Counter2 = Counter2 + 4
Loop
End Sub
Feedback wäre toll :-P
auch eine gute Lösung, DH ! (und das unerlaubte select=True hab ich glatt übersehen!
erst mal: ein etwas umständlich formuliertes, aber eben deshalb recht gut nachvollziehbares µ ! :)
es heißt Do...Loop und (Do...until+Bedingung) aber While+Bedingung...Wend, ich weiß nicht, ob xl deine Formulierung inzwischen akzeptiert und richtig umsetzt.
- Range(Cells(Counter1,1), Cells(Counter2,1)).Select = True
- Selection.Merge
- sollte kürzer gehen: Range(Cells(Counter1,1), Cells(Counter2,1)).Merge
Hast du in einer der zu verbindenden Zellen darunter schon was drinstehen?
Bin nicht sicher: möglicherweise zählt xl schon verbundene Zellen nicht richtig? Tritt der Fehler von anfang an auf oder durchläuft VBA die erste Schleife erfolgreich?
Beim Zeilen löschen zB muss man von unten her anfangen, was bei dir dann so aussähe:
- Sub Merge()
- Dim Counter1 As Integer, Counter2 As Integer
- While Counter1 >2
- Counter1=998: Counter2=1002
- Range(Cells(Counter1,1), Cells(Counter2,1)).Merge
- Counter1 = Counter1 - 4: Counter2 = Counter2 - 4
- Wend
- End sub
- 'kannst du hier kopieren, die Punkte verschwinden im VBA-Editor
rechne die Counter-Nrn nochmal nach, Mein Gehirn hat bei sowas oft eine Windung zuwenig ;-( , aber probiers einfach mal auf einer Blatt-Kopie(!).
Da ich selbst etwas aus der Übung bin, gib bitte Rückmeldung. Und gib zum "FEHLER" immer an, was noch dabei steht, also zB ob Laufzeitfehler oder was sonst.
Im übrigen würde ich verbundene Zellen vermeiden, wo immer es geht: es zählt die Adresse der oberen linken Zelle, die anderen werden als leer angesehen, was sehr häufig zu Fehlern und Fehlinterpretationen führt, auch bei Formeln.
Vllt auch cool um Variabler zu bleiben: