Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1472to1476
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
VBA Code Zeilen verbinden
13.02.2016 13:21:01
Tom
Hallo zusammen,
wie bekomme ich die folgende Formatierung per Makro hin?
Ich bekomme eine Liste aus einer Html App exportiert.
Ab der Zeile 9 sind Informationen in den Zellen enthalten.
Jetzt soll per Code immer eine leere Zeile nach einer bereits beschriebene Zeile eingefügt und die Spalten ab B bis N und Q bis R verbunden werden.
Die Spalten O und P sollen nicht verbunden werden.
Die exportierte Liste variiert von 1-200 Zeilen ca.
Vielen Dank für die Unterstützung.
Tom

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Code Zeilen verbinden
13.02.2016 21:52:25
Daniel
Hi
kannst du mal eine Datei hochladen, diese Datei sollte zwei Tabellenblätter enthalten.
auf dem ersten zeigst du, wie die Daten nach dem Import vorliegen
auf dem zweiten zeigst du, wie die Daten aufbereitet werden sollen (von Hand erstellt, ein paar Zeilen reichen)
denn so ganz eindeutig ist deine Beschreibung noch nicht.
Gruß Daniel

AW: VBA Code Zeilen verbinden
13.02.2016 22:34:45
Tom
Hi Daniel,
ok hab die Tabellenblätter hochgeladen. Das Sheet "export" zeigt wie ich es exportiert bekomme. Das andere Sheet wie ich es dann letztendlich aufbereiten möchte.
https://www.herber.de/bbs/user/103530.xlsx
Gruß Tom

Anzeige
AW: VBA Code Zeilen verbinden
14.02.2016 00:12:14
Daniel
hi
da wurde aber viel mehr gemacht als du beschrieben hast.
Gruß Daniel

AW: VBA Code Zeilen verbinden
14.02.2016 01:11:00
Tom
Ja schon, das andere bekomme ich über aufzeichnen hin, denke ich....

AW: VBA Code Zeilen verbinden
14.02.2016 02:22:01
Daniel
Hi
ok dann mal der Code, der mit deiner Exportdatei das macht, was du in deiner Eingangsfrage beschrieben hat, nämlich folgendes:
1. nach jeder Zeile eine Leerzeile einfügen
2. in jeder Spalte die Textzelle mit der darunter liegenden Leerzelle verbinden, ausser in Spalte A, O und P
Sub Test()
Dim Zeile As Long
Dim Spalte As Long
'--- Leerzeilen einfügen:
With Sheets("Export")
.Range(.Cells(2, 1), .Cells(2, 1).End(xlDown)).Copy
.Cells(2, 1).End(xlDown).Offset(1, 0).PasteSpecial xlPasteAll
.Range(.Cells(1, 1), .Cells(2, 1).End(xlDown)).EntireRow.Sort _
key1:=.Cells(1, 1), order1:=xlAscending, Header:=xlYes
End With
'--- Verbinden
With Sheets("Export")
For Zeile = 2 To .Cells(2, 1).End(xlDown).Row Step 2
For Spalte = 1 To .Cells(1, 2).End(xlToRight).Column
Select Case Spalte
Case 1, 15 To 16
Case Else
.Cells(Zeile, Spalte).Resize(2, 1).MergeCells = True
End Select
Next
Next
End With
End Sub
Gruß Daniel

Anzeige
AW: VBA Code Zeilen verbinden
14.02.2016 10:19:03
Tom
Hi Daniel,
ja das sieht schon mal sehr gut aus. Die Spalte A soll auch noch verbuden werden!?
Und ich würde gerne jede zweite Zeile einfärben, damit es übersichtlicher wird.
Gruß Tom

AW: VBA Code Zeilen verbinden
15.02.2016 10:12:42
Daniel
Hi
die Spalten, welche nicht verbunden werden sollen, sind in Select Case beim ersten Case-Fall definiert.
wenn also die Spalte 1 auch verbunden werden soll, dann einfach die "1," aus dieser Auflistung löschen.
wenn du jede zweite Zeile färben willst, dann meinst du wahrscheinlich jede 4. Zeile, weil in deiner Liste ja immer zwei Excelzeilen eine Logische Zeile bilden.
du müssest am Ende noch folgenden Code hinzufügen:

For Zeile = 2 To .Cells(2, 1).End(xlDown).Row Step 4
.Cells(Zeile, 1).Resize(2, .Usedrange.columns.count).Interior.Color  = RGB(200, 200, 200)
Next

gruß Daniel

Anzeige
AW: VBA Code Zeilen verbinden
15.02.2016 15:01:28
Tom
Hey,
"einfach die "1," aus dieser Auflistung löschen" habe ich auch versucht, aber durch ein einfügen von zusätzlichen Zeilen liest der Code erst einmal die Anzahl der Zeilen, kopiert diese (inkl. dem Inhalt) und schiebt die zusätzlichen Zeilen unter die bereits vorhandenen. Dadurch ist der Wert ist der Spalte A doppelt und Excel meldet einen Fehler.
Danke
gruß tom

AW: VBA Code Zeilen verbinden
15.02.2016 17:57:47
Daniel
Hi
bist du sicher dass es ein Fehler ist und nicht nur ein Warnhinweis von Excel, weil es jetzt den Inhalte der zweiten Zelle löschen wird?
Den Warnhinweis bzw die Rückfrage ob die Aktion auch wirklich ausgeführt werden soll könnte man vermutlich durch ein vorangestelltes Application.DisplayAlerts = False (vor der Schleife) verhindern, dann stellt Excel diese Rückfragen nicht mehr.
nach der Schleife aktiviert man die Systemrückfragen wieder mit Application.DisplayAlerts = True
die bessere Lösung wäre ja gewesen, dass man diese Zählnummer zum einsortieren der Leerzeilen zusätzlich einfügt und hinterher wieder löscht, aber da die Zählnummer ja schon vorhanden war und du die Spalte A explizit nicht verbinden wolltest, habe ich mir diesen Aufwand gespart und die vorhandene Zählnummer in A verwendet.
Gruß Daniel

Anzeige
AW: VBA Code Zeilen verbinden
16.02.2016 16:36:10
Tom
Hallo,
ok alles soweit zum laufen bekommen. Jetzt soll das Ganze noch mit Rahmen formatiert werden.
Kannst Du mir dabei noch helfen?
Das Ganze sieht bei mir dann so aus:
Sub Test()
Dim Zeile As Long
Dim Spalte As Long
'--- Leerzeilen einfügen:
With Sheets("KSW_ESW Übersicht")
.Range(.Cells(2, 1), .Cells(2, 1).End(xlDown)).Copy
.Cells(2, 1).End(xlDown).Offset(1, 0).PasteSpecial xlPasteAll
.Range(.Cells(1, 1), .Cells(2, 1).End(xlDown)).EntireRow.Sort _
key1:=.Cells(1, 1), order1:=xlAscending, Header:=xlYes
End With
'--- Zeilen färben
With Sheets("KSW_ESW Übersicht")
For Zeile = 2 To .Cells(2, 1).End(xlDown).Row Step 4
.Cells(Zeile, 1).Resize(2, .UsedRange.Columns.Count).Interior.Color = RGB(200, 200, 200)
Next
End With
'--- Zellen verbinden
With Sheets("KSW_ESW Übersicht")
For Zeile = 2 To .Cells(2, 1).End(xlDown).Row Step 2
For Spalte = 1 To .Cells(1, 2).End(xlToRight).Column
Select Case Spalte
Case 29 To 30
Case Else
Application.DisplayAlerts = False
.Cells(Zeile, Spalte).Resize(2, 1).MergeCells = True
Application.DisplayAlerts = True
End Select
Next
Next
End With
End Sub

Gruß Tom

Anzeige
AW: VBA Code Zeilen verbinden
16.02.2016 22:32:58
Daniel
Hi
ich gehe schon davon aus, dass ich dir dabei helfen kann.
Gruß Daniel

AW: VBA Code Zeilen verbinden
17.02.2016 09:13:31
Tom
Moin,
hab das mal so gelöst. Aber eigentlich sollten die Rahmen immer nur bis zum Ende der Liste gezogen werden.
Application.ScreenUpdating = False
For Each Zelle In Range("B8:O500")
With Zelle
.BorderAround Weight:=xlThin
End With
Next
Application.ScreenUpdating = True

gruß tom

AW: VBA Code Zeilen verbinden
17.02.2016 16:33:36
Daniel
Hi
such mal im Archiv nach "letze Zeile" oder im WWW nach "Excel letzte Zeile", da solltest du genügend finden.
Gruß Daniel

Anzeige
AW: VBA Code Zeilen verbinden
22.02.2016 11:54:26
Tom
Hi Daniel,
danke für den Tipp und Deine Unterstützung.
Ich habe es so einigermaßen nach meinen Vorstellungen hinbekommen. Es soll halt nicht die "UsedRange" mit einem Rahmen formiert werden, sondern nur die Zelle die beschrieben ist.
Ich bin noch auf der Suche nach dem Code für das automatische Anpassen der Zeilenhöhe bei verbundenen Zellen. Gibt es einen funktionierenden Code dafür überhaupt? Die einen schreiben es geht die anderen nein geht nicht. Hier im Forum habe ich auch nichts gefunden.
Gruß Tom

Sub Rahmen() '---- Rahmen ziehen
Dim Rahmen As Range
' Bereich festlegen
Set Rahmen = ActiveSheet.UsedRange ' Hier soll der Range dynamisch ermittelt _
werden
With Rahmen
.Borders(xlEdgeLeft).LineStyle = xlContinuous
.Borders(xlEdgeLeft).LineStyle = xlContinuous         ' Links
.Borders(xlEdgeTop).LineStyle = xlContinuous          ' Oben
.Borders(xlEdgeBottom).LineStyle = xlContinuous       ' Unten
.Borders(xlEdgeRight).LineStyle = xlContinuous        ' Rechts
.Borders(xlInsideVertical).LineStyle = xlContinuous   ' Innen senkrecht
.Borders(xlInsideHorizontal).LineStyle = xlContinuous ' Innen waagerecht
End With
Set Rahmen = Nothing
End Sub 

Anzeige

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige