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

Forumthread: Zellen verbinden mit VBA

Zellen verbinden mit VBA
25.10.2005 07:35:40
Thomas
Hallo
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
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellen verbinden mit VBA
25.10.2005 08:50:42
Harald
Moin Thomas,
kopiere den Code in ein Blattmodul, schreib den Monatsersten nach B5 (z.B. 01.10.05)
und formatiere die Zeile als Datum.
Makro starten. Villeicht hilfts dir ja....wenngleich ich überhaupt kein Freund von verbundenen Zellen bin ;-))

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

Gruß
Harald
Anzeige
AW: Zellen verbinden mit VBA
25.10.2005 09:08:09
Thomas
Hi
Na ich möchte in die Mitte eines jeden Monats den Monatsnamen über dem Datum des ersten und letzten Tag des Monats schreiben, aber da die Zellen sehr schmall sind sieht man den Text nicht. Beim Datum soll nähmlich nur der Tag angezeigt werden und der Monat als Text obendrüber. Da sich der Anfang des Monats in den Zellen verschiebt, muß ich mir was einfallen lassen wie ich da realisiere. Wenn es eine elegantere Lösung gibt, dann wäre das natürlich besser.
Gruß Thomas
Anzeige
AW: Zellen verbinden mit VBA
25.10.2005 09:39:27
Harald
Hi Thomas,
hmmm.
Hier noch ne Version für Datum (egal wo) in Zeile 5. Bei Makrostart sollte die aktive Zelle in Zeile 4 über dem Monatsersten sein. Du trägst nur !!! den Monatsersten ein, setzt die aktive Zelle über diesen Monatsersten und startest das Makro.

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

Gruß
Harald
Anzeige
Korrektur
25.10.2005 11:09:34
Harald
Hi nochmal,
der vorhergehende Code war fehlerhaft. Sorry !
Hab ein bisserl ausgebessert.
Zelle über dem Monatsersten (01.10.05) markieren. Makro starten.
Es zieht den Monat bis zum Monatsende auf, schreibt in die Zeile darüber den Monat, reduziert die Spaltenbreite und formatiert die Tagesangaben.

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

Gruß
Harald
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 VBA in Excel


Schritt-für-Schritt-Anleitung

Um Zellen in Excel mit VBA zu verbinden, kannst Du folgende Schritte durchführen:

  1. Öffne Excel und erstelle ein neues Arbeitsblatt oder öffne ein bestehendes.

  2. Gehe zu den Entwicklertools. Falls Du diese nicht siehst, aktiviere sie über Datei > Optionen > Menüband anpassen.

  3. Klicke auf "Visual Basic", um den VBA-Editor zu öffnen.

  4. 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
  5. Setze die aktive Zelle auf die Zelle direkt über dem ersten Tag des Monats (z.B. 01.10.05).

  6. Starte das Makro über F5 oder im Menü.

Mit diesem Code werden die Zellen über dem Monatsersten verbunden und der Monatsname angezeigt.


Häufige Fehler und Lösungen

  • Falsche aktive Zelle: Stelle sicher, dass die aktive Zelle in der Zeile direkt über dem ersten Tag des Monats liegt. Andernfalls gibt es eine Fehlermeldung.
  • Makro läuft nicht: Überprüfe, ob Makros in den Excel-Einstellungen aktiviert sind.
  • Zellen werden nicht verbunden: Stelle sicher, dass die Zellen nicht bereits verbunden sind. Excel erlaubt keine Verbindung von bereits verbundenen Zellen.

Alternative Methoden

Wenn Du keine VBA-Lösungen verwenden möchtest, kannst Du alternativ die Funktion „Zellen verbinden“ im Excel-Menü nutzen:

  1. Wähle die Zellen aus, die Du verbinden möchtest.
  2. Klicke auf Start > Ausrichtung > Zellen verbinden.
  3. Beachte, dass dies die Inhalte der nicht aktiven Zelle entfernt.

Diese Methode ist jedoch weniger dynamisch als die Verwendung von VBA.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie Du mit VBA Zellen verbinden kannst:

  • Monat und Jahr: Der oben genannte Code verbindet Zellen und zeigt den Monat und das Jahr an (z.B. „Oktober 2025“).
  • Tag nur anzeigen: Du kannst den Code so anpassen, dass nur der Tag in den verbundenen Zellen angezeigt wird, während der Monat darüber geschrieben wird.

Für die vollständige Funktionalität benötigst Du Excel 2010 oder höher.


Tipps für Profis

  • Code anpassen: Du kannst den VBA-Code leicht anpassen, um verschiedene Zellbereiche oder Formate zu verwenden.
  • Debugging: Nutze den Debugger im VBA-Editor, um Probleme im Code leichter zu identifizieren.
  • Makros speichern: Speichere Deine Excel-Datei im XLSM-Format, um die Makros zu behalten.

FAQ: Häufige Fragen

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.

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