Cursorsteuerung und Kopieren

Bild

Betrifft: Cursorsteuerung und Kopieren von: Jens_Pu
Geschrieben am: 10.02.2005 16:46:01

Hallo Excelfreunde,

mit nachfolgenden Routinen steuere ich in einer Excelmappe die Bewegungsrichtung des Cursors:


      
Public gblnCursorStatus As Boolean
Public gintCursorRichtung As Integer
   
Private Sub Workbook_Activate()
  
'Start-Cursoreinstellungen merken
  gblnCursorStatus = Application.MoveAfterReturn
  gintCursorRichtung = Application.MoveAfterReturnDirection
  
'Cursoreinstellung festlegen
  Application.MoveAfterReturn = True
  Application.MoveAfterReturnDirection = xlToRight
End Sub

Private Sub Workbook_Deactivate()
  
'Start-Cursoreinstellungen wieder herstellen
  Application.MoveAfterReturnDirection = gintCursorRichtung
  Application.MoveAfterReturn = gblnCursorStatus
End Sub 


     Code eingefügt mit Syntaxhighlighter 3.0


Das funktioniert auch bis ich was kopieren möchte.
Markieren, kopieren und just in dem Moment wo ich zu einer anderen Arbeitsmappe wechsle, um es dort einzufügen, wird die Zwischenablage geleert.
Such nach Erklärungen und evtl. Abhilfe.

Gruß Jens
Bild


Betrifft: AW: Cursorsteuerung und Kopieren von: Ulf
Geschrieben am: 10.02.2005 17:16:36

Durch den Mappenwechsel wird der Code ausgeführt und dadurch der CutCopyMode
aufgehoben. Kein Ausweg!

Ulf


Bild


Betrifft: AW: glaub ich nicht ;-) von: Jens_Pu
Geschrieben am: 10.02.2005 19:22:29

Hallo Ulf,

vielen Dank für das Stichwort CutCopyMode.
So kam ich auf exakt die Lösung von Sepp.

Gruß Jens


Bild


Betrifft: Vorübergehend EnableEvents von: Beate Schmitz
Geschrieben am: 10.02.2005 18:41:33

Hallo Jens,

füge in ein Modul der Datei aus der du kopieren möchtest folgende Makros, damit werden Ereignismakros wie deine ausgeschaltet:



Sub EnableEvents_aus() 
Application.EnableEvents = False
End Sub


Dann kannst du kopieren, ohne dass sich die Zwischenablage leert. Nach Rückkehr zur Ausgangsdatei darfst du aber nicht vergessen, mit diesem Makro Ereignisprozeduren wieder anzuschalten:


Sub EnableEvents_an()  
Application.EnableEvents = True 
End 

Sub 
Gruß,
Beate


Bild


Betrifft: AW: Auch eine Möglichkeit... von: Jens_Pu
Geschrieben am: 10.02.2005 19:22:39

Hallo Beate,

danke für Deinen Tipp.
Behalte es mal im Hinterkopf.
Momentan verfolge ich die Strategie mit CutCopyMode.

Gruß Jens


Bild


Betrifft: AW: Cursorsteuerung und Kopieren von: Josef Ehrensberger
Geschrieben am: 10.02.2005 18:48:42

Hallo Jens!

Alternativ zu Beates Vorschlag, könntest du auch im Deactivate abfragen,
ob gerade was in der Zwichenablage steht!


Private Sub Workbook_Deactivate()
If Application.CutCopyMode = False Then
  'Start-Cursoreinstellungen wieder herstellen
  Application.MoveAfterReturnDirection = gintCursorRichtung
  Application.MoveAfterReturn = gblnCursorStatus
End If
End Sub



Gruß Sepp

P.S.: Rückmeldung nicht vergessen!


Bild


Betrifft: AW: Favorit von: Jens_Pu
Geschrieben am: 10.02.2005 19:22:49

Hallo Sepp,

genau auf diese Lösung bin ich nach Ulf's posting auch gekommen.
Danke für Deine Antwort.

Gruß Jens


Bild


Betrifft: AW: Favorit von: Ulf
Geschrieben am: 10.02.2005 19:40:20

Damit ist doch aber deine ursprüngliche Absicht nicht mehr erreicht.

Ulf


Bild


Betrifft: AW: jein von: Jens_Pu
Geschrieben am: 10.02.2005 19:49:33

Hallo Ulf,

ich mache ess jetzt so:


      
Private Sub Workbook_Activate()
  
'Cursoreinstellung festlegen
  Application.MoveAfterReturn = True
  Application.MoveAfterReturnDirection = xlToRight
End Sub

Private Sub Workbook_Deactivate()
  
'Cursoreinstellung zurücksetzen
  If Application.CutCopyMode = False Then
    Application.MoveAfterReturnDirection = xlDown
    Application.MoveAfterReturn = 
True
  
End If
End Sub 


     Code eingefügt mit Syntaxhighlighter 3.0


So ganz ist es nicht das was mir vorschwebte.
Erklärung: Normalerweise ist die Cursorbewegung ja auf "unten" eingestellt.
Nun habe ich verschiedene Mappen, bei denen ich "rechts" benötige. So entstand meine Idee. Das mit dem merken des Anfangszustandes klappt aber spätestens dann nicht mehr, wenn ich mehrere dieser "gesteuerten" Mappen offen habe und in anderer Reihenfolge schließe. Am meisten hat mich aber gestört, dass ich nicht kopieren konnte. Deswegen habe ich mich jetzt dazu entschieden es "starr" zu steuern. Oder hast Du noch einen genialeren Einfall?

Gruß Jens


Bild


Betrifft: AW: jein von: Ulf
Geschrieben am: 10.02.2005 20:25:48

Keine Idee, ich weiß auch gar nicht, wozu man dieses MoveAfterReturn eigentlich braucht.

Ulf


Bild


Betrifft: AW: hä? von: Jens_Pu
Geschrieben am: 10.02.2005 20:38:49

Hi,

je nach Art der Tabelle macht es doch Sinn "rechts" oder "unten" eingestellt zu haben, oder? Hier ein Beispiel:
 
 ABC
1NameVornameStraße
2NN1VN1Str1
3NN2VN2Str2
4NN3VN3Str3
5NN4VN4Str4
6NN5VN5Str5
7NN6VN6Str6
8   
9   
10ArtikelStückzahl 
11Artikel11 
12Artikel220 
13Artikel33 
14Artikel44 
15Artikel56 
16Artikel680 
 
Diagramm - Grafik - Excel Tabellen einfach im Web darstellen    Excel Jeanie HTML  3.0    Download  

Gruß Jens


Bild


Betrifft: AW: hä? von: Josef Ehrensberger
Geschrieben am: 10.02.2005 20:45:39

Hallo Jens!

Probier mal das:


      
'Allgemeines Modul
'benötigt den Verweis auf "Microsoft Forms X.X Object Library"

Option Explicit
Dim myText

Sub ZwischenablgeIn()
Dim Zwischenablage As DataObject

Set Zwischenablage = New DataObject
On Error Resume Next
   Zwischenablage.GetFromClipboard
   myText = Zwischenablage.GetText(1)


End Sub

Sub ZwischenablgeOut()
Dim Zwischenablage As DataObject

Set Zwischenablage = New DataObject

   Zwischenablage.SetText myText
   Zwischenablage.PutInClipboard


End Sub

'DieseArbeitsmappe
Option Explicit

Public gblnCursorStatus As Boolean
Public gintCursorRichtung As Integer
   
Private Sub Workbook_Activate()
ZwischenablgeIn
  
'Start-Cursoreinstellungen merken
  gblnCursorStatus = Application.MoveAfterReturn
  gintCursorRichtung = Application.MoveAfterReturnDirection
  
'Cursoreinstellung festlegen
  Application.MoveAfterReturn = True
  Application.MoveAfterReturnDirection = xlToRight
ZwischenablgeOut
End Sub

Private Sub Workbook_Deactivate()
ZwischenablgeIn
  
'Start-Cursoreinstellungen wieder herstellen
  Application.MoveAfterReturnDirection = gintCursorRichtung
  Application.MoveAfterReturn = gblnCursorStatus
ZwischenablgeOut
End Sub 


     Code eingefügt mit Syntaxhighlighter 3.0




Gruß Sepp

P.S.: Rückmeldung nicht vergessen!


Bild


Betrifft: AW: hä? von: Ulf
Geschrieben am: 10.02.2005 21:21:02

Das funktioniert dann aber nur mit Texten!

Ulf


Bild


Betrifft: ja das ist klar! o.T. von: Josef Ehrensberger
Geschrieben am: 10.02.2005 21:22:20

Gruß Sepp


Bild


Betrifft: AW: Na denn... von: Jens_Pu
Geschrieben am: 10.02.2005 22:41:33

Hallo Ulf,

dann kann ich mir das Testen ja sparen.
Schade. So von der ersten Betrachtung erschien es mir ideal.

Gruß Jens


Bild


Betrifft: AW: hä? von: Ulf
Geschrieben am: 10.02.2005 21:19:58

Falsch ausgedrückt, ich meine nicht, dass das generell sinnlos ist, nur ich brauche es nie!

Ulf


Bild


Betrifft: AW: ich schon o.T. von: Jens_Pu
Geschrieben am: 10.02.2005 22:39:10




 Bild

Beiträge aus den Excel-Beispielen zum Thema "Cursorsteuerung und Kopieren"