Logik bei KLick in Zelle?
#11
Moin

ich habe dei Aufgabe durch eure Hilfe so gelöst
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Target.Address = "$C$21" Then
      Range("D13:K13").Interior.Color = vbYellow
  ElseIf Target.Address = "$D$21" Then
      Range("D13:K13").Interior.Color = vbYellow
  ElseIf Target.Address = "$E$21" Then
      Range("D13:K13").Interior.Color = vbYellow
  ElseIf Target.Address = "$F$21" Then
      Range("D13:K13").Interior.Color = vbYellow
  ElseIf Target.Address = "$G$21" Then
      Range("D13:K13").Interior.Color = vbYellow
  ElseIf Target.Address = "$H$21" Then
      Range("D13:K13").Interior.Color = vbYellow
  ElseIf Target.Address = "$C$28" Then
      Range("D13:K13").Interior.Color = vbYellow
  ElseIf Target.Address = "$D$28" Then
      Range("D13:K13").Interior.Color = vbYellow
  ElseIf Target.Address = "$E$28" Then
      Range("D13:K13").Interior.Color = vbYellow
  ElseIf Target.Address = "$F$28" Then
      Range("D13:K13").Interior.Color = vbYellow
  ElseIf Target.Address = "$G$28" Then
      Range("D13:K13").Interior.Color = vbYellow
  ElseIf Target.Address = "$H$28" Then
      Range("D13:K13").Interior.Color = vbYellow
     ElseIf Target.Address = "$C$35" Then
      Range("D13:K13").Interior.Color = vbYellow
  ElseIf Target.Address = "$D$35" Then
      Range("D13:K13").Interior.Color = vbYellow
  ElseIf Target.Address = "$E$35" Then
      Range("D13:K13").Interior.Color = vbYellow
  ElseIf Target.Address = "$F$35" Then
      Range("D13:K13").Interior.Color = vbYellow
  ElseIf Target.Address = "$G$35" Then
      Range("D13:K13").Interior.Color = vbYellow
  ElseIf Target.Address = "$H$35" Then
      Range("D13:K13").Interior.Color = vbYellow
  ElseIf Target.Address = "$C$20" Then
      Range("D12:K12").Interior.Color = vbRed
  ElseIf Target.Address = "$D$20" Then
      Range("D12:K12").Interior.Color = vbRed
  ElseIf Target.Address = "$E$20" Then
      Range("D12:K12").Interior.Color = vbRed
  ElseIf Target.Address = "$F$20" Then
      Range("D12:K12").Interior.Color = vbRed
  ElseIf Target.Address = "$G$20" Then
      Range("D12:K12").Interior.Color = vbRed
  ElseIf Target.Address = "$H$20" Then
      Range("D12:K12").Interior.Color = vbRed
  ElseIf Target.Address = "$C$27" Then
      Range("D12:K12").Interior.Color = vbRed
  ElseIf Target.Address = "$D$27" Then
      Range("D12:K12").Interior.Color = vbRed
  ElseIf Target.Address = "$E$27" Then
      Range("D12:K12").Interior.Color = vbRed
  ElseIf Target.Address = "$F$27" Then
      Range("D12:K12").Interior.Color = vbRed
  ElseIf Target.Address = "$G$27" Then
      Range("D12:K12").Interior.Color = vbRed
  ElseIf Target.Address = "$H$27" Then
      Range("D12:K12").Interior.Color = vbRed
  ElseIf Target.Address = "$C$34" Then
      Range("D12:K12").Interior.Color = vbRed
  ElseIf Target.Address = "$D$34" Then
      Range("D12:K12").Interior.Color = vbRed
  ElseIf Target.Address = "$E$34" Then
      Range("D12:K12").Interior.Color = vbRed
  ElseIf Target.Address = "$F$34" Then
      Range("D12:K12").Interior.Color = vbRed
  ElseIf Target.Address = "$G$34" Then
      Range("D12:K12").Interior.Color = vbRed
  ElseIf Target.Address = "$H$34" Then
      Range("D12:K12").Interior.Color = vbRed
  ElseIf Target.Address = "$C$19" Then
      Range("D11:K11").Interior.Color = vbCyan
  ElseIf Target.Address = "$D$19" Then
      Range("D11:K11").Interior.Color = vbCyan
  ElseIf Target.Address = "$E$19" Then
      Range("D11:K11").Interior.Color = vbCyan
  ElseIf Target.Address = "$F$19" Then
      Range("D11:K11").Interior.Color = vbCyan
  ElseIf Target.Address = "$G$19" Then
      Range("D11:K11").Interior.Color = vbCyan
  ElseIf Target.Address = "$H$19" Then
      Range("D11:K11").Interior.Color = vbCyan
  ElseIf Target.Address = "$C$26" Then
      Range("D11:K11").Interior.Color = vbCyan
  ElseIf Target.Address = "$D$26" Then
      Range("D11:K11").Interior.Color = vbCyan
  ElseIf Target.Address = "$E$26" Then
      Range("D11:K11").Interior.Color = vbCyan
  ElseIf Target.Address = "$F$26" Then
      Range("D11:K11").Interior.Color = vbCyan
  ElseIf Target.Address = "$G$26" Then
      Range("D12:K12").Interior.Color = vbCyan
  ElseIf Target.Address = "$H$26" Then
      Range("D11:K11").Interior.Color = vbCyan
  ElseIf Target.Address = "$C$33" Then
      Range("D11:K11").Interior.Color = vbCyan
  ElseIf Target.Address = "$D$33" Then
      Range("D11:K11").Interior.Color = vbCyan
  ElseIf Target.Address = "$E$33" Then
      Range("D11:K11").Interior.Color = vbCyan
  ElseIf Target.Address = "$F$33" Then
      Range("D11:K11").Interior.Color = vbCyan
  ElseIf Target.Address = "$G$33" Then
      Range("D11:K11").Interior.Color = vbCyan
  ElseIf Target.Address = "$H$33" Then
      Range("D11:K11").Interior.Color = vbCyan
  End If
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
 Dim rngBereich As Range
 Set rngBereich = Range("D11:K13")
 If Not Intersect(Target, rngBereich) Is Nothing Then
     rngBereich.Interior.Color = xlNone
 End If
End Sub

 
es ging einfach nur um eine Logik, nach der mir nach Eingabe in bestimmte Zellen, bestimmte andere Zellen angezeigt werden, damit man nicht den Zeilen "verrutscht".


Danke
P.S. Da es immer mehrere Lösungen für Herausforderungen/ Probleme gibt, sollte man nicht böse sein, wenn "seine" Lösung nicht gewählt wird ;)
Top
#12
Das hat nix mit "böse sein" zu tun!  :21:
Hier lesen genug Leute quer, denen ein Blick über den Tellerrand genehm ist, denn mein Einwand war durchaus berechtigt.

Dass Dein _SelectionChange erheblich gekürzt werden kann, deshalb nur am Rande.
Schließlich bist Du mit Deiner Lösung zufrieden.

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#13
Für Optimierungen bin ich immer zu haben.

Wie kann ich denn meine 3 Bereiche des "Selection _change" optimieren?

Und ich habe deine Lösung nicht als schlecht oder ähnliches empfunden, sie war für mich als VBA-NOOB schlichtweg zu viel ;)
Top
#14
So werden aus Deinen 112 Zeilen deren 10:

Microsoft Excel Objekt Tabelle2
Option Explicit 
 
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
If Not Intersect(Target, Range("C19:H35")) Is Nothing Then 
  Select Case Target.Row Mod 7 
    Case 0: Range("D13:K13").Interior.Color = vbYellow 
    Case 1: Range("D11:K11").Interior.Color = vbCyan 
    Case 6: Range("D12:K12").Interior.Color = vbRed 
  End Select 
End If 
End Sub 

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
[-] Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:
  • Silvr
Top
#15
Zitat:Aufgrund der PN von LuckyJoe habe ich mich entschlossen, die Vorgehensweise der temporären bed. Form. zur farblichen Markierung (ohne Variablen) mal der Allgemeinheit zu zeigen:
...

Hallo Ralf,

eine sehr schöne Lösung - danke für den Tipp.
Herzliche Grüße aus dem Rheinland
Jörg

[Windows 10, Microsoft 365]
Top
#16
Hi @RPP63

nachdem ich deinen Code eingesetzt habe, hat die MArkierung der bestimmten Zellen nicht mehr hingehauen. Statt wie vorher:

Klick in C19,26,33 --> Markierung Zeile 11
Klick in C20,27,34 --> Markierung Zeile 12
Klick in C21,28,35 --> Markierung Zeile 13

wuerden die Zeilen mit deinem Code um 2 Zeilen versetzt markiert. Das hängt bestimmt mit RowMode 7 zusammen, oder? Der Zeilenabstand nach unten ist ja gleich 7, nur nach oben nicht ;), da ist er 8  :20: verwirrt ich bin...

Ich habe jetzt wieder meinen "alten" genommen.
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste