Anzeige
Archiv - Navigation
304to308
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
304to308
304to308
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Erste Zeile eines Zelenverbundes

Erste Zeile eines Zelenverbundes
03.09.2003 18:48:06
Jörg Schreiber
Servus!

Ich habe mehrere vertikal miteinander verbundene Zellen
und moechte die Position der erste Zeile des Zellverbundes
auslesen, nach Möglichkeit ohne den Verbund aufzuheben.

Dabei moechte ich Zeile fuer Zeile springen und schauen, ob
Cells(aktuelle Zeile, Spalte1) der Anfang eines Verbundes
ist.

Gibt es sowas wie ...MergeArea.Rows(1)= True ? Ich trickse
schon ewig erfolglos rum...

Merci

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Erste Zeile eines Zelenverbundes
03.09.2003 20:17:47
Christoph
Hallo Jörg,
mal ein Ansatz. Jener muss natürlich noch entsprechend ausgefeilt werden.


Sub Zellenverbund()
lRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = lRow To 2 Step -1
Cells(i, 1).Select
If Cells(i, 1) = Cells(i + 1, 1) Then
MsgBox "Zellenverbund"
Else
MsgBox "kein Zellenverbund"
End If
Next i
End Sub


mit der Hoffnung, dir geholfen zu haben
Gruß
Christoph
Sorry, Fehlversuch - Frage ist wieder offen
03.09.2003 20:29:16
Christoph
Hi Jörg,
ich dachte ich hätte aus dem Stehgreif die passende Lösung gefunden.
Ich muss mich bei dir entschuldigen.
obiges Makro prüft die Einträge, aber nicht den Zellenverbund.
Wenn alle Zellen Einträge haben und diese alle unterschiedlich sind, dann klappt das.
bei leeren Zellen funzt das überhaupt nicht.

nochmals SORRY
Gruß
Christoph
Anzeige
neuer Ansatz
03.09.2003 20:59:41
Christoph
Hallo Jörg,
ich möchte die "Schmach", dir völligen Mumpitz erzählt zu haben, ungern auf mir sitzen lassen. Daher ein neuer Ansatz (abgeleitet aus der VBA-Hilfe unter Stichwort: "MergeCells")

Das funktioniert jetzt auch bei verbundenen Zellen ohne Eintrag, oder doppeltem Eintrag mit anderen Zellen. Natürlich ist das nur ein Ansatz, du mußt das noch auf deine Bedürfnisse anpassen:

Sub Zellenverbund()
lRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = lRow To 2 Step -1
If Range(Cells(i, 1), Cells(i + 1, 1)).MergeCells Then
MsgBox "Zeile " & i & " und " & i + 1 & " sind verbunden"
End If
Next i
End Sub


Ich hoffe, du verzeihst mir den herben Ausrutscher
Gruß
Christoph
Anzeige
AW: neuer Ansatz
04.09.2003 08:34:21
Joerg Schreiber
hm, nicht schlecht, aber immer noch nicht das, was ich brauche.
vielleicht ein wenig mehr hintergrund:

das problem ist, das sich in spalte 1 ein zellenverbund an den
naechsten reiht. beim ausdruck werden die verbünde u.U. ausein-
andergerissen und auf zwei seiten zerstückelt. so soll vor dem
druck ein seitenwechsel gesetzt werden und zwar über dem 1. verbund,
der nicht mehr ganz auf die seite passt.

deine loesung funktioniert bei nur einem verbund. wenn sich zwei (oder
mehr) einanderreihen, ist die abfrage .mergecells immer TRUE, wobei
er nicht erkennt, das es zwei verschiedene verbunde sind. genau das
sollte er aber herausfiltern, damit ich an der stelle den zeilenumbruch
setzen kann.

also: vom tabellenende rueckwaertszaehlend ist die position der 1. Zeile
eines zellverbundes vor dem uebergang zu einem weiteren verbund gesucht.
uebergang

ich hoffe, jetzt ist ein wenig mehr licht in die geschichte gekommen...
trotzdem schon mal danke
Anzeige
Grenze Zellenverbund
04.09.2003 10:48:55
Christoph
Hallo Jörg,
ich hoffe ich habe dih richtig verstanden.
das folgende Makro durchläuft die Spalte A von oben nach unten und meldet jede Übergang zwischen zwei aneinandergrenzenden Zellenverbunde. Im Beispiel von Zeile 2 bis 1000.
(Zellenverbunde, die nicht aneinandergrenzen, werden nicht genannt.)


Sub grenze_Zellenverbund()
For i = 2 To 1000 Step 1
If Range(Cells(i, 1), Cells(i + 1, 1)).MergeCells = True Then
BolVerbEnd = False
For iCount = i + 1 To 1000
Set ma1 = Range(Cells(iCount, 1), Cells(iCount, 1)).MergeArea
Set ma2 = Range(Cells(iCount - 1, 1), Cells(iCount - 1, 1)).MergeArea
If ma1.Address = "$A$" & iCount Then
BolVerbEnd = False
Exit For
ElseIf ma1.Address <> ma2.Address Then
BolVerbEnd = True
Exit For
End If
Next iCount
i = iCount
End If
If BolVerbEnd = True Then
MsgBox "Verbundgrenze zwischen: " & iCount - 1 & " und " & iCount
End If
BolVerbEnd = False
Next i
End Sub

Gruß
Christoph
Anzeige
Ansatz mit MergeArea
04.09.2003 11:12:16
Martin Beck
Hallo Jörg,

folgendes Makro gibt die gesuchten Zeilennummern in einer MsgBox aus:


Sub Verbundene_Zellen()
z = Range("A65536").End(xlUp).Row
For i = z To 1 Step -1
MsgBox Cells(i, 1).MergeArea.Cells(1).Address
i = Cells(i, 1).MergeArea.Cells(1).Row
Next i
End Sub


Gruß
Martin Beck
AW: Ansatz mit MergeArea
04.09.2003 12:03:12
Joerg Schreiber
sauber, damit sollte ich erstmal klarkommen - sieht eindeutig
professioneller aus, als das, was ich zwischenzeitlich zum laufen
bekommen habe. wie auch immer, eine folgefrage hab ich noch.

wie kriege ich denn die gesetzen seiteumbrueche wieder weg, um sie
beim naechsten mal wieder entsprechend dem geanderten tabellen-
inhalt wieder zu setzen? mit

For i = 1 To Anzahl_Pagebreaks
ActiveSheet.HPageBreaks(i).Delete
Next

bringt er mir logischerweise einen System-Fehler bei den vom System
automatisch generierten Seitenumbrüchen, da man diese nicht entfernen
kann.
Anzeige
AW: Ansatz mit MergeArea
04.09.2003 13:01:16
Martin Beck
Hallo Jörg,

reicht das?

ActiveSheet.ResetAllPageBreaks

Gruß
Martin Beck
Danke für die Rückmeldung
04.09.2003 13:18:56
Christoph
Hi Jörg,
an wen ist denn dein posting gerichtet? Martin oder Christoph?
Wenn du mich meintes, so sag ich schon mal Danke für das Lob. ich hbin auch wieder um 'ne Erfahrung reicher.

Was deine nächste Frage angeht:
vielleicht bringt dich ja:
ActiveSheet.DisplayAutomaticPageBreaks = False
weiter. (Mehr kann ich dir dazu auch nicht sagen, da ich mit Seitenumbrüchen noch nie in VBA zu tun hatte)

Und noch was: Neue Fragen innerhalb eines Threads sind ungünstig - weil wegen Archiv und alles.
Gruß
Christoph
Anzeige
AW: Danke für die Rückmeldung
04.09.2003 13:32:30
Joerg Schreiber
merci mal an euch,

der "reset" klappt hervorragend und den rest muss
noch einbauen - christoph:kritik angekommen, wird kuenftig
getrennt gepostet.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige