Anzeige
Archiv - Navigation
1624to1628
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
Inhaltsverzeichnis

clearcontest über einfache und gemergde zellen

clearcontest über einfache und gemergde zellen
24.05.2018 16:03:42
christoph
Moin moin und gleich die nächste Frage :(
Ich kann jetzt Spalten einfügen und auch wieder löschen ab einer bestimmten Spalte.
Füge ich die Spalte jedoch an der "Falschen" Stelle ein,genauer gesagt am Ende des merged Bereichs ein, wird die neue Spalte unabhängig vom merged Bereich.
Füge ich die Spalte in der Mitte des Merged Bereichs ein, ist sie mit merged.
Das gute ist, der merged Bereich endet immer an vohersehbaren Punkten.
Das ich nicht plötzlich ungewollte unmergede Zellen habe, bin ich umgegangen in dem ich einfach eine Spalte vorher die neue Spalte eingefügt habe und die Daten rüber kopiert habe (ausschneiden ging nicht, wahrhscheinlich wegen den merged zellen?)
Nun muss ich aber noch die Inhalte der kopierten Zelle löschen und brauche dafür einen Befehl der die "einfachen" Zellen löscht und den Inhalt in der gemergden in Ruhe lässt bzw. nur löscht wenn es der ANfang der gemergden Zelle ist (wird nicht vorkommen deswegen akzeptabel).
Wenn jemand ne Idee hat, bin ich über Ratschläge sehr erfreut!!
Ansonsten müsste ich mir noch ne Funktion erstellen, die die gemergden Zellen erkennt und überspringt
Danke schonmal

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: clearcontest über einfache und gemergde zellen
24.05.2018 16:18:28
ChrisL
Hi Christoph
Mit verbundenen Zellen schaffst du es nicht in den Recall :)
Folgender Code löscht im selektierten Bereich sämtlichen Inhalt, der nicht in einer verbunden Zelle steht:
Sub t()
Dim c As Range
Application.ScreenUpdating = False
For Each c In Selection
If c.MergeArea.Address = c.Address Then c.ClearContents
Next c
End Sub
cu
Chris
AW: clearcontest über einfache und gemergde zellen
24.05.2018 16:23:24
christoph
Danke dir für die Antwort, schaue ich mir morgen früh direkt an :)
Wie meinst mit verbundenen Zellen nicht in Recall?
Weil man verbundene Zellen nicht nutzen sollte? :D
AW: clearcontest über einfache und gemergde zellen
24.05.2018 16:27:26
ChrisL
Hi Christoph
Ja, verbundene Zellen würde ich mit Zurückhaltung einsetzen. Insbesondere wenn du Datenauswertungen oder Bearbeitungen per Makros machen willst, sind verbundene Zellen nervig.
Zudem Contest = Wettbewerb, Content = Inhalt ;)
cu
Chris
Anzeige
AW: clearcontest über einfache und gemergde zellen
24.05.2018 16:55:57
christoph
^^ ab und an fühlt sich vba eher wie ein Wettbewerb an :D
Ok werde ich drauf achten, aber wüsste nicht wie ich das in diesem falsch schön besser geregelt kriege.
Hab dein Sub ausprobiert.
er lässt die gemergden Bereich fein in Ruhe löscht aber alles um den selecteden Bereich mit O.o aber den Fehler finde ich selbst :)
wüsste aber gerne wozu du :
Application.ScreenUpdating = False
verwendest?
Danke und schönen abend euch
AW: clearcontest über einfache und gemergde zellen
24.05.2018 17:04:03
ChrisL
Hi
Dank ScreenUpdating = False musst du dem Makro nicht bei der Arbeit zuschauen und es macht das Makro minimal schneller.
cu
Chris
Anzeige
AW: clearcontest über einfache und gemergde zellen
24.05.2018 17:15:45
Daniel
Hi
wie Chris schon geschrieben hat:
ohne diese Option wird jede Änderung, die der Code macht, sofort am Bildschirm angezeigt, was den Code langsam machen kann.
Hier scheint es ganz sinnvoll zu sein, da du jede Zelle einzeln bearbeitest.
die Alternative wäre, die Zellen die gelöscht werden müssen in einer Rangevariable zu sammeln und dann in einem Schritt zu löschen:
Sub t()
Dim c As Range
dim rng as range
For Each c In Selection
If c.MergeArea.Address = c.Address Then
if rng is nothing then
set rng = c
else
set rng = Union(rng, c)
end if
end if
Next c
if not rng is nothing then rng.ClearContents
End Sub
wenn man es sich zur Angewohnheit macht, Excelzellen nicht in Schleifen einzeln zu bearbeiten sondern immer als Block in einem Schritt, kann man auf das Application.ScreenUpdating = False in den meisten Fällen verzichten.
Gruß Daniel
Anzeige
Top, vielen Dank und bis zum nächsten Mal ;) owT
24.05.2018 17:31:56
christoph
Update
24.05.2018 17:41:23
christoph
Version von Chris funktioniert leider doch nicht :(, dachte lag an mir aber beim rumprobieren mit "sicheren" mitteln, gings nicht :(
Denke aber das Daniels funktioniert, da erst die merged rausgenommen werden und dann gelöscht (muss evt. noch bisschen angepasst werden)
Ich meld mich morgen!
Bsp. was bei Chris passiert:
1 1 1
2 2 2
3 3 3
4 4 4
merged
Setze ich in dem Fall Range("B1:B4").select und verwende die Formel von Chris funktioniert es TipTop, ist aber auch nichts gemergdes dabei.
Setze ich aber
Range("B1:B5").select makiert er mir auch A1:C4 mit und setzt auch hier die ClearContent drauf :(
Anzeige
AW: Update
24.05.2018 17:48:51
Daniel
Hi
das Problem ist, wenn du Zellen selektierst und es eine verbundene Zelle dabei, dann erweitert Excel diesen zellbereich automatisch, bis der teilselektierte Zellverbund vollständig enthalten ist.
hier greift dann die nächste Regel:
Vermeide select und Activate im Makros sondern sprich die Zellen direkt an:
Statt:
Range("B1:B5").Select
For each c in Selection

einfach:
For each c in Range("B1:B5")
Gruß Daniel
Merci und finito owT
25.05.2018 11:22:22
christoph
AW: clearcontest über einfache und gemergde zellen
24.05.2018 16:28:29
Daniel
das ist gemeint.
ansich kann man schon mit verbundenen Zellen arbeiten und diese auch mit Makros bearbeiten, man muss dann halt ein paar Dinge beachten.
Gruß Daniel
Anzeige
AW: MerdeCells
24.05.2018 17:55:16
Gerd
Moin!
Sub t2()
Dim c As Range
Dim rng As Range
For Each c In Selection
If c.MergeCells = False Then
If rng Is Nothing Then
Set rng = c
Else
Set rng = Union(rng, c)
End If
End If
Next c
If Not rng Is Nothing Then rng.ClearContents
End Sub

Gruß Gerd

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige