AW: mit Makro in Bearbeitungsmodus und Text markieren
16.03.2009 10:04:17
fcs
Hallo Jakob,
um einen mehrzeiligen Text aus der Zwischenablage in eine einzelene Zelle zu schreiben muss man unter VBA einen kleinen Umweg gehen.
Ob du den Parameter ReplaceCR auf False setzen muss weiss ich nicht. Der Wert "True" verhindert bei bestimmten Texten, dass unerwünschte Leerzeilen in der Zelle erscheinen.
Gruß
Franz
Dein bisheriges Makro - angepasst:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$C$19:$I$36" And [G6] = "PK" Or [G6] = "BD" _
Then
Call ClipBoardInZelleEinfuegen(rngZelle:=Target, ReplaceCR:=True)
Else
End If
End Sub
'Einfügeprozedur in einem allgemeinen Modul
'Bitte darauf achten, das im VBA-Editor unter Extras-->Verweise die _
"Microsoft Forms x.y Object Library" als verfügbar markiert ist.
Sub ClipBoardInZelleEinfuegen(rngZelle As Range, Optional ReplaceCR As Boolean = True)
Dim Zwischenablage As DataObject, strText As String
Set Zwischenablage = New DataObject
Zwischenablage.GetFromClipboard
If Zwischenablage.GetFormat(1) = True Then
If MsgBox(Prompt:="Text in Zelle: " & rngZelle.Address & vbLf & vbLf _
& rngZelle.Range("A1").Text & vbLf & vbLf & "ersetzen durch:" & vbLf & vbLf _
& Zwischenablage.GetText, Buttons:=vbYesNo + vbQuestion, _
Title:="Text aus Zwischenablage in Zelle einfügen") = vbYes Then
strText = Zwischenablage.GetText
If ReplaceCR = True Then
'ggf. CarriageReturns ersetzen
rngZelle.Value = VBA.Replace(strText, vbCr, "")
Else
rngZelle.Value = strText
End If
End If
Else
MsgBox "In der Zwischenablage ist kein Text"
End If
End Sub