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

Toggle und letzte aktive Zelle

Toggle und letzte aktive Zelle
04.12.2020 09:44:10
Eisi
Guten Morgen :-)
nachfolgender Code läuft fast perfekt.
Wenn ich den Code nach Aktivierung mit dem Toggle-Button deaktiviere, dann steht mein Curser nicht mehr in meiner letzten aktiven Zelle.
Wie muss der Code ergänzt werden, damit ich sehen kann, wo der Curser steht (=letzte aktive Zelle)?
Vielen Dank für die Hilfe.
VG Eisi :-)
' Mit diesem Code wird die Zeile markiert, in der der Curser gerade steht.
'
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim b As Range
Set b = ActiveCell
If ToggleButton1 Then Exit Sub  'Wenn Toggle gedrueckt, dann wird die Zeile im Sheet  _
nicht mehr markiert!
Rows(ActiveCell.Row).Select
b.Activate
End Sub

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Toggle und letzte aktive Zelle
04.12.2020 09:46:06
MCO
Moin!
Welches Ergebnis liefert den Target?
Target.activate
Gruß, MCO
AW: Toggle und letzte aktive Zelle
04.12.2020 10:15:24
Eisi
Hallo MCO,
danke für das schnelle Feedback.
Leider kann ich das fachlich nicht umsetzen.
Ich habe jetzt mal b.Activate gegen Target.Activate getauscht und stelle fest, dass das aktivieren der Zeile zuverlässiger läuft als vorher. Vorher musste ich zweimal in die Zellen springen, bis die Zeile aktiviert wurde. Aber wahrscheinlich war das so nicht gedacht.
Das löst aber jetzt noch nicht mein Grundproblem, dass ich die aktive Zelle sehen möchte.
Wahrscheinlich muss Dein Code an eine andere Stelle platziert werden?
Magst Du mir da nochmal etwas unter die Arme greifen?
Vielen Dank.
VG Eisi :-)
Anzeige
AW: Toggle und letzte aktive Zelle
04.12.2020 10:44:24
Eisi
?
Den Code würde ich im Moment so verstehen:
DIM b -> deklariert mit die Variable b als Bereich
Set b -> sagt aus, dass in der aktiven Zelle der Bereich gemeint ist
If toggl…. -> Wenn aktiviert, verlasse Sub
Rows …. -> die aktive Zelle wird als Zeile aktiviert und nicht die Zelle alleine
b.Activate -> sagt aus, das die aktive Zelle wieder aktiv ist?
Ich sehe aber die aktive Zelle nicht!
Target.Activate -> verstehe ich als, aktiviere Ziel, das wäre hier "ActiveCell"
Mehr kann ich über den Code nichts sagen. Was fehlt mir um die Lösung zu verstehen?
' Mit diesem Code wird die Zeile markiert, in der der Curser gerade steht.
'
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim b As Range
Set b = ActiveCell
If ToggleButton1 Then Exit Sub  'Wenn Toggle gedrueckt, dann wird die Zeile im Sheet  _
nicht mehr markiert!
Rows(ActiveCell.Row).Select
b.Activate
'    Target.Activate
End Sub

Anzeige
AW: Toggle und letzte aktive Zelle
04.12.2020 11:45:49
Eisi
Ich brauche bitte noch Unterstützung. Danke :-)
AW: Toggle und letzte aktive Zelle
04.12.2020 12:44:25
Yal
Hallo Eisi,
es liegt daran, dass Du in dem If einen Exit Sub machst. Alle was danach kommt wird ignoriert.
Wenn die Bedingung umgedreht ist, wird die Zeile nur markiert, wenn Toggle aus ist.
Ich dachte zuerst, b sei nicht notwendig, aber wenn Du nach oben oder nach links mehrere Zellen markiesrt, geht die erst ausgewählte Zelle verloren.
Enable Event wird unterdrückt, weil Du in der Aktion eine Markierung bewirkt, die das Ereignis nochmal anfeuert. Ursprungliche ActiveCell würde dabei verloren gehen.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim b
Set b = ActiveCell
Application.EnableEvents = False
If Not False Then Target.EntireRow.Select
b.Activate
Application.EnableEvents = True
End Sub
Viel Erfolg
Yal
Anzeige
AW: Toggle und letzte aktive Zelle
04.12.2020 14:48:49
Eisi
Hallo Yal,
Dein Code hat zumindest für mich den Vorteil, wenn die Zeile selektiert ist, dass ich die Zelle, in der der Cursor gerade steht, ändern kann.
Wenn ich die Zeilenmarkierung mit dem Toggle ausschalte, sehe ich die letzte Zelle leider immer noch nicht.
Ich habe meinen (Deinen) Code mal optimiert und unten angehängt.
So als Idee:
Könnte ich mir die Adresse der letzten aktiven Zelle merken und wenn ich den Toggle ausschalte einen neuen Sub aufrufen, in dem die letzte aktive Zelle gespeichert ist?
Danke für die Hilfe :-)
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim b
Set b = ActiveCell
If ToggleButton1.Value = True Then
Application.EnableEvents = False
Target.EntireRow.Select
b.Activate
Application.EnableEvents = True
Else
Exit Sub
End If
With ToggleButton1
.BackColor = IIf(.Value = True, RGB(0, 255, 0), RGB(255, 255, 0))
End With
End Sub

Anzeige
AW: Toggle und letzte aktive Zelle
04.12.2020 15:28:32
Yal
Oops!
ich stelle jetzt fest, dass in meinem Vorschlag nicht
If Not False Then Target.EntireRow.Select
sondern
If Not ToggleButton1 Then Target.EntireRow.Select
If ToggleButton1 then
und
If ToggleButton1.Value = True then
sind übrigens vollkommene Equivalent (Value ist Default-Eigenschaft).
Das einzige Unterschied zwischen dein Code und meins (gemeint ist den korrigierten) ist, dass Du den Recall von b.Activate innerhalb der Bedingung abrufst. Da diese Reaktivierung nur notwendig ist, wenn die Selektierung auf die ganze Zeile gemacht wird, sind beide Version gleich.
Das Ausschalten/Umschalten von ToggleButton müsste in einer eigenen Ereignisprozedure stattfinden: entweder machst Du eine Selektion oder Du schaltest um. Beide gelichzeitig kann nicht sein.
um die Selektion und die ActiveCell beim Umschalten zu restaurieren, muss diese ausserhab speichern
Private memActiveCell As Range
Private memSelection As Range
Private Sub ToggleButton1_Click()
If ToggleButton1 Then
ToggleButton1.BackColor = RGB(0, 255, 0)
Else
ToggleButton1.BackColor = RGB(255, 255, 0)
End If
Application.EnableEvents = False
memSelection.Select
memActiveCell.Activate
Application.EnableEvents = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Set memActiveCell = ActiveCell
Set memSelection = Target
Application.EnableEvents = False
If Not ToggleButton1 Then Target.EntireRow.Select
memActiveCell.Activate
Application.EnableEvents = True
End Sub
Viel Erfolg
Yal
Anzeige
AW: Toggle und letzte aktive Zelle
07.12.2020 09:38:52
Eisi
https://www.herber.de/bbs/user/142132.xlsm
Hallo Yal,
Dein Code hatte zwar kurz funktioniert, aber irgendwas passt da noch nicht.
Weil Excel den Laufzeitfehler 91 aufruft.
Objektvariable oder With-Blockvariable nicht festgelegt.
memSelection.Select
memActiveCell.Activate
Ich kann das Problem leider nicht auflösen.
Bitte nochmal um Unterstützung.
Herzlichen Dank.
GLG Eisi :-)
AW: Toggle und letzte aktive Zelle
07.12.2020 11:11:03
Yal
Hallo Eisi,
es sind zwei Ereignis-Prozeduren. Nur die zweite initialisiert die gegebenen Variablen beim ersten Lauf. Spricht, wenn Du zuerst die erste Aufrust, bekommst Du diese Fehler.
Wenn Du die Zweite aufrufst, in dem Du eine Zelle oder ein Bereich selektierst, dann sollte das ToggleButton1_Click nicht mehr mekern.
Aternativ setzst Du in ToggleButton1_Click einen
On Error Resume Next

bevor den
Application.EnableEvents = False
Viel Erfolg
Yal
Anzeige
AW: Toggle und letzte aktive Zelle
07.12.2020 12:45:18
Eisi
Hallo Yal,
jetzt passt es. Dein Code ist im Arbeitsprozess sehr hilfreich und macht das Arbeiten einfacher,
freut mich sehr.
Vielen herzlichen Dank für Deine Hilfe.
GLG Eisi :-)
Vielen Dank für die Rückmeldung. oT
07.12.2020 12:52:44
Yal

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige