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

Bestimmte Zellen in einem gegebenen Bereich anspre

Bestimmte Zellen in einem gegebenen Bereich anspre
04.06.2018 23:12:51
Barbaraa
Hallo
Bin auf der Suche nach einer alternativen Lösung zu meinem bereits funktionierenden Weg.
Keine Beispieldatei, aber ein Makro, das alles beschreibt (damit auch alle helfen können, die keine fremden makrobeladenen Dateien runterladen wollen).
Dieses Makro in das Tabelle1-Modul kopieren, dann eine beliebige Zelle im Bereich "C2:K10" ändern, damit das Makro ausgelöst wird.
Ich möchte bestimmte Zellen mit nur einem Parameter (Spalte) ansprechen. Der Rest steht im Makro.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rBereich As Range   'Gegebener Bereich
Dim rZelle As Range     'Auslöser-Zelle
Dim Reihe
'Vorbereitung
Set rBereich = Range("C2:K10")      'Einen Bereich festlegen
rBereich.Interior.Color = vbGreen   'Diesen mal grün einfärben
'Jetzt geht's los
For Each rZelle In Target
If Not Application.Intersect(rZelle, rBereich) Is Nothing Then
' Als Beispiel für das Ansprechen bestimmter Zellen soll hier
' die zweite und fünfte Zelle der Zeile der bearbeiteten rZelle
' innerhalb vom rBereich eingefärbt werden.
' Hier meine Lösung:
Dim lZeilennummer As Long
With rBereich
lZeilennummer = rZelle.Row - .Row + 1
.Cells(lZeilennummer, 2).Interior.Color = vbRed
.Cells(lZeilennummer, 5).Interior.Color = vbRed
End With
' Nun mein Problem:
' Mich stört, dass ich da erst lZeilennummer bestimmen muss, und dass die
' gewünschten Zellen mit dieser lZeilennummer angesprochen werden müssen.
' Kann man da nicht direkt einen Range bilden, der nur jene Zeile innerhalb von
' rBereich umfasst, in der rZeile liegt?
'set Reihe = ?
' Ziel: Die gewünschten Zellen 2 und 5 einparametrig anzusprechen.
' Ungefähr so:
With rBereich
'Reihe(2).Interior.Color = vbCyan
'Reihe(5).Interior.Color = vbCyan
End With
End If
Next rZelle     'Auf zur nächsten Zelle,
'nur für den Fall, dass gleichzeitig mehrere Zellen
'verändert wurden.
End Sub
' Und tschüss
Ich habe mich bemüht, verständlich und klar zu beschreiben.
LG, Barbara

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bestimmte Zellen in einem gegebenen Bereich anspre
05.06.2018 05:42:51
Hajo_Zi
Hallo Barbara,
in der Art
Option Explicit                                     ' Variablendefinition erforderlich
Private Sub Worksheet_Change(ByVal Target As Range)
'* H. Ziplies                                  *
'* 21.06.15                                    *
'* erstellt von HajoZiplies@web.de             *
'* http://Hajo-Excel.de/
' Füllfarbe
' für Schrift RaZelle.Font.ColorIndex
Dim RaBereich As Range                          ' Variable für Bereich
Dim RaZelle As Range                            ' Variable für Zelle
Set RaBereich = Range("L22:M39, O21:O26")       ' Bereich der Wirksamkeit
' noch mehr Bereiche
'Set RaBereich = Union(Range("C11:AG11 , C13:AG13, C15:AG15 , C17:AG17"), _
'    Range("C35:AE35, C37:AE37, C43:AG43, C45:AG45 , C47:AG47 , C49:AG49"), _
'    Range("C67:AF67 , C69:AF69 , C75:AG75 , C77:AG77 , C79:AG79 , C81:AG81"), _
'    Range("C99:AF99 , C101:AF101, C107:AG107 , C109:AG109 , C111:AG111"), _
'    Range("C127:AG127 , C129:AG129 , C131:AG131 , C133:AG133 , C139:AF139"), _
'    Range("C155:AG155, C157:AG157 , C159:AG159 , C161:AG161 , C163:AG163"), _
'    Range("C179:AF179 , C181:AF181, C187:AG187 , C189:AG189 , C191:AG191"))
' ab Vesion XP braucht der Schutz nicht aufgehoben werden
' Formatierung bei Schutz kann über Dialog Schutz eingestellt werden
' Zelle die in dem Bereich liegen auf die Variable schreiben
' damit werden nur noch die Zellen bearbeitet die im vorgegeben Bereich liegen
' jede Zelladresse ist einzeln angegeben
Set RaBereich = Intersect(RaBereich, Target)
If Not RaBereich Is Nothing Then
'ActiveSheet.Unprotect ("Passwort")
For Each RaZelle In RaBereich
With RaZelle
Select Case UCase(.Value)           ' Umwandlung der Eingabe in Großbuchstaben
Case "1"
.Interior.Color = 0         ' Füllfarbe Schwarz
.Font.Color = 16777215      ' Schriffarbbe weiß
.NumberFormat = "General"   ' Zellenformat Standard
Case "2"
.Interior.Color = 65535     ' Füllfarbe Gelb
' Schriffarbe automatisch
.Font.ColorIndex = xlAutomatic
.NumberFormat = "General"
Case "3"
.Interior.Color = 255       ' Füllfarbe Rot
.NumberFormat = ";;;"       ' Zellformat nicht sichtbar
Case "4"
.Interior.Color = 65280     ' Füllfarbe Grün
.Font.ColorIndex = xlAutomatic
.NumberFormat = "General"
Case "KLAUS"
.Interior.Color = 16711680  ' Füllfarbe blau
.Font.Color = 12632256      ' Schriftfarbe Grau - 25%
.NumberFormat = "General"
Case Else
' keine Füllfarbe, ColorIndex nicht Color
.Interior.ColorIndex = xlNone
.Font.ColorIndex = xlAutomatic
.NumberFormat = "General"
End Select
End With
Next RaZelle
'ActiveSheet.protect ("Passwort")
End If
Set RaBereich = Nothing                         ' Variable leeren
End Sub
Die meisten bauen Deine Datei nicht nach. Die Zeit hat schon jemand investiert.
Ein Nachbau sieht meist anders aus als das Original. Darum sollte das Original verlinkt werden.
Die meisten möchten es am Original testen um den gleichen Fehler zu erhalten.
Benutze hier im Forum die Funktion zum hochladen. Falls Du die nicht benutzen möchtest beachte, von unsicheren Servern wie z.B. www.file-upload.net lade ich keine Datei runter. (lt. Einschätzung meines Virenprogramms)

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Anzeige
For Each rColumn In Target.Columns (owT)
05.06.2018 13:20:45
EtoPHG

AW: For Each rColumn In Target.Columns (owT)
05.06.2018 21:29:49
Barbaraa
Ihr versteht mich nicht.
Ich wollte wissen, was man da für die ? im Code schreiben kann.
Egal. Ich gehe es langsam an und habe eine neue Frage gestellt. Ein bisschen mehr basic.
Danke jedenfalls für Eure Bemühungen.
LG, Barbara
AW: For Each rColumn In Target.Columns (owT)
06.06.2018 23:36:42
Barbaraa
Und es hat geholfen.
Mullit hat den entscheidenden Hinweis geliefert.
Nicht rows(2), sondern rows(2).cells erlaubt mir, die einzelnen Zellen in dieser Reihe mit einem (statt bisher mit zwei) Parameter anzusprechen.
Und das wäre die gesuchte Antwort, falls es wen interessiert:
Private Sub Worksheet_Change(ByVal Target As Range)
'Vorbereitung
Dim rBereich As Range   'Gegebener Bereich
Set rBereich = Range("C2:K10")      'Einen Bereich festlegen
rBereich.Interior.Color = vbGreen   'Diesen mal grün einfärben
'Jetzt geht's los
If Not Application.Intersect(Target, rBereich) Is Nothing Then
With rBereich
' Hier mein bisheriger Weg:
Dim lZeilennummer As Long
lZeilennummer = Target.Row - .Row + 1
.Cells(lZeilennummer, 2).Interior.Color = vbRed
.Cells(lZeilennummer, 5).Interior.Color = vbRed
' Und hier mein gefundenes Ziel
With .Rows(Target.Row - .Row + 2).Cells
.Cells(2).Interior.Color = vbBlue
.Cells(5).Interior.Color = vbBlue
End With
End With
End If
End Sub
LGB
Anzeige

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige