Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1656to1660
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

Warum funzt der Code nicht

Warum funzt der Code nicht
21.11.2018 20:49:29
Frank
Hallo Zusammen!
Ich habe mir gerade selber den folgenden Code gebastelt:
Private Sub CommandButton14_Click()
Sheets("Kalender").Range("B6:Y36") = ""
Sheets("Kalender").Range("B6:Y36").Interior.ColorIndex = xlNone
a = 6
b = ComboBox1.ListIndex * 34
c = a + b
With Worksheets("Kalender")
.Range(.Cells(6, 2), .Cells(36, 25)).Value = .Range(.Cells(c, 79), .Cells(c + 34, 102)).Value
.Range(.Cells(6, 2), .Cells(36, 25)).Interior.ColorIndex = .Range(.Cells(c, 79), .Cells(c +  _
34, 102)).Interior.ColorIndex
End With
End Sub
Die Daten werden entsprechend geändert, bei neuer Auswahl in der ComboBox. Aber die Hintergrundfarbe bleibt weiß, obwohl es verschiedene Farben gibt. Was mache ich falsch und wer würde mir bitte gern helfen.
Für tolle Ratschläge wie immer sehr dankbar!
Gruß Frank H.

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Warum funzt der Code nicht
21.11.2018 21:05:47
onur
Da musst du schon Zelle für Zelle umfärben mit
For each cell in Range.....
z.B.:
dim cell
For Each cell In Range(Cells(1, 2), Cells(3, 2))
cell.Interior.ColorIndex = cell.Offset(0, -1).Interior.ColorIndex
Next

AW: Warum funzt der Code nicht
21.11.2018 21:11:00
Daniel
Hi
das Problem ist, dass nur in Verbindung mit .VALUE ein Array erzeugt wird, welches alle Einzelwerte des Zellbereichs enthält.
bei allen anderen Zelleigenschaften ist das nicht möglich, hier können immer nur Einzelwerte abgefragt oder eingesetzt werden (wenn du dich fragst warum: die Jungs von Microsoft haben das so programmiert)
wenn du jetzt den ColorIndex eines größeren Zellbereichs abfragst, bekommst du daher nur dann ein Ergebnis, wenn alle Zellen dieses Zellbereichs den gleichen Colorindex haben, ansonsten ist das Ergebnis NULL (keine gültigen Daten)
Ebenso kannst du einem größeren Zellbereich immer nur einheitlich einfärben (alle Zellen die gleiche Farbe)
Wenn du jetzt bei einem größeren Zellbereich mit uneinheitlicher Formatierung die Formate übertragen willst, so geht das in einem Schritt nur für alle Formattypen gemeinsam mit Copy-PasteSpecial xlpasteFormats
(Pinselsymbol)
wenn du nur einzelne Formattypen übertragen willst, musst du dann in einer Schleife das Format jeder Zelle einzeln übertragen. also im Prinzip so:
for each Zelle in .Range(.Cells(6, 2), .Cells(36, 25))
Zelle.Interior.Colorindex = Zelle.Offest(c - 6, 77).Interior.Colorindex
Next

da das Ändern eines Formates in Excel aber keine automatischen Aktionen auslöst wie das Ändern von Werten, ist die Schleife hier deutlich schneller, daher kann man hier auch gut auf die Array-Variante verzichten.
gruß Daniel
Anzeige
AW: Warum funzt der Code nicht
21.11.2018 21:17:40
Frank
Hallo Ihr zwei!
Danke für eure Hilfe. werde mich nun daran versuchen. Sollte es nicht klappen melde ich morgen noch einmal!
Gruß Frank H.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige