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

Letzte aktivierte Zelle auswählen

Letzte aktivierte Zelle auswählen
30.07.2008 22:48:03
Dieter.K
Hallo Forum und Nachtschwärmer!
Mit folgenden Aufruf in dem aktivierten Tabellenblatt (geschützt) wird der Inhalt der Zellen B1-B4 in dem Userform ausgegeben, kann dort bearbeitet und in die Zellen zurückgeschrieben werden.
Gibt es eine Möglichkeit die zuletzt aktivierte (und geänderte) Zelle nach dem schließen des Userforms auszuwählen? Zur Zeit wähle ich immer die Zelle AA1 (in ausgeblendetem Bereich) an.
Hier mein Code
'If Not Application.Intersect(Target, Range("B46,B65,B84,B103")) Is Nothing Then
'ActiveSheet.Unprotect Password:="12345"
'frmKalk.Show
'Range("AA1").Select
'ActiveSheet.Protect Password:="12345"
'End If
Hat jemand eine Idee?
Danke für Eure Hilfe.
Gruß
Dieter.K

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Letzte aktivierte Zelle auswählen
30.07.2008 23:35:40
Daniel
Hi
im Prinzip doch so:
dim letzteZelle as range
set letzteZelle = ActiveCell

'If Not Application.Intersect(Target, Range("B46,B65,B84,B103")) Is Nothing Then
'ActiveSheet.Unprotect Password:="12345"
'frmKalk.Show
letzteZelle.Select
'ActiveSheet.Protect Password:="12345"
'End If
Gruß, Daniel

AW: Letzte aktivierte Zelle auswählen
31.07.2008 00:02:03
Dieter.K
Hallo Daniel,
das funzt leider nicht. Der Blattschutz wird dann nicht aufgehoben und Zelle kann nicht geändert werden.
So habe ich Deinen Vorschlag eingbaut:
'Dim letzteZelle As Range
'Set letzteZelle = ActiveCell
'If Not Application.Intersect(Target, Range("B46,B65,B84,B103")) Is Nothing Then
'ActiveSheet.Unprotect Password:="12345"
'frmKalk.Show
'Set letzteZelle = ActiveCell
'ActiveSheet.Protect Password:="12345"
'End If
Aber, funzt nicht.
Danke trotzdem für Deinen Vorschlag.
Gruß
Dieter.K

Anzeige
... Bahnhof ?
30.07.2008 23:47:00
Matthias
Hallo
Das ist aber sicher nicht der Code um die Zellen B1-B4 in dem Userform auszugeben.
bzw. der der in die Zellen zurückschreibt.
Um überhaupt einen Ansatz zu haben,
müsste man schon den richtigen Code sehen.
Und wenn Du die Werte im UForm änderst und zurückschreibst in die Zellen B1:B4, so heißt das lange noch nicht, das die ActiveCell, auch die ist welche als letztes geändert wurde.
Du kannst ja die Zellen ändern auch ohne sie zu aktivieren.
Also ist ohne richtigen Code alles nur RätselRaten
Die Antwort von Daniel ist somit also auch nur eine Vermutung.
Gruß Matthias

Anzeige
AW: ... Bahnhof ?
31.07.2008 00:13:11
Dieter.K
Hallo Matthias,
hier einmal der gesamte Code aus dem Worksheet. So funktioniert es ja, aber ich möchte nicht die Zelle H39 anwählen (war vorher AA1 aus einem anderen Worksheet mit dem gleichen Code, Fehler von mir beim Kopieren) da ich sonst immer scollen muß, wenn z.B. Zelle "D273" geändert wurde.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim rngBereich As Range
Set rngBereich = Range("C10,C23,C36,C39,C43:C46,C56:C58,C62:C65")
Set rngBereich = Union(rngBereich, Range("C75:C77,C81:C84,C94:C96,C100:C103,C113:C115,C119:C122, _
C132:C134,C137:C140"))
Set rngBereich = Union(rngBereich, Range("C150:C151,C154:C157,C167:C168,C171:C178,C188,C190, _
C194,C197,C228"))
Set rngBereich = Union(rngBereich, Range("D8:D11,D13:D26,D28:D39,D41:D58,D60:D77,D79:D96,D98: _
D115,D117:D134,D136:D151"))
Set rngBereich = Union(rngBereich, Range("D153:D168,D170:D178,D180:D189,D192:D199,D213:D232, _
D236:D266,D273:D275"))
Set rngBereich = Union(rngBereich, Range("E8:E11,E13:E26,E28:E39,E41:E58,E60:E77,E79:E96,E98: _
E115,E117:E134,E136:E151,E153:E168"))
Set rngBereich = Union(rngBereich, Range("E170:E178,E180:E190,E192:E199,E205:E206,E210:E211, _
E213:E232,E236:E266,E273:E275"))
If Not Application.Intersect(Target, rngBereich) Is Nothing Then
ActiveSheet.Unprotect Password:="12345"
frmkalk.Show 'hier werden Stückzahlen und Eurobeträge geändert
Range("H39").Select
ActiveSheet.Protect Password:="12345"
End If
If Not Application.Intersect(Target, Range("B46,B65,B84,B103,B122,B140,B157,B197:B198,B205,B210, _
B274,B275")) Is Nothing Then
ActiveSheet.Unprotect Password:="12345"
frmKalkulationsdaten.Show 'hier wird Text geändert
Range("H39").Select
ActiveSheet.Protect Password:="12345"
End If
On Error GoTo ERRORHANDLER
ERRORHANDLER: Range("H39").Select
End Sub


Gruß
Dieter.K

Anzeige
AW: ... Bahnhof ?
31.07.2008 01:14:41
Daniel
Hi
mal ne Frage, welche Zelle soll den genau am ende selektiert werden?
- die die der Anwender doppelt angeklickt hat, um das Makro zu starten?
- eine Zelle, die durch die Userform verändert wurde?
prinzipiell ist grade bei Userforms ne beispieldatei sehr hilfreich, weil man damit auch gleich was ausprobieren kann. So ist es nur theoretische Rumraterrei und es gibt vielleicht auch ein paar relevante Randbedingungen, die dir nicht wichtig genug erschienen sind, um sie hier zu bereichten.
Gruß, Daniel

AW: ... Bahnhof ?
31.07.2008 01:14:00
Daniel
Hi
mal ne Frage, welche Zelle soll den genau am ende selektiert werden?
- die die der Anwender doppelt angeklickt hat, um das Makro zu starten?
- eine Zelle, die durch die Userform verändert wurde?
prinzipiell ist grade bei Userforms ne beispieldatei sehr hilfreich, weil man damit auch gleich was ausprobieren kann. So ist es nur theoretische Rumraterrei und es gibt vielleicht auch ein paar relevante Randbedingungen, die dir nicht wichtig genug erschienen sind, um sie hier zu bereichten.
Gruß, Daniel

Anzeige
Alternativer Ansatz
31.07.2008 09:22:00
Jürgen
Hallo Dieter,
wenn Du lediglich erreichen möchtest, dass nach Doppelklick und Ausführen der Userform die Zelle nicht zum editieren geöffnet ist, reicht das Hinzufügen der Zeile
Cancel = True
um die Ausführung des Doppelklicks abzubrechen (das Ereignis heißt ja nicht umsonst BeforeDoubleClick), also z.B. so

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim rngBereich As Range
Set rngBereich = Range("C10,C23,C36,C39,C43:C46,C56:C58,C62:C65")
Set rngBereich = Union(rngBereich, Range("C75:C77,C81:C84,C94:C96,C100:C103,C113:C115,C119:C122, _
_
_
C132:C134,C137:C140"))
Set rngBereich = Union(rngBereich, Range("C150:C151,C154:C157,C167:C168,C171:C178,C188,C190, _
C194,C197,C228"))
Set rngBereich = Union(rngBereich, Range("D8:D11,D13:D26,D28:D39,D41:D58,D60:D77,D79:D96,D98: _
D115,D117:D134,D136:D151"))
Set rngBereich = Union(rngBereich, Range("D153:D168,D170:D178,D180:D189,D192:D199,D213:D232, _
D236:D266,D273:D275"))
Set rngBereich = Union(rngBereich, Range("E8:E11,E13:E26,E28:E39,E41:E58,E60:E77,E79:E96,E98: _
E115,E117:E134,E136:E151,E153:E168"))
Set rngBereich = Union(rngBereich, Range("E170:E178,E180:E190,E192:E199,E205:E206,E210:E211, _
E213:E232,E236:E266,E273:E275"))
If Not Application.Intersect(Target, rngBereich) Is Nothing Then
ActiveSheet.Unprotect Password:="12345"
frmkalk.Show 'hier werden Stückzahlen und Eurobeträge geändert
Range("H39").Select
ActiveSheet.Protect Password:="12345"
Cancel = True
End If
If Not Application.Intersect(Target, Range("B46,B65,B84,B103,B122,B140,B157,B197:B198,B205,B210, _
_
_
B274,B275")) Is Nothing Then
ActiveSheet.Unprotect Password:="12345"
frmKalkulationsdaten.Show 'hier wird Text geändert
Range("H39").Select
ActiveSheet.Protect Password:="12345"
Cancel = True
End If
End Sub


Gruß, Jürgen

Anzeige
immernoch ... Bahnhof ?
31.07.2008 10:09:44
Matthias
Hallo
Zitat:
Gibt es eine Möglichkeit die zuletzt aktivierte (und geänderte) Zelle nach dem schließen des Userforms auszuwählen? Zur Zeit wähle ich immer die Zelle AA1 (in ausgeblendetem Bereich) an.
Warum wählst Du denn aber AA1 oder jetzt eben H39 erst aus, wenn Du das garnicht willst ?
Mit dem Worksheet_BeforeDoubleClick löst Du doch nur
die Aktion frmKalkulationsdaten.Show aus, wenn Du in einem bestimmtzen Bereich doppelklickst.
So wie ich es bisher verstanden habe änderst Du nun im UserForm irgendwelche Texte
   (frmKalkulationsdaten.Show 'hier wird Text geändert)
und die Du dann zurückschreibst in die Tabelle.
.. und so geht dann Dein Code weiter:
    frmKalkulationsdaten.Show 'hier wird Text geändert
    Range("H39").Select
    ActiveSheet.Protect Password:="12345"
    End If
Du selectierst hier H39 (wenn Du das nicht willst, warum machst Du es denn dann überhaupt.)
In Deinem geposteten Code wird nicht eine einzige Zelle geändert. Wer soll also dann wissen,
welche Zelle Du meinst.
Oder meinst Du die Zelle in die Du den Doppelklick gesetzt hast?
dann lass doch das selectieren der Zelle H39 weg und vor ERROR setz ein EXIT SUB
sonst läuft der Code immer bis zum End SUB durch und H39 wird immer aktiviert(egal was Du machst)

Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
On Error GoTo ERRORHANDLER
Dim rngBereich As Range
Set rngBereich = Range("C10,C23,C36,C39,C43:C46,C56:C58,C62:C65")
Set rngBereich = Union(rngBereich, Range("C75:C77,C81:C84,C94:C96,C100:C103,C113:C115,C119:C122, _
C132: C134 , C137: C140 "))
Set rngBereich = Union(rngBereich, Range("C150:C151,C154:C157,C167:C168,C171:C178,C188,C190,  _
C194,C197,C228"))
Set rngBereich = Union(rngBereich, Range("D8:D11,D13:D26,D28:D39,D41:D58,D60:D77,D79:D96,D98: _
D115 , D117: D134 , D136: D151 "))
Set rngBereich = Union(rngBereich, Range("D153:D168,D170:D178,D180:D189,D192:D199,D213:D232, _
D236: D266 , D273: D275 "))
Set rngBereich = Union(rngBereich, Range("E8:E11,E13:E26,E28:E39,E41:E58,E60:E77,E79:E96,E98: _
E115 , E117: E134 , E136: E151 , E153: E168 "))
Set rngBereich = Union(rngBereich, Range("E170:E178,E180:E190,E192:E199,E205:E206,E210:E211, _
E213: E232 , E236: E266 , E273: E275 "))
If Not Application.Intersect(Target, rngBereich) Is Nothing Then
ActiveSheet.Unprotect Password:="12345"
frmkalk.Show 'hier werden Stückzahlen und Eurobeträge geändert
ActiveSheet.Protect Password:="12345"
End If
If Not Application.Intersect(Target, Range("B46,B65,B84,B103,B122,B140,B157,B197:B198,B205,B210, _
B274,B275")) Is Nothing Then
ActiveSheet.Unprotect Password:="12345"
frmKalkulationsdaten.Show 'hier wird Text geändert
ActiveSheet.Protect Password:="12345"
End If
Exit Sub
ERRORHANDLER:
Range("H39").Select
On Error GoTo 0
End Sub


Gruß Matthias

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige