Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1364to1368
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

Bereich definieren (verbinden und ausfüllen)

Bereich definieren (verbinden und ausfüllen)
22.06.2014 21:34:56
urmila
Hallo liebe Community,
ich hoffe ihr könnt mir bei folgendes behilflich sein.
Ich habe eine Liste, darin sind viele Bestellungen. In Spalte B steht immer ein Datum, z.B. 22.06.2013 steht 7 mal, der 21.06.2014 z.B. 3 mal usw.
Ich würde gerne (per VBA) dass in Spalte A abhängig von den Anzahl der einzelnen Tagen der Bereich verbunden wird ("Verbinden und Zentrieren") und darin das dazugehörige Datum eingetragen wird.
Die Spalte B kann ausgeblendet werden bzw. ist ausgeblendet...
Ich hoffe es war verständlich und ihr könnt mir weiterhelfen
LG
Urmila

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Ja, und zwar mal etwas unorthodox, ...
23.06.2014 02:19:37
Luc:-?
…Urmila, Morrn!
Nämlich so, dass alle Datumswerte in den VerbundZellen erhalten bleiben. Auf diese Weise kann man sich mit Fmln einer Zeile, die den ZeilenDatumswert benötigen, stets auf diese Zeile beziehen und muss keine Klimmzüge veranstalten, um sich auf das Datum der jeweils 1.Zelle des Verbunds beziehen zu können.
Die VerbundZellen sind dann auch als Datum formatiert und horizontal zentriert, das Datum erscheint in der 1.Zeile. Soll das anders sein, muss nur die entsprd Konstante am PgmAnfang geändert wdn.
Rahmenlinien und Zell-/Schriftfarben können auch noch nachträgl manuell geändert wdn, auch Schrift fett/kursiv, aber die bereits vorgenommenen Formatierungen sollten dem Pgm überlassen bleiben.

Rem Verbindet Zellen gleichen Inhalts in d.m.d.Konst adVBer festgelegt Spalte;
'   dabei bleibt d.Inhalt aller VbdZellen unverändert erhalten. Achtung! Neben
'   d.letzt Spalte d.benutzt BlattBereichs wdn noch 2 Spp f.HilfsOperat benöt!
'   Vs1.0 -LSr -cd:20140622 -1pub:29140623 herber -lupd:20140622n
Sub VZellen()
Const adVBer$ = "B2:B16", ftVBerW$ = "dd.mm.yyyy", _
VZhorA As Long = xlCenter, VZverA As Long = xlTop
Dim ect(1) As Long, rct As Long, hZv As Long, _
hBer As Range, vBer As Range, xZ As Range, aSh As Worksheet
On Error GoTo fx
Set aSh = ActiveSheet: Set vBer = aSh.Range(adVBer)
With aSh.UsedRange
Set hBer = .Columns(.Columns.Count).Offset(0, 2)
End With
hZv = vBer.Rows(1).Row - hBer.Rows(1).Row
For Each xZ In vBer.Resize(vBer.Rows.Count + 1, vBer.Columns.Count)
On 1 \ (rct + 1) GoTo nx
ect(0) = ect(0) - CInt(xZ = xZ.Offset(-1, 0))
If ect(0) = ect(1) Then
With aSh.Range(hBer.Cells(rct - ect(0) + hZv), hBer.Cells(rct + hZv))
.Merge: .NumberFormat = ftVBerW
.HorizontalAlignment = VZhorA: .VerticalAlignment = VZverA
.Copy
End With
aSh.Range(vBer.Cells(rct - ect(0)), vBer.Cells(rct)) _
.PasteSpecial Paste:=xlPasteFormats
ect(0) = 0: ect(1) = 0
Else: ect(1) = ect(0)
End If
nx:     rct = rct + 1
Next xZ
vBer.Cells(rct).Select: GoTo ex
fx: MsgBox Err.Description, vbCritical, "Fehler " & Err.Number
ex: If Not hBer Is Nothing Then hBer.EntireColumn.Delete
Set hBer = Nothing: Set vBer = Nothing: Set aSh = Nothing
End Sub
Hoffe, das sind auch echte Datumswerte (Zahlen), keine Texte bei dir.
Viel Erfolg, Luc :-?

Anzeige
AW: Danke...
23.06.2014 07:14:34
urmila
Danke Luc,
vielen Dank, genau das ist was ich am Montag morgen brauche :)
*kuss*
Danke und LG
Urmila

Bitte sehr, gern geschehen! Übrigens, ...
23.06.2014 15:06:47
Luc:-?
…Urmila,
in einer derart mit VerbundZellen ausgestatteten Spalte kann auch noch sinnvoll gefiltert wdn, in einer auf die übliche Weise verbundene Zellen enthaltenden Spalte aber nicht! Willst du den Verbund wieder aufheben, kannst du das auf die übliche Weise tun, die Fehlermeldung kann ignoriert wdn.
Gruß + Dank für Kuss, Luc :-?

AW: Bitte sehr, gern geschehen! Übrigens, ...
23.06.2014 16:44:10
urmila
Hallo Luc :-?
auch meinerseits gerngeschehen und danke für die weitere Info.
Ich habe da noch eine andere Frage, aber da mache ich einen neuen Beitrag, vll. ist es dann für die Zukunft einfacher zu finden für andere.... :)
LG
Urmila

Anzeige
Trotzdem habe ich noch was für dich, ...
24.06.2014 00:15:57
Luc:-?
…Urmila,
und eventuelle andere Interessenten, aber ebfalls nur für eine Spalte (viell mache ich das irgendwann mal noch universeller?). Hierbei müssen alle gewünschten Formate bereits in der OriginalTab vorhanden sein, inkl vertikale/horizontale TextAusrichtung, denn sie wdn automatisch übernommen, ebenso wie das ZahlenFormat. Vertikale TextAusrichtung ist dabei besonders wichtig, weil die normalerweise auf unten (xlBottom) eingestellt ist, was zur Folge hätte, dass der Text in der VbZelle ebenfalls ganz unten erscheint, was iaR unüblich ist. Da das sicher häufig vergessen wdn würde, kann man eine entsprd Konst am PgmAnfang so einstellen, dass das korrigiert wird (s. Anmerk im Pgm).

Rem Vbindet Zellen gleichen Inhalts in d.m.d.Konst adVBer festgelegt Spalte;
'   dabei bleibt Inhalt aller VbZellen unvändert erhalt, Formate wdn übnomm.
'   Achtung! Neben d.letzt Spalte d.insgesamt benutzten BlattBereichs müssen
'   sich noch ungenutzte Spalten lt Konst relHSpPos, deren letzte als tempo-
'   rärer ArbBereich benötigt wird, befind! Diese Spalte wird letztendl wie-
'   der entfernt. Außerdem darf d.letzte TabSpnZeile nicht d.letztmögl sein!
'   Vs1.1 -LSr -cd:20140622 -1pub:29140623 herber -lupd:20140623t
Sub VbZellenSp()
Const adVBer$ = "B2:B16", relHSpPos As Integer = 2, vbVAlign As Long = 0
Rem Möglichkn f.Konst vbVAlign:
'   0 -> wie eingestellt, 1 -> Tausch xlBottom gg xlTop u.umgekehrt
'   sonst immer nur lt Konst -> xlTop , xlCenter , xlBottom
Dim ect(1) As Long, hZv As Long, rct As Long, aSh As Worksheet, _
hBer As Range, vBer As Range, vZ As Range, xZ As Range
On Error GoTo fx
Set aSh = ActiveSheet: Set vBer = aSh.Range(adVBer)
If vBer.Columns.Count > 1 Then MsgBox "Nur 1 Spalte zulässig!", _
vbExclamation, "Bereich " & adVBer: GoTo ex
With aSh.UsedRange
Set hBer = .Columns(.Columns.Count).Offset(0, relHSpPos)
End With
hZv = vBer.Rows(1).Row - hBer.Rows(1).Row
For Each xZ In vBer.Resize(vBer.Rows.Count + 1, vBer.Columns.Count)
On 1 \ (rct + 1) GoTo nx
ect(0) = ect(0) - CInt(xZ = xZ.Offset(-1, 0))
If ect(0) = ect(1) Then
Set vZ = aSh.Range(hBer.Cells(rct - ect(0) + hZv), hBer.Cells(rct + hZv))
xZ.Offset(-1, 0).Copy: vZ.Cells(1).PasteSpecial xlPasteFormats: vZ.Merge
With vZ.Borders(xlEdgeTop)
.Weight = xZ.Offset(-ect(0) - 1, 0).Borders(xlEdgeTop).Weight
.LineStyle = xZ.Offset(-ect(0) - 1, 0).Borders(xlEdgeTop).LineStyle
.Color = xZ.Offset(-ect(0) - 1, 0).Borders(xlEdgeTop).Color
End With
With vZ.Borders(xlEdgeLeft)
.Weight = xZ.Offset(-1, 0).Borders(xlEdgeLeft).Weight
.LineStyle = xZ.Offset(-1, 0).Borders(xlEdgeLeft).LineStyle
.Color = xZ.Offset(-1, 0).Borders(xlEdgeLeft).Color
End With
With vZ.Borders(xlEdgeRight)
.Weight = xZ.Offset(-1, 0).Borders(xlEdgeRight).Weight
.LineStyle = xZ.Offset(-1, 0).Borders(xlEdgeRight).LineStyle
.Color = xZ.Offset(-1, 0).Borders(xlEdgeRight).Color
End With
With vZ.Borders(xlEdgeBottom)
.Weight = xZ.Offset(-1, 0).Borders(xlEdgeBottom).Weight
.LineStyle = xZ.Offset(-1, 0).Borders(xlEdgeBottom).LineStyle
.Color = xZ.Offset(-1, 0).Borders(xlEdgeBottom).Color
End With
If vbVAlign > 0 Then
If vZ.VerticalAlignment = xlBottom Then vZ.VerticalAlignment = xlTop _
Else vZ.VerticalAlignment = xlBottom
Else: If vbVAlign 
Viel Erfolg!
Gruß Luc :-?

Anzeige
INFO: Neue universellere Vs1.2 in Arbeit!
28.06.2014 11:05:15
Luc:-?
Demnächst unter einem Folgelink in einem Folge-BT dieses Threads zu finden!
Luc :-?

293 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige