Leere Zelle ausblenden oder nächst untere anzeigen

Hallo zusammen,

Ich suche verzweifelt nach einer Formel (auch VBA) welche eine leere Zelle ausblendet, oder aber die darunterliegende Zelle anzeigt. Ich generiere aus Excel ein Brief, welcher wie folgt mit einer Formel berechnet wird:

Hans Muster
Mustergasse 1
3044 Musterhausen

Nun gibt es jedoch auch weitere Zeilen, zb bei einer Firma:

Hans Muster
Muster GMBH
Mustergassse 1
3044 Musterhausen

Im mom sieht dies folgendermassen aus:

Hans Muster

Mustergasse 1
3044 Musterhausen

Nun müsste die leere Zelle ausgeblendet oder eben die nächst untere „raufgezogen“ werden.

Jemand eine Idee? Ich danke für eure Hilfe!

Liebe Grüsse

bo

Ich würde den Serienbrief in Word erstellen, die Steuerungsdatei kann da ruhig aus Excel kommen. Mit VBA ginge das zwar in Excel, erscheint mir jedoch zu aufwendig.

Hallo bo
Florian hat schon recht, mit einem Serienbrief in Word geht das wohl einfacher.
Wenn Du Deinen Brief trotzdem im Excel erstellen willst, dann hätte ich einen Vorschlag mit einem VBA-Makro.

Sub ttm2()
Set xyz = Range("E3:E6")
anzz1 = xyz.Rows.Count   ' Anzahl Zellen
anzz = anzz1
cr = xyz.Column         ' Spalte des Adressbereiches
For i = 1 To anzz1
For Each zelle In xyz
    rz = zelle.Row
    anzz = anzz - 1
    If rz = anzz1 + 2 Then GoTo weiter1
    If IsEmpty(zelle) Then
        zelle.Value = Cells(rz + 1, cr)
        Cells(rz + 1, cr).ClearContents
    End If
Next zelle
weiter1:
Next i
End Sub

Anpassen musst Du in diesem Makro ganz oben den Zellbereich, in dem sich eine „normale“ Adresse befindet. Bei mir ist es Range(„E3:E6“).

Das Makro durchläuft diesen Bereich und füllt eine leere Zelle auf mit dem Inhalt unter dieser leeren Zelle.

Wichtig ist: die leeren Zellen müssen wirklich leer sein! Einen Leerschlag in einer leeren Zelle sieht man zwar nicht, aber die Zelle ist trotzdem nicht leer.

Ich hoffe, dieses Makro funktioniert bei Dir wie bei mir, und grüsse freundlich
Niclaus

wow! Besten Dank, funktioniert einwandfrei! Es müsste nur bei jeder Eingabe neu berechnet werden?

Mit „Private Sub Worksheet_Change(ByVal Target As Range)“ funktioniert es nicht?

Besten Dank!

Liebe Grüsse
bo

Hallo bo

Das funktioniert schon auch mit Worksheet_Change(). Aber ich sehe nicht, wie und vor allem wo Du das einsetzen willst. Ich würde es mit Doppel-Klick machen. Das folgende Makro löst die „Verschiebung“ aus, wenn Du z. B. auf das oberste Feld Deines Adressbereichs (Hans Muster) einen Doppelklick machst. $E$3 müsstest Du Deiner Tabelle entsprechend anpassen.

Private Sub Worksheet_BeforeDoubleClick _
    (ByVal Target As Range, Cancel As Boolean)
If Target.Address = "$E$3" Then    \' Adresse anpassen
    Call ttm3     \' Name des Makros anpassen
End If
Cancel = True
End Sub 

Machbar wäre das auch mit einer Schaltfläche:
Menü Entwicklertools / Steuerelemente / Einfügen

Weisst Du, wie und wo man dieses Worksheet_BeforeDoubleClick einsetzt?

Ich hoffe, das hilft Dir. Viele Grüsse Niclaus