HERBERS Excel-Forum - das Archiv
SelectionChange Ereignis per Umschaltfläche an/aus
Ingo

Hallo VBA-Gemeinde,
Ich hab ein schönes Script gefunden, welches mir die Spalte und Zeile der aktuell markierten Zelle farbig Schattiert:
' Highlight the entire row and column for the ActiveCell.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Cells.Interior.ColorIndex = xlColorIndexNone
ActiveCell.EntireRow.Interior.ColorIndex = 36
ActiveCell.EntireColumn.Interior.ColorIndex = 43
End Sub

Ein kleiner aber gravierender Schönheitsfehler ist, dass beim Drucken diese Tabelle auch die Schattierung angezeigt wird, welche im SelectionChange Ereignis festgelegt wird.
Gibt es die Möglichkeit dieses Change Ereignis per Umschaltfläche Ein oder auszuschalten in dieser Form:
If ToggleButton1.Value = 0 Then
Stope das Change Ereignis und entferne restliche Schattierung
else
starte das Ereignis wieder neu...
end if...
Danke für Eure Hilfe:)

AW: SelectionChange Ereignis per Umschaltfläche an/aus
Rudi

Hallo,
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Cells.Interior.ColorIndex = xlColorIndexNone
If Not ToggleButton1 Then
ActiveCell.EntireRow.Interior.ColorIndex = 36
ActiveCell.EntireColumn.Interior.ColorIndex = 43
End If
End Sub
Gruß
Rudi

AW: Zeilen/Spaltenmarkierung mit Rechteck
Daniel

Hi
such mal im Archiv oder per Google nach "Excel" und "Fadenkreuz"
dort solltest du Codebeispiele finden, wie man diese Markierung der aktiven Zeile und Spalte nicht über umfärben, sondern über die Positionierung zweier Rechtecke erhält.
das hat dann folgende Vorteile
- die Formatierung auf deinem Blatt bleibt erhalten, dh du kannst dann auch mit Hintergrundfarben auf dem Blatt arbeiten, die bei deiner Methode zerstört werden
- du kannst für diese Rechtecke über die Eigenschaften festlegen, ob sie mit ausgedruckt werden sollen oder nicht, dh auf dem Bildschrim sind sie immer sichtbar, im Ausdruck nie.
- über die .Visible-Eigenschaft des Shapes kannst du die Rechtecke bei Bedarf auch auf dem Bildschirm ganz einfach ein- und ausblenden.
Gruß Daniel

AW: SelectionChange Ereignis per Umschaltfläche an/aus
Dirk

Hallo Ingo,
zwar habe ich keine Antwort auf deine Frage, aber vllt. eine sehr gute (bessere) Alternative.
Schau mal hier:
http://hajo-excel.de/vba_markieren_fadenkreuz.htm
MfG
Dirk

AW: SelectionChange Ereignis per Umschaltfläche an/aus
Sepp

Hallo Ingo,
' **********************************************************************
' Modul: Tabelle9 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub ToggleButton1_Click()
  If Not ToggleButton1 Then
    Application.EnableEvents = True
    Cells.Interior.ColorIndex = xlColorIndexNone
    ActiveCell.EntireRow.Interior.ColorIndex = 36
    ActiveCell.EntireColumn.Interior.ColorIndex = 43
  Else
    Application.EnableEvents = False
    Cells.Interior.ColorIndex = xlColorIndexNone
  End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Cells.Interior.ColorIndex = xlColorIndexNone
  Target(1, 1).EntireRow.Interior.ColorIndex = 36
  Target(1, 1).EntireColumn.Interior.ColorIndex = 43
End Sub

Gruß Sepp

AW: SelectionChange Ereignis per Umschaltfläche an/aus
Ingo

1000 Dank an Alle, vor allem das Script von Sepp ist für mich die Krönung des Tages :)
Besser gehts nicht mehr!

AW: SelectionChange Ereignis per Umschaltfläche an/aus
Ingo

Hallo nochmal,
eine kleine Ergänzungsfrage hätte ich noch zu Sepps genialen Script...
Könnte ich den Highlighter Bereich so ergänzen, dass beim Worksheet_SelectionChange immer die aktuell Markierte Zeile bei längeren Tabellen direkt in der zweiten Zeile unter der fixierten ersten Attributen Zeile angezeigt wird?
Das wäre dann echt ne perfekt fixiert u formatierte Ansicht für mich :))
Danke für Tipps in diese Richtung!

AW: SelectionChange Ereignis per Umschaltfläche
Daniel

Hi
Activewindow.ScrollRow = Selection.Row
Gruß Daniel

AW: SelectionChange Ereignis per Umschaltfläche
Ingo

Ja genau so soll es sein| Vielen Dank Daniel!!!
If "Danke das es euch gibt!!!" Then
"und ein genialiges Wochenende zusammen!"
end if

AW: SelectionChange Ereignis per Umschaltfläche
Ingo

Beim Testen ist mir gerade noch eine Sache aufgefallen die die Qualität meiner navigation sehr einschränken würde.
Ich habe eine Benutzerformular was beim anklicken von Zellen in meiner Tabelle sofort in dieses Formular daten anzeigt..Die aktualisierte Anzeige habe ich im Quelltextbereich der Arbeitsmappe so umgesetzt:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
' Textfelder
frmKontaktnavi.txtId.Value = Cells(ActiveCell.Row, 1).Value
frmKontaktnavi.txtFirma.Value = Cells(ActiveCell.Row, 2).Value
frmKontaktnavi.txtNachname.Value = Cells(ActiveCell.Row, 3).Value
frmKontaktnavi.txtVorname.Value = Cells(ActiveCell.Row, 4).Value
frmKontaktnavi.txtStrasse.Value = Cells(ActiveCell.Row, 5).Value
frmKontaktnavi.txtPlz.Value = Cells(ActiveCell.Row, 6).Value
..
End Sub
Nun kommt sepps Script ins Spiel das ich in den Quelltext Bereich der Navigationstabelle oben integriert habe:
Private Sub ToggleButton2_Click()
If Not ToggleButton2 Then
Application.EnableEvents = True
Cells.Interior.ColorIndex = xlColorIndexNone
ActiveCell.EntireRow.Interior.ColorIndex = 36
ActiveCell.EntireColumn.Interior.ColorIndex = 43
ToggleButton2.Caption = "Highlighter aus"
Else
Application.EnableEvents = False
Cells.Interior.ColorIndex = xlColorIndexNone
ToggleButton2.Caption = "Highlighter ein"
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Cells.Interior.ColorIndex = xlColorIndexNone
Target(1, 1).EntireRow.Interior.ColorIndex = 36
Target(1, 1).EntireColumn.Interior.ColorIndex = 43
ActiveWindow.ScrollRow = Selection.Row
End Sub
Das funktioniert auch wenn die Schattierung aktiv ist, aber wenn ich die Markierung über die Umschaltfläche Ausschalte wird wohl über: Application.EnableEvents = False auch die Workbook_SheetSelectionChange mit deaktiviert und es wird im benutzerform keine aktualisierung mehr angezeigt:(
Kann man nur "Sub Worksheet_SelectionChange" ausschalten ohne die Sub "Workbook_SheetSelectionChange" mit anzuhalten und die Benutzerform aktualisierung zu sprengen...
Danke nochmal für die viele Aktive Hilfe von euch :)

nimm Rudis Code! o.T.
Sepp

Gruß Sepp

AW: nimm Rudis Code! o.T.
Ingo

Guten Morgen zusammen,
ja cool stimmt Sepp, dieser Quelltext:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Cells.Interior.ColorIndex = xlColorIndexNone
If Not ToggleButton2 Then
ActiveCell.EntireRow.Interior.ColorIndex = 36
ActiveCell.EntireColumn.Interior.ColorIndex = 43
ToggleButton2.Caption = "Highlighter ein"
Else
ToggleButton2.Caption = "Highlighter aus"
End If
End Sub
bringt mir ja schon das gewünschte Ergebnis:) So macht navigieren in Excel Spaß
Ein Verhalten von der Toggel-Box(oder meinem Quelltext;) wundert mich allerdings etwas:
Wenn ich z.B. auf Zelle B2 stehe und dann auf "Highlighter ein" klicke steht immer noch "Highlighter ein" auf dem Toggel (ganz ok, beim nächsten klick in nen Zellbereich gehts dann los mit dem Highlight... und ich erneut auf Zelle B2 klicke steht immer noch "Highlighter ein" da und erst wenn ich einen anderen Zellbereich anklicke Ändert sich der ToggelButton auf "Highlighter aus"und er Highlighter ist deaktiviert...
Wenn ich allerdings auf b2 stehe auf "Highlighter ein" klicke und dann auf B3 ändert sichs sofort auf den Status "Highlighter aus" und Der Highlighter wird gleich Eingeschaltet...
Ist ja eigentlich nur ne kleinigkeit, aber man klickt ja automatisch nach dem Toggel einstellen als nächstes öfter mal auf die gleiche Zelle die vor bedienung des togggels als letztes angesprochen wurde( zumindest ich:)
Viel Text für die denk erst letzte Toggelfrage von mir- kann ich den Toggel (bzw meinen Quelltext) auch direkt bei B2, "Highlighter ein" B2 aktivieren?
Einen erfolgreichen Arbeistag zusammen
Ingo

AW: nimm Rudis Code! o.T.
Ingo

Habe übrigens eben ein und ausschalten vertauscht:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Cells.Interior.ColorIndex = xlColorIndexNone
If Not ToggleButton2 Then
ActiveCell.EntireRow.Interior.ColorIndex = 36
ActiveCell.EntireColumn.Interior.ColorIndex = 43
ToggleButton2.Caption = "Highlighter aus"
Else
ToggleButton2.Caption = "Highlighter ein"
End If
End Sub
...
Aber diese Lösung funktioniert ja jetzt schon zu 98,5%ig;
Tausend Dank nochmal an alle Mithelfer

AW: nimm Rudis Code! o.T.
Sepp

Hallo Ingo,
trenne die beiden aktionen.
' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub ToggleButton2_Click()
  If ToggleButton2 Then
    Cells.Interior.ColorIndex = xlColorIndexNone
    ToggleButton2.Caption = "Highlighter aus"
  Else
    ActiveCell.EntireRow.Interior.ColorIndex = 36
    ActiveCell.EntireColumn.Interior.ColorIndex = 43
    ToggleButton2.Caption = "Highlighter ein"
  End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Cells.Interior.ColorIndex = xlColorIndexNone
  If Not ToggleButton2 Then
    ActiveCell.EntireRow.Interior.ColorIndex = 36
    ActiveCell.EntireColumn.Interior.ColorIndex = 43
  End If
End Sub

Gruß Sepp

AW: nimm Rudis Code! o.T.
Ingo

OH WIE IST DAS SCHÖÖÖN !!!, 100%

SelectionChange Ereignis per Umschaltfläche an/aus
Ingo

Hallo VBA-Gemeinde,
Ich hab ein schönes Script gefunden, welches mir die Spalte und Zeile der aktuell markierten Zelle farbig Schattiert:
' Highlight the entire row and column for the ActiveCell.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Cells.Interior.ColorIndex = xlColorIndexNone
ActiveCell.EntireRow.Interior.ColorIndex = 36
ActiveCell.EntireColumn.Interior.ColorIndex = 43
End Sub

Ein kleiner aber gravierender Schönheitsfehler ist, dass beim Drucken diese Tabelle auch die Schattierung angezeigt wird, welche im SelectionChange Ereignis festgelegt wird.
Gibt es die Möglichkeit dieses Change Ereignis per Umschaltfläche Ein oder auszuschalten in dieser Form:
If ToggleButton1.Value = 0 Then
Stope das Change Ereignis und entferne restliche Schattierung
else
starte das Ereignis wieder neu...
end if...
Danke für Eure Hilfe:)

AW: SelectionChange Ereignis per Umschaltfläche an/aus
Rudi

Hallo,
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Cells.Interior.ColorIndex = xlColorIndexNone
If Not ToggleButton1 Then
ActiveCell.EntireRow.Interior.ColorIndex = 36
ActiveCell.EntireColumn.Interior.ColorIndex = 43
End If
End Sub
Gruß
Rudi

AW: Zeilen/Spaltenmarkierung mit Rechteck
Daniel

Hi
such mal im Archiv oder per Google nach "Excel" und "Fadenkreuz"
dort solltest du Codebeispiele finden, wie man diese Markierung der aktiven Zeile und Spalte nicht über umfärben, sondern über die Positionierung zweier Rechtecke erhält.
das hat dann folgende Vorteile
- die Formatierung auf deinem Blatt bleibt erhalten, dh du kannst dann auch mit Hintergrundfarben auf dem Blatt arbeiten, die bei deiner Methode zerstört werden
- du kannst für diese Rechtecke über die Eigenschaften festlegen, ob sie mit ausgedruckt werden sollen oder nicht, dh auf dem Bildschrim sind sie immer sichtbar, im Ausdruck nie.
- über die .Visible-Eigenschaft des Shapes kannst du die Rechtecke bei Bedarf auch auf dem Bildschirm ganz einfach ein- und ausblenden.
Gruß Daniel

AW: SelectionChange Ereignis per Umschaltfläche an/aus
Dirk

Hallo Ingo,
zwar habe ich keine Antwort auf deine Frage, aber vllt. eine sehr gute (bessere) Alternative.
Schau mal hier:
http://hajo-excel.de/vba_markieren_fadenkreuz.htm
MfG
Dirk

AW: SelectionChange Ereignis per Umschaltfläche an/aus
Sepp

Hallo Ingo,
' **********************************************************************
' Modul: Tabelle9 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub ToggleButton1_Click()
  If Not ToggleButton1 Then
    Application.EnableEvents = True
    Cells.Interior.ColorIndex = xlColorIndexNone
    ActiveCell.EntireRow.Interior.ColorIndex = 36
    ActiveCell.EntireColumn.Interior.ColorIndex = 43
  Else
    Application.EnableEvents = False
    Cells.Interior.ColorIndex = xlColorIndexNone
  End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Cells.Interior.ColorIndex = xlColorIndexNone
  Target(1, 1).EntireRow.Interior.ColorIndex = 36
  Target(1, 1).EntireColumn.Interior.ColorIndex = 43
End Sub

Gruß Sepp

AW: SelectionChange Ereignis per Umschaltfläche an/aus
Ingo

1000 Dank an Alle, vor allem das Script von Sepp ist für mich die Krönung des Tages :)
Besser gehts nicht mehr!

AW: SelectionChange Ereignis per Umschaltfläche an/aus
Ingo

Hallo nochmal,
eine kleine Ergänzungsfrage hätte ich noch zu Sepps genialen Script...
Könnte ich den Highlighter Bereich so ergänzen, dass beim Worksheet_SelectionChange immer die aktuell Markierte Zeile bei längeren Tabellen direkt in der zweiten Zeile unter der fixierten ersten Attributen Zeile angezeigt wird?
Das wäre dann echt ne perfekt fixiert u formatierte Ansicht für mich :))
Danke für Tipps in diese Richtung!

AW: SelectionChange Ereignis per Umschaltfläche
Daniel

Hi
Activewindow.ScrollRow = Selection.Row
Gruß Daniel

AW: SelectionChange Ereignis per Umschaltfläche
Ingo

Ja genau so soll es sein| Vielen Dank Daniel!!!
If "Danke das es euch gibt!!!" Then
"und ein genialiges Wochenende zusammen!"
end if

AW: SelectionChange Ereignis per Umschaltfläche
Ingo

Beim Testen ist mir gerade noch eine Sache aufgefallen die die Qualität meiner navigation sehr einschränken würde.
Ich habe eine Benutzerformular was beim anklicken von Zellen in meiner Tabelle sofort in dieses Formular daten anzeigt..Die aktualisierte Anzeige habe ich im Quelltextbereich der Arbeitsmappe so umgesetzt:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
' Textfelder
frmKontaktnavi.txtId.Value = Cells(ActiveCell.Row, 1).Value
frmKontaktnavi.txtFirma.Value = Cells(ActiveCell.Row, 2).Value
frmKontaktnavi.txtNachname.Value = Cells(ActiveCell.Row, 3).Value
frmKontaktnavi.txtVorname.Value = Cells(ActiveCell.Row, 4).Value
frmKontaktnavi.txtStrasse.Value = Cells(ActiveCell.Row, 5).Value
frmKontaktnavi.txtPlz.Value = Cells(ActiveCell.Row, 6).Value
..
End Sub
Nun kommt sepps Script ins Spiel das ich in den Quelltext Bereich der Navigationstabelle oben integriert habe:
Private Sub ToggleButton2_Click()
If Not ToggleButton2 Then
Application.EnableEvents = True
Cells.Interior.ColorIndex = xlColorIndexNone
ActiveCell.EntireRow.Interior.ColorIndex = 36
ActiveCell.EntireColumn.Interior.ColorIndex = 43
ToggleButton2.Caption = "Highlighter aus"
Else
Application.EnableEvents = False
Cells.Interior.ColorIndex = xlColorIndexNone
ToggleButton2.Caption = "Highlighter ein"
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Cells.Interior.ColorIndex = xlColorIndexNone
Target(1, 1).EntireRow.Interior.ColorIndex = 36
Target(1, 1).EntireColumn.Interior.ColorIndex = 43
ActiveWindow.ScrollRow = Selection.Row
End Sub
Das funktioniert auch wenn die Schattierung aktiv ist, aber wenn ich die Markierung über die Umschaltfläche Ausschalte wird wohl über: Application.EnableEvents = False auch die Workbook_SheetSelectionChange mit deaktiviert und es wird im benutzerform keine aktualisierung mehr angezeigt:(
Kann man nur "Sub Worksheet_SelectionChange" ausschalten ohne die Sub "Workbook_SheetSelectionChange" mit anzuhalten und die Benutzerform aktualisierung zu sprengen...
Danke nochmal für die viele Aktive Hilfe von euch :)

nimm Rudis Code! o.T.
Sepp

Gruß Sepp

AW: nimm Rudis Code! o.T.
Ingo

Guten Morgen zusammen,
ja cool stimmt Sepp, dieser Quelltext:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Cells.Interior.ColorIndex = xlColorIndexNone
If Not ToggleButton2 Then
ActiveCell.EntireRow.Interior.ColorIndex = 36
ActiveCell.EntireColumn.Interior.ColorIndex = 43
ToggleButton2.Caption = "Highlighter ein"
Else
ToggleButton2.Caption = "Highlighter aus"
End If
End Sub
bringt mir ja schon das gewünschte Ergebnis:) So macht navigieren in Excel Spaß
Ein Verhalten von der Toggel-Box(oder meinem Quelltext;) wundert mich allerdings etwas:
Wenn ich z.B. auf Zelle B2 stehe und dann auf "Highlighter ein" klicke steht immer noch "Highlighter ein" auf dem Toggel (ganz ok, beim nächsten klick in nen Zellbereich gehts dann los mit dem Highlight... und ich erneut auf Zelle B2 klicke steht immer noch "Highlighter ein" da und erst wenn ich einen anderen Zellbereich anklicke Ändert sich der ToggelButton auf "Highlighter aus"und er Highlighter ist deaktiviert...
Wenn ich allerdings auf b2 stehe auf "Highlighter ein" klicke und dann auf B3 ändert sichs sofort auf den Status "Highlighter aus" und Der Highlighter wird gleich Eingeschaltet...
Ist ja eigentlich nur ne kleinigkeit, aber man klickt ja automatisch nach dem Toggel einstellen als nächstes öfter mal auf die gleiche Zelle die vor bedienung des togggels als letztes angesprochen wurde( zumindest ich:)
Viel Text für die denk erst letzte Toggelfrage von mir- kann ich den Toggel (bzw meinen Quelltext) auch direkt bei B2, "Highlighter ein" B2 aktivieren?
Einen erfolgreichen Arbeistag zusammen
Ingo

AW: nimm Rudis Code! o.T.
Ingo

Habe übrigens eben ein und ausschalten vertauscht:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Cells.Interior.ColorIndex = xlColorIndexNone
If Not ToggleButton2 Then
ActiveCell.EntireRow.Interior.ColorIndex = 36
ActiveCell.EntireColumn.Interior.ColorIndex = 43
ToggleButton2.Caption = "Highlighter aus"
Else
ToggleButton2.Caption = "Highlighter ein"
End If
End Sub
...
Aber diese Lösung funktioniert ja jetzt schon zu 98,5%ig;
Tausend Dank nochmal an alle Mithelfer

AW: nimm Rudis Code! o.T.
Sepp

Hallo Ingo,
trenne die beiden aktionen.
' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub ToggleButton2_Click()
  If ToggleButton2 Then
    Cells.Interior.ColorIndex = xlColorIndexNone
    ToggleButton2.Caption = "Highlighter aus"
  Else
    ActiveCell.EntireRow.Interior.ColorIndex = 36
    ActiveCell.EntireColumn.Interior.ColorIndex = 43
    ToggleButton2.Caption = "Highlighter ein"
  End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Cells.Interior.ColorIndex = xlColorIndexNone
  If Not ToggleButton2 Then
    ActiveCell.EntireRow.Interior.ColorIndex = 36
    ActiveCell.EntireColumn.Interior.ColorIndex = 43
  End If
End Sub

Gruß Sepp

AW: nimm Rudis Code! o.T.
Ingo

OH WIE IST DAS SCHÖÖÖN !!!, 100%

Dialog-Beispiele
Bewerten Sie hier bitte das Excel-Portal