ich habe eine Zeile mit dem Datum vom 1.1.2005 bis 31.12.2005. Jetzt möchte ich mit VBA in der darüberliegenden Zeile immer die Zellen vom ersten bis zum letzten Tag eines jeden Monats verbinden. Wie kann ich das machen?
Gruß Thomas
Sub Makro2()
Range("B4").Select
Selection.FormulaR1C1 = "=DAY(DATE(YEAR(R[1]C),MONTH(R[1]C)+1,1)-1)"
i = ActiveCell.Value + 1
For x = 3 To i
Cells(5, x) = Cells(5, x - 1) + 1
Next x
With Range(Cells(4, 2), Cells(4, i)) 'Zeile 9 Spalte B bis Monatsletzter
.MergeCells = True 'verbinden
.Value = Format(Range("b5"), "MMMM") 'Monat
.HorizontalAlignment = xlCenter 'Schrift zentrieren
End With
End Sub
Sub Makro2()
If ActiveCell.Row <> 4 Then
MsgBox "Falsche Zeile aktiv", , "Abbruch"
Exit Sub
End If
acol = ActiveCell.Column
bcol = ActiveCell.Column
ActiveCell.FormulaR1C1 = "=DAY(DATE(YEAR(R[1]C),MONTH(R[1]C)+1,1)-1)"
i = ActiveCell.Value + 1
For x = acol To acol + i
Cells(5, x) = Cells(5, x - 1) + 1
Next x
With Range(Cells(4, bcol), Cells(4, bcol + i))
.MergeCells = True
.Value = Format(Cells(5, bcol), "MMMM")
.HorizontalAlignment = xlCenter
End With
End Sub
Sub Monateverbinden()
acol = ActiveCell.Column + 1
arow = ActiveCell.Row
ActiveCell.FormulaR1C1 = "=DAY(DATE(YEAR(R[1]C),MONTH(R[1]C)+1,1)-1)"
i = ActiveCell.Value + 1
For x = acol To acol + i - 3
Cells(arow + 1, x) = Cells(arow + 1, x - 1) + 1
Next x
With Range(Cells(arow, acol - 1), Cells(arow, acol + i - 3))
.MergeCells = True
.Value = Format(Cells(arow + 1, acol), "MMMM YY")
.HorizontalAlignment = xlCenter
End With
With Range(Cells(arow + 1, acol - 1), Cells(arow + 1, acol + i - 3))
.NumberFormat = "dd/"
.ColumnWidth = 4
End With
End Sub
Um Zellen in Excel mit VBA zu verbinden, kannst Du folgende Schritte durchführen:
Öffne Excel und erstelle ein neues Arbeitsblatt oder öffne ein bestehendes.
Gehe zu den Entwicklertools. Falls Du diese nicht siehst, aktiviere sie über Datei > Optionen > Menüband anpassen
.
Klicke auf "Visual Basic", um den VBA-Editor zu öffnen.
Füge in ein Modul den folgenden Code ein:
Sub Monateverbinden()
acol = ActiveCell.Column + 1
arow = ActiveCell.Row
ActiveCell.FormulaR1C1 = "=DAY(DATE(YEAR(R[1]C),MONTH(R[1]C)+1,1)-1)"
i = ActiveCell.Value + 1
For x = acol To acol + i - 3
Cells(arow + 1, x) = Cells(arow + 1, x - 1) + 1
Next x
With Range(Cells(arow, acol - 1), Cells(arow, acol + i - 3))
.MergeCells = True
.Value = Format(Cells(arow + 1, acol), "MMMM YY")
.HorizontalAlignment = xlCenter
End With
With Range(Cells(arow + 1, acol - 1), Cells(arow + 1, acol + i - 3))
.NumberFormat = "dd/"
.ColumnWidth = 4
End With
End Sub
Setze die aktive Zelle auf die Zelle direkt über dem ersten Tag des Monats (z.B. 01.10.05
).
Starte das Makro über F5
oder im Menü.
Mit diesem Code werden die Zellen über dem Monatsersten verbunden und der Monatsname angezeigt.
Wenn Du keine VBA-Lösungen verwenden möchtest, kannst Du alternativ die Funktion „Zellen verbinden“ im Excel-Menü nutzen:
Start > Ausrichtung > Zellen verbinden
.Diese Methode ist jedoch weniger dynamisch als die Verwendung von VBA.
Hier sind einige praktische Beispiele, wie Du mit VBA Zellen verbinden kannst:
Für die vollständige Funktionalität benötigst Du Excel 2010 oder höher.
1. Kann ich auch mehrere Monate gleichzeitig verbinden?
Ja, Du kannst den VBA-Code anpassen, um mehrere Monate in einer einzigen Ausführung zu verbinden.
2. Warum sollte ich VBA statt der GUI verwenden?
Mit VBA kannst Du komplexe Automatisierungen und Anpassungen vornehmen, die mit der grafischen Benutzeroberfläche nicht möglich sind.
3. Welche Excel-Version benötige ich für VBA?
VBA ist in Excel 2010 und höheren Versionen verfügbar. Achte darauf, dass Du die Entwicklertools aktiviert hast.
4. Was passiert mit den verbundenen Zellen, wenn ich Daten ändere?
Wenn Du Daten in verbundenen Zellen änderst, wird nur der Inhalt der aktiven Zelle angezeigt. Die anderen Zellen bleiben leer.
5. Kann ich den Code auch für andere Zwecke verwenden?
Ja, der VBA-Code kann leicht angepasst werden, um andere Zellverbindungen oder Formate zu erstellen.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen