Microsoft Excel

Herbers Excel/VBA-Archiv

Hilfe bei Ausgabe verbundener Zellen


Betrifft: Hilfe bei Ausgabe verbundener Zellen
von: Jana
Geschrieben am: 13.12.2018 12:20:25

Hallo zusammen,

ich habe folgendes Problem:

In dem angehängten Beispiel könnt ihr sehen, dass ich einen Kalender in Excel habe, in dem ich durch verbinden von Zellen angebe, für welchen Zeitraum eine Wohnung von einer Person belegt ist.
Nun möchte ich in einer anderen Spalte ausgegeben bekommen, welche Person für wie lange in einer Wohnung lebt.
Ich habe es bisher durch ein Makro geschafft, dass durch anklicken einer Zelle der Zeitraum von, bis in jeweils einer Spalte ausgegeben werden.
(Ich musste eine Unterscheidung von verbunden oder nicht verbunden machen, da bei nicht verbundenen Zellen ein Tag draufgerechnet werden muss)

Aber ich möchte nun dass das Makro automatisch erkennt welche Zellen mit Namen ausgefüllt sind und mir all diese Namen untereinander ausgibt + den jeweiligen Zeitraum von,bis.

Also z.B.
Name1 in S1, Von1 in T1, Bis1 in U1
Name2 in S2, Von2 in T2, Bis2 in U2
usw.

Leider bin ich damit völlig überfordet und hoffe hier Hilfe zu finden :)

Vielen Dank und liebe Grüße
Jana

http://www.herber.de/bbs/user/126073.xlsm

  

Betrifft: AW: VBA-Code
von: Fennek
Geschrieben am: 13.12.2018 12:50:53

Hallo Jana,

für die Beispieldatei geht:

Sub F_en()
Dim C As Range
Dim RDate As Range
Set RDate = Range("E1:P11")
    For Each C In RDate.SpecialCells(xlCellTypeConstants)
        If Not IsEmpty(Cells(C.Row, 1)) Then
            With C.MergeArea
            If .Address <> Alt Then
                Anf = Cells(1, .Cells(1).Column)
                Ede = Cells(1, .Cells(.Cells.Count).Column)
                i = i + 1
                Sheets(2).Cells(i, 1).Resize(, 3) = Split(C.Cells(1).Value & "|" & Anf & "|" &  _
Ede, "|")
            End If
            
            Alt = .Address
            End With
        End If
    Next C
    
Set rdata = Nothing
End Sub
Für die Originaldatei muss der Range "RDate" angepasst werden.

Es wird immer eine Auswertung für den aktuellen Stand gerechnet und in Sheet(2) angezeigt. Der Code kommt in ein allgemeines Modul.

mfg


  

Betrifft: Dein bisheriges Pgm war auch nicht ganz ...
von: Luc:-?
Geschrieben am: 13.12.2018 14:22:04

…richtig, Jana,
da der PgmTeil für unverbundene Zellen immer durchlaufen wird und dann das Ergebnis verfälscht. Diesem Teil muss also ein Else vorangestellt wdn und das End If gehört dann an den Schluss (nach diesem Teil). Das ergäbe dann ein vollständiges If … Then … Else … End If-Konstrukt.
Hierbei kann auch schon der Name ergänzt wdn; im VbZellenTeil so: Range("S3") = Target.Cells(1)
Und im anderen dann so: Range("S3") = Target oder auch genauso wie im ersten.
Feedback nicht unerwünscht! Gruß, Luc :-?

„Die Intelligenzmenge ist auf diesem Planeten eine Konstante, die Bevölkerung nimmt aber zu!“ Auch deshalb informieren mit …