4.3k Aufrufe
Gefragt in Tabellenkalkulation von
Ich habe eine Tabelle mit 11 Spalten. Die Zellen füllen sich bei jedem Mal, wenn das Makro ausgeführt wird, mit anderen Werten. Ich möchte, dass das Makro am Ende jede Spalte nacheinander prüft und Zellen, die den gleichen Wert enthalten verbindet. Der Wert soll im Anschluss in der Verbundzelle zentriert angezeigt werden.

34 Antworten

0 Punkte
Beantwortet von
Es hat auch privat irgendwie mit dem Hochladen nicht geklappt. Dann muss ich nun wohl leider kapitulieren.

Eine Frage noch: An unterschiedlichen Excelversionen kann es nicht liegen, dass es bei Dir funzt und bei mir nicht? Ich habe Excel 2010.
0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Hallo,

ich habe das auch mit Excel 2010 getestet. Wie sehen denn die Daten aus, die in deiner Datei stehen? Sind da auch Formeln drin? Du kannst ja mal testweise das Arbeitsblatt XXX händisch mit ein paar Daten füllen und dann das Makro ausführen.

Gruß

M.O.
0 Punkte
Beantwortet von
Dein erstes Makro, was Du mir geschrieben hattest, funktioniert ja auch hervorragend.

Die ausgelagerte Datei "xxx" hat klar noch Formeln drin, die ja vor dem Speichern und Ausdrucken mit Copy Inhalte Werte einfügen verschwinden. D.h. erst nachdem die ausgelagerte Datei Kopiert und mit Inhalte einfügen Werte wieder eingefügt wurde, dürfen die Zellen verbunden werden.
0 Punkte
Beantwortet von
Ich habe das ausgelagerte Tabellenblatt "XXX" jetzt kopiert und mit Inhalte einfügen Werte erstmal eingefügt, sodass danach keine Formeln mehr in den Zellen stehen.

Danach habe ich dein folgendes Makro dort im Anschluss eingefügt

Dim lngletzte As Long
Dim lngZeile As Long
Dim lngSpalte As Long
Dim lngAnfang As Long
Dim varInhalt As Variant

'Bildschirmaktualisierung ausschalten:
Application.ScreenUpdating = False

'Benachrichtigungen ausschalten
Application.DisplayAlerts = False

For lngSpalte = 1 To 15 'für Spalten A bis O
lngletzte = ActiveSheet.Cells(Rows.Count, lngSpalte).End(xlUp).Row + 1 'letzte Zeile in Spalte ermitteln und um 1 erhöhen
varInhalt = ActiveSheet.Cells(1, lngSpalte) 'Inhalt der ersten Zeile in Variable schreiben
lngAnfang = 1 'erste Zeilennummer in Variable schreiben

For lngZeile = 2 To lngletzte
If ActiveSheet.Cells(lngZeile, lngSpalte).Value <> varInhalt Then
If lngZeile - lngAnfang > 1 Then
With ActiveSheet.Range(Cells(lngAnfang, lngSpalte), Cells(lngZeile - 1, lngSpalte))
.MergeCells = True
.VerticalAlignment = xlCenter
End With
End If
varInhalt = ActiveSheet.Cells(lngZeile, lngSpalte).Value
lngAnfang = lngZeile
End If
Next lngZeile
Next lngSpalte


Wenn ich nun das Makro laufen lassen, bekomme ich wieder den Laufzeitfehler 13, Typen unverträglich an Stelle

If ActiveSheet.Cells(lngZeile, lngSpalte).Value <> varInhalt Then
0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Hallo,

hier mal meine Beispieldatei: KLICK MICH!.
Probiere mal, ob die bei dir funktioniert.

Gruß

M.O.
0 Punkte
Beantwortet von
Da passiert nix
0 Punkte
Beantwortet von
Hallo nochmal.

jetzt funktioniert es. Die Fehlermeldung 13 entstand, weil ich Zellen hatte, in denen auf Grund der Verformelung #NV stand.

Ich habe jetzt noch einen Code mit eingebaut, der die Zellen mit dem Inhalt #NV prüft und den Inhalt dann löscht.

Vielen lieben Dank Dir für Deine Hilfe und ausgesprochen vorbildliche Gedult mit mir. Das hat mir sehr geholfen und ich habe jetzt wieder einiges dazu gelernt.
0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Hallo,

freut mich, dass es jetzt geklappt hat. In Excel 2010 kann man solche Fehler mit WENNFEHLER umgehen ;-).

Gruß

M.O.
0 Punkte
Beantwortet von
Hallo,

jetzt bin ichs doch nochmal.

Ich habe ja geschrieben, dass der Fehler entstanden ist, weil in einigen Zellen #NV stand. Das habe ich mit folgendem Code jetzt gelöst:

' Zelleninhalt löschen wenn im Bereich A10 bis F33 #Nv
Dim zell As Range
Set zell = Range("A10:f33")
For Each zell In ActiveSheet.UsedRange
If zell.Text = "#NV" Then zell.ClearContents
Next zell

Somit funktioniert jetzt die Verbindung der Zellen, jedoch schrottet mir mein Code irgendwie meine Formatierung und löscht zum Teil auch Zellen, verschiebt Überschriften.

Idee?
0 Punkte
Beantwortet von
Ich habe das heute nochmal im Detail und ganz langsam rechergiert. Offenbar liegt es doch an Deinem Makro.

Meine Tabelle hat in Zeile 1 - einschl. 9 Überschriften stehen. Davon ist der Wert A3 bis D4 eine Verbundzelle.

Wenn ich Dein Makro nun laufen lasse, dann werden zwar auch die Zellen verbunden, die ich verbunden haben will, aber im Bereich Zeile 1 - 9 ist nichts mehr so wie es mal war.
...