Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
500to504
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
500to504
500to504
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Bereichsformatierung in einer Variablen speichern

Bereichsformatierung in einer Variablen speichern
16.10.2004 10:31:12
Rolf
Hallo Experten,
weiß jemand, ob + wie man die komplette Formatierung eines mehrere Zellen umfassenden Bereichs, z.B. UsedRange, in einer Variablen speichern kann, bzw. ob + wie die mit der Copy-Methode in den Zwischenspeicher gebrachte Formatierung über eine Variable abrufbar ist?
Freundliche Grüße
Rolf

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bereichsformatierung in einer Variablen speichern
ransi
hallo rolf
wie du das über die zwischenablage regeln kannst weiss ich nicht.
aber anderer ansatz:
kopier dir doch die formate in ein anderes blatt, evtl. sheet visible=xlveryhidden.
von da kannst du sie dir doch immer wiederholen.
Public

Sub t()
Dim copybereich As Range
Set copybereich = Sheets("Tabelle1").UsedRange
copybereich.Copy
Sheets("tabelle2").Range("A1").PasteSpecial (xlFormats)
End Sub

ransi
AW: Bereichsformatierung in einer Variablen speichern
16.10.2004 11:28:07
Rolf
Hallo ransi,
danke für dein Interesse + deinen Tipp -
aber genau das will ich ja nach Möglichkeit vermeiden:
erst Müll produzieren, um ihn anschließend
wieder entsorgen zu müssen.
Ich suche sozusagen die Müllvermeidungsvariante.
Herzliche Grüße
Rolf
Anzeige
weitere Hilfen erwünscht
16.10.2004 16:35:06
Rolf
Hi people,
wo bleiben eure Geistesblitze?
Herzliche Grüße
Rolf
AW: weitere Hilfen erwünscht
K.Rola
Hallo,
ich weiß noch immer nicht, was du eigentlich bezweckst, aber vielleicht hilft dir diese meine Antwort von vorgestern weiter:
Option Base 1
Sub machs()
Dim rngSelection As Range
Set rngSelection = Range(inv_Range(Selection))
rngSelection.Select
End Sub

Private Function inv_Range(rngS As Range)
On Error Resume Next
Dim rng1 As Range, rng2 As Range, rng3 As Range, rng4 As Range
Dim c As Long, rc As Long, cc As Integer
rc = ActiveSheet.Rows.Count
cc = ActiveSheet.Columns.Count
c = 0
If rngS.Row > 1 Then
Set rng1 = Rows("1:" & rngS.Row - 1)
c = 1
End If
If rngS.Row + rngS.Rows.Count - 1 < rc Then
Set rng2 = Rows(rngS.Row + rngS.Rows.Count & ":" & rc)
c = c + 2
End If
If rngS.Column > 1 Then
Set rng3 = Range(Columns(1), Columns(rngS.Column - 1))
c = c + 4
End If
If rngS.Column + rngS.Columns.Count - 1 < cc Then
Set rng4 = Range(Columns(rngS.Column + _
rngS.Columns.Count), Columns(cc))
c = c + 8
End If
inv_Range = ""
Do While c > 0
Select Case c
Case 1, 3, 5, 7, 9, 11, 13, 15:
If inv_Range = "" Then
inv_Range = rng1.Address
Else
inv_Range = Union(Range(inv_Range), rng1).Address
End If
c = c - 1
Case 2, 6, 10, 14:
If inv_Range = "" Then
inv_Range = rng2.Address
Else
inv_Range = Union(Range(inv_Range), rng2).Address
End If
c = c - 2
Case 4, 12:
If inv_Range = "" Then
inv_Range = rng3.Address
Else
inv_Range = Union(Range(inv_Range), rng3).Address
End If
c = c - 4
Case 8:
If inv_Range = "" Then
inv_Range = rng4.Address
Else
inv_Range = Union(Range(inv_Range), rng4).Address
End If
c = c - 8
End Select
Loop
End Function

Gruß K.Rola
Anzeige
AW: weitere Hilfen erwünscht
16.10.2004 18:49:17
Rolf
Hallo liebe K.Rola,
diese deine Anwort von vorgestern, I'm so sorry,
ist mir offenbar entgangen.
Dann hätte sich meine heutige Frage nämlich erübrigt.
Bezwecken tue ich das

Sub unusedrange_einfärben()
Dim aws As Worksheet
Dim ur As Range
Dim ci As Integer
Dim rngselection As Range
Randomize
ci = (Int((56 * Rnd) + 1))
Set aws = ActiveSheet
Set ur = aws.UsedRange
Set rngselection = Range(inv_Range(ur))
rngselection.Interior.ColorIndex = ci
End Sub

und zwar dann, wenn die UsedRange nicht
ganz den Bildschirm ausfüllt, damit's
ein bisschen optischer wirkt.
Tausend Dank + herzliche Grüße
Rolf
Anzeige
Ein-IF-Lösung
17.10.2004 00:45:10
Rolf
Hallo K.Rola,
aufgrund deiner Anregung habe ich,
nach dem alten Grundsatz "keine ifs, keine gotos"
eine Lösung mit nur einem if gefunden.
Die, m.E. sinnvolle, Prämisse ist allerdings,
dass die UsedRange nicht rechts bzw. unten anliegt.
Ich konnte es einfach nicht für mich behalten.
Herzliche Grüße
Rolf
Option Base 1

Sub invselect()
Dim x(4, 4)
Dim BE(4)
Dim a, b, c, d As Integer
Dim i, j As Integer
Dim rc, cc As Long
Dim ur As Range
rc = ActiveSheet.Rows.Count
cc = ActiveSheet.Columns.Count
Set ur = ActiveSheet.UsedRange
a = ur.Row
b = ur.Column
c = ur.Rows.Count + a - 1
d = ur.Columns.Count + b - 1
x(1, 1) = 1
x(1, 2) = 1
x(1, 3) = a - 1
x(1, 4) = cc
x(2, 1) = a
x(2, 2) = 1
x(2, 3) = c
x(2, 4) = b - 1
x(3, 1) = a
x(3, 2) = d + 1
x(3, 3) = c
x(3, 4) = cc
x(4, 1) = c + 1
x(4, 2) = 1
x(4, 3) = rc
x(4, 4) = cc
For i = 1 To 2
If x(i, 3) = 0 Or x(i, 4) = 0 Then
For j = 1 To 4
x(i, j) = x(4, j)
Next
End If
Next
For i = 1 To 4
Set BE(i) = Range(Cells(x(i, 1), x(i, 2)), Cells(x(i, 3), x(i, 4)))
Next
Union(BE(1), BE(2), BE(3), BE(4)).Select
End Sub

Anzeige
AW: Ein-IF-Lösung
K.Rola
Hallo,
sehr schön.
Kein Grundsatz aber eine Tatsache ist, dass bei der Art zu deklarieren in VB(A) nur die
jeweils letzte Variable in der Zeile den angestrebten Typ erhält, die anderen bleiben
Variant.
Sub invselect()
Dim x(4, 4)
Dim BE(4)
Dim a, b, c, d As Integer
Dim i, j As Integer
Dim rc, cc As Long
Dim ur As Range
richtig sollte es so aussehen:
Dim a As Integer, b As Integer, c As Integer, d As Integer
Wahrscheinlich nur ein Flüchtigkeitsfehler.
Gruß K.Rola
AW: Ein-IF-Lösung
17.10.2004 13:46:38
Rolf
Hallo K.Rola,
danke für Lob + Tipp
Schönen Sonntag
Rolf
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige