Microsoft Excel

Herbers Excel/VBA-Archiv

Makro (Change) auf bestimmte Bereiche einschränke | Herbers Excel-Forum


Betrifft: Makro (Change) auf bestimmte Bereiche einschränke von: Marco
Geschrieben am: 17.11.2009 21:29:32

Hallo,

ich habe mir vor Ewigkeiten ein VBA-Projekt zusammengebastelt, welches die Schriftfarbe bzw. die Zellfarbe in Abhängigkeit von bestimmten Eingaben (bei mir als Auswahlfelder) ändert. Dies funktioniert soweit auch alles super.

Da ich die Tabelle nun erweitern muss, kommt es zu Problemen. Egal, wo ich nämlich das Wort für die Bedingung (z.B. "Absage" oder "kein Angebot machen") eingebe, wird die gewünschte Formatierung ausgeführt.

Wie lässt sich dies einschränken?

Die Bedingungen für die Hintergrundfarbe befinden sich in der Spalte AK und die Bedingungen für die Schriftfarbe in der Spalte W.

Ich habe der Übersicht halber nur jeweils eine Bedingung im folgenden Code gelassen:

___________________________________

Private Sub Worksheet_Activate()

End Sub

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

End Sub

Private Sub Worksheet_Change(ByVal Target As Excel.Range)

'Wenn mehr als eine Zelle markiert wurde dann Makro beenden
If Target.Cells.Count > 1 Then Exit Sub

  Select Case Target.Value
'bei "Absage" Hintergrundfarbe grau
    Case "Absage"
      Range("B" & Target.Row & ":AX" & Target.Row).Interior.ColorIndex = 16

'bei "kein Angebot machen" Schriftfarbe schwarz
    Case "kein Angebot machen"
      Range("B" & Target.Row & ":AX" & Target.Row).Font.ColorIndex = 0
      
    End Select
End Sub

___________________________________

Vielen Dank schon mal im vorraus für Eure Hilfe!!!!!!

Viele Grüße

Marco

  

Betrifft: AW: Makro (Change) auf bestimmte Bereiche einschränke von: Peter Feustel
Geschrieben am: 17.11.2009 21:37:09

Hallo Marco,

Du kannst es so begrenzen: If Target.Column <> 2 Then Exit Sub
oder If Target.Row < 4 And Target.Row > 25 Then

Gruß Peter


  

Betrifft: AW: Makro (Change) auf bestimmte Bereiche einschränke von: Marco
Geschrieben am: 18.11.2009 13:46:35

Hallo Peter,

vielen Dank für Deine schnelle Antwort! Leider funktioniert es nicht mehr, wenn ich den Code so ändere:

Private Sub Worksheet_Activate()

End Sub
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

End Sub
Private Sub Worksheet_Change(ByVal Target As Excel.Range)

'Wenn mehr als eine Zelle markiert wurde dann Makro beenden
If Target.Cells.Count <> 2 Then Exit Sub

  Select Case Target.Value
'bei "Absage" Hintergrundfarbe grau
    Case "Absage"
      Range("B" & Target.Row & ":AX" & Target.Row).Interior.ColorIndex = 16

'bei "kein Angebot machen" Schriftfarbe schwarz
    Case "kein Angebot machen"
      Range("B" & Target.Row & ":AX" & Target.Row).Font.ColorIndex = 0
      
    End Select
End Sub
__________

Leider kann ich Deinen Vorschlag auch nicht nachvollziehen, was aber sicherlich daran liegt, dass ich keine Ahnung von VBA habe :-)

Kann man den VBA-Code nicht auf die Spalte AK und W beschränken?

Vielleicht hast Du ja noch eine Idee!

Viele Grüße und vielen Dank

Marco


  

Betrifft: AW: Makro (Change) auf bestimmte Bereiche einschränke von: Peter Feustel
Geschrieben am: 18.11.2009 16:58:18

Hallo Marco,

dann versuch es so:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Excel.Range)

'     Wenn mehr als eine Zelle markiert wurde dann Makro beenden
   If Target.Count > 1 Then Exit Sub
   
   If Target.Column <> 23 And Target.Column <> 37 Then Exit Sub

   Select Case Target.Value
'           bei "Absage" Hintergrundfarbe grau
      Case "Absage"
         Range("B" & Target.Row & ":AX" & Target.Row).Interior.ColorIndex = 16
'           bei "kein Angebot machen" Schriftfarbe schwarz
      Case "kein Angebot machen"
         Range("B" & Target.Row & ":AX" & Target.Row).Font.ColorIndex = 0
    End Select
    
End Sub
Gruß Peter


  

Betrifft: AW: Makro (Change) auf bestimmte Bereiche einschränke von: Marco
Geschrieben am: 19.11.2009 12:28:08

Vielen Dank!

Jetzt habe ich auch Peters Lösung verstanden.

Viele Grüße Marco


  

Betrifft: AW: Makro (Change) auf bestimmte Bereiche einschränke von: Björn B.
Geschrieben am: 18.11.2009 17:05:15

Hallo,

richtig lesen:
Peter schreibt:

If Target.Column <> 2 Then Exit Sub
If Target.Row < 4 And Target.Row > 25 Then

Du veränderst aber Code an ner Stelle, von der gar nicht die Rede war. Hier:
'Wenn mehr als eine Zelle markiert wurde dann Makro beenden
If Target.Cells.Count > 1 Then Exit Sub

Hast Du aus ">1" die Bedingung "<>2" gemacht. Du prüfst also, ob die Anzahl markierter Zellen ungleich 2 ist. Das ändere mal schnell wieder zurück ;-)

Die Zeilen von Peter baust du zusätzlich ein, am besten direkt nach der Prüfung, ob mehr als 1 Zelle markiert ist.
Peters 1. Zeile prüft z.B. ob Spalte ungleich 2 (nur bei Spalte B läuft Code weiter).

Verstanden? Kannst Du das anpassen?

Gruß
Björn


  

Betrifft: AW: Makro (Change) auf bestimmte Bereiche einschränke von: Marco
Geschrieben am: 19.11.2009 12:29:25

Danke Björn für die Erläuterung. Jetzt habe ich es verstanden :-)

Viele Grüße

Marco


Beiträge aus den Excel-Beispielen zum Thema "Makro (Change) auf bestimmte Bereiche einschränke"