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

Zellen Formatieren

Zellen Formatieren
Joachim
Hallo,
wie muss ich denn Target in Set RaBereich = Intersect(RaBereich, Range(Target.Address)) definieren.
Da kommt immer eine Fehlermeldung:
Private Sub CommandButton3_Click()
Dim RaBereich As Range, RaZelle As Range
Set RaBereich = Range("R")
Set RaBereich = Intersect(RaBereich, Range(Target.Address))
If RaBereich Is Nothing Then Exit Sub
For Each RaZelle In RaBereich
With RaZelle
Select Case UCase(.Value) ' UMWANDLUNG DER Eingabe in Großbuchstaben
Case "GREEN"
.Interior.ColorIndex = 4
.Font.ColorIndex = 1
Case "RED"
.Interior.ColorIndex = 3
.Font.ColorIndex = 1
Case "YELLOW"
.Interior.ColorIndex = 6
.Font.ColorIndex = 1
Case "BLUE"
.Interior.ColorIndex = 5
.Font.ColorIndex = 1
End Select
End With
Next RaZelle
Set RaBereich = Nothing
End Sub

Danke
Joachim
AW: Zellen Formatieren
12.11.2009 15:32:31
Björn
Hallo,
Code woanders herkopiert, was? ;-)
DAs funktioniert so nicht. Du hast Target nicht definiert.
Das ist aus einem SelectionChange Ereignis, das gibt dann das Target mit.
Wenn du das ganze über CommandButtpn aufrufst, dann fehlt das.
Was genau möchtest du denn? Was soll wann passieren?
Gruß
Björn
AW: Zellen Formatieren
12.11.2009 15:44:46
Joachim
Hi,
ich möchte einfach die Spalte R durchlaufen , und entsprechend dem Eintrag den Hintergrund färben.
das ist eigentlich alles.
GRuss
Joachim
AW: Zellen Formatieren
12.11.2009 15:53:17
Björn
Dann versuch es mal so.
Schau dir bitte auch die anderen Antworten an.
Hab meine "Kürzung" mit eingebaut, und auch ein "Case Else" dazu gemacht. Erklärung im Code.
Den Bereich solltest Du wenn möglich eingrenzen, dass nicht alle Zellen geprüft werden müssen.
Gruß
Björn B.
Private Sub CommandButton3_Click()
Dim RaBereich As Range, RaZelle As Range
Set RaBereich = Range("R:R")
'Makro wird schneller, wenn Du den Bereich engrenzen kannst, so werden über 65000 Zellen  _
gecheckt
'Eingrenzen z.B. so: Range("R1:R100")
For Each RaZelle In RaBereich
With RaZelle
.Font.ColorIndex = 1
Select Case UCase(.Value) ' UMWANDLUNG DER Eingabe in Großbuchstaben
Case "GREEN"
.Interior.ColorIndex = 4
Case "RED"
.Interior.ColorIndex = 3
Case "YELLOW"
.Interior.ColorIndex = 6
Case "BLUE"
.Interior.ColorIndex = 5
'Hier wird Zellfarbe auf "keine Füllung" gesetzt. Sonst bleibt es rot oder blau,
'wenn man den Wert wieder löscht
Case Else
.Interior.ColorIndex = xlNone
End Select
End With
Next RaZelle
Set RaBereich = Nothing
End Sub

Anzeige
Danke, so passts owT
12.11.2009 16:11:38
Joachim
Woher soll Excel wissen, was "TARGET" ist ?
12.11.2009 15:37:17
NoNet
Hallo Joachim,
das Objekt "TARGET" ist hier weder deklariert (mit DIM) noch definiert (mit SET).
woher soll Excel/VBA oder auch WIR denn wissen, was TARGET ist ?
Dieses Objekt existiert standardmässig nur in Excel Ereignismakros automatisch, wie z.B. in folgenden :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Private Sub Worksheet_Change(ByVal Target As Range)
etc.

Wie Du erkennen kannst, wird das Objekt hier (im Gegensatz zu Deinem Codebeispiel) bereist im Prozedurkopf deklariert (BYVAL).
Ich könnte mir vorstellen, dass du z.B. die markierten Zellen einfärben möchtest, dazu müsstest Du die SET-Anweisung austauschen :
Set RaBereich = Intersect(RaBereich, Selection)
Falls es das nicht war, dann beschreibe bitte exakt, WAS Du möchtest.
Gruß, NoNet
PS: Ist Range("R") ein definierter Bereichsnamen oder soll das die Spalte R sein ?
Falls es die Spalte R sein soll, dann bitte Code ändern : Set RaBereich = Columns("R:R")
Anzeige
kürzer...
12.11.2009 15:46:19
Björn
da du immer den gleichen Wert für Font.ColorIndex setzt, brauchst du das nicht in die Case-Anweisung jedes mal einbauen.
Hier reicht also:

With RaZelle
.Font.ColorIndex = 1  'reicht hier einmal!
Select Case UCase(.Value) ' UMWANDLUNG DER Eingabe in Großbuchstaben
Case "GREEN"
.Interior.ColorIndex = 4
Case "RED"
.Interior.ColorIndex = 3
Case "YELLOW"
.Interior.ColorIndex = 6
Case "BLUE"
.Interior.ColorIndex = 5
End Select
End With
Da es sich aber um den Standardwert handelt (Schwarz), könntest du es auch ganz weg lassen, wenn es dir nur um die Zellfarbe geht.
Gruß
Björn
Anzeige
Danke dir auch owT
12.11.2009 16:12:14
Joachim
"TARGET" ist Finanzmathematik
12.11.2009 17:02:56
WF
ausgeschrieben:
Transeuropean Automated Real-time Gross settlement Express Transfer system
Salut WF
Da hinten aus der letzten Ecke wieder... ;-)
12.11.2009 17:52:15
NoNet
Hey WF,
das sind mir ja die "Richtigen" : Keine Ahnung vom "Saufen" (VBA) haben, aber mit den großen Hunden mitpinkeln wollen ;-)
Das mit dem TARGET hättest Du ja auch mal früher sagen können...
Gruß, NoNet
..wo hast du denn das her ? :-) Gruß
12.11.2009 18:37:03
robert
Ganz einfach : Rechtsklick - Eigenschaften ;-) _oT
12.11.2009 18:38:55
NoNet
_oT
OT:Hi folks, get warmed up...
13.11.2009 00:27:47
Renee
don't cool down ;-)
Renée will be back in around 3 weeks....
Hi, Renée, someone is hardly waiting for...
13.11.2009 03:24:14
Luc:-?
...you - you gave him your mailaddress 2 years ago and he tried to contact you, not knowing anything about the following events...
Welcome, princess of the dark origin of mankind... ;-)
Luc :-?
Anzeige
Allerdings ist dein PS kein Standard-VBA,...
12.11.2009 20:03:02
Luc:-?
...NoNet... ;-)
R als Bereichsname ist nicht zu empfehlen (mind RR oder unter xl12 RRRR). Ansonsten heißt es Range("R:R") oder besser Columns(18). Alles andere verursacht zusätzlichen Rechenaufwand!
Gruß Luc :-?
Mein "PS" empfiehlt auch keinen Bereichsnamen
12.11.2009 20:13:53
NoNet
Moin Luc,
"Mein PS" enthielt keine Empfehlung zur Benamung eines Bereiches, sondern nur eine vermutete Nachfrage diesbezüglich bzw. eine Empfehlung für Columns("R:R").
Ich persönlich würde eine gesamte Spalte allenfalls "SpalteR" benennen oder besser noch "SprechenderNameFuerSpalteR".
Ob nun Range("R:R") oder Columns("R:R") oder Columns(18) - das sehe ich unabhängig der dafür benötigten Rechenzeit jedoch eher gelassen... ;-)
Gruß, NoNet
Anzeige
Bzgl Columns sehe ich das nicht so gelassen...
12.11.2009 20:40:05
Luc:-?
...wie du, Thomas,
dazu gab's hier auch schon mal 'ne Diskussion... ;-)
Gruß Luc :-?

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige