Makro ohne Zwischenablage

  • #1
P

PCDjoe

Bekanntes Mitglied
Themenersteller
Dabei seit
01.08.2001
Beiträge
4.143
Reaktionspunkte
0
Ort
31638 Stöckse
Ola,

ich benutze seit jahren ein aufgezeichnetes Makro, um zwei Buchstaben, zwischen denen die Einfügemarke steht, gegeneinander auszutauschen. Das Ding hat nur einen Nachteil: Es macht jedes mal die Zwischenablage platt. Es gibt sicher eine Abwandlung, die ohne Zwischenablage funktioniert: Wäre schön, wenn das jemand wüsste :)

Code:
Sub TauschZwei()
'
' TauschZwei Makro
' Makro aufgezeichnet am 21.06.2001 
'
  Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
  Selection.Cut
  Selection.MoveRight Unit:=wdCharacter, Count:=1
  Selection.Paste
  Selection.MoveLeft Unit:=wdCharacter, Count:=1
End Sub
 
  • #2
Hallo PCDJoe,

dann probier mal diese Version.

Gruß Matjes :)
Code:
Sub TauschZwei_fuerPCDJoe_ohneBenutzungDerZwischenablage()
    
  Dim mytext As String
    
  mytext = Selection.Text
  If Len(mytext) < 2 Then
    MsgBox (Es sind weniger als 2 Zeichen selektiert.)
  Else
    mytext = Right(mytext, 1) & Left(mytext, Len(mytext) - 1)
    Selection.Text = mytext
  End If

End Sub
 
  • #3
ola,

danke, Matjes, aber die Funktionsweise stimmt so nicht: Zwei zeichen zu markieren ist nicht praktikabel, das hab ich schon versucht: Die Schreibmarke steht zwischen den zu vertauschenden Zeichen (ohne Markierung und da soll es auch wieder hin.
Ich hab also am Anfnag und am Ende ein wenig cursorschubsen angehängt :) Jetzt funktioniert es, sieht aber elende aus :) Geht das besser?
Code:
Sub TauschZwei_fuerPCDJoe_ohneBenutzungDerZwischenablageKorr()
    
  Dim mytext As String
  Selection.MoveRight Unit:=wdCharacter, Count:=1
  Selection.MoveLeft Unit:=wdCharacter, Count:=2, Extend:=wdExtend
  mytext = Selection.Text
  If Len(mytext) < 2 Then
    MsgBox (Es sind weniger als 2 Zeichen selektiert.)
  Else
    mytext = Right(mytext, 1) & Left(mytext, Len(mytext) - 1)
    Selection.Text = mytext
  End If
Selection.MoveRight Unit:=wdCharacter, Count:=1
Selection.MoveLeft Unit:=wdCharacter, Count:=1
End Sub
 
  • #4
Hallo PCDJoe,

ich hab jetzt deinen alten Makro genommen und nur Cut und Paste ersetzt.
Code:
Sub TauschZwei_new()
  Dim Mytext As String
    Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    Mytext = Selection.Text
    Selection.Text = 
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.Text = Mytext
    Selection.MoveLeft Unit:=wdCharacter, Count:=1
End Sub
Gruß Matjes :)
 
  • #5
Ola,

danke, so einfach kann das Leben also sein :)
 
  • #6
Hab ich mir auch gedacht  ;D
 
Thema:

Makro ohne Zwischenablage

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.966
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben