19.04.2016, 12:57
(Dieser Beitrag wurde zuletzt bearbeitet: 25.04.2016, 11:41 von Rabe.
Bearbeitungsgrund: Code als Code formatiert
)
Guten Tag liebe Experten
Ich habe folgenden interessanten Code gefunden und nun frage ich mich, ob das auch im Excel VBA gehen könnte? Noch scheitert es am SystemFocusClass? Vielen Dank für jeden Hinweis.
Gruss
Stefan1
Ich habe folgenden interessanten Code gefunden und nun frage ich mich, ob das auch im Excel VBA gehen könnte? Noch scheitert es am SystemFocusClass? Vielen Dank für jeden Hinweis.
Gruss
Stefan1
Code:
'zusätzliche Deklarationen
Private Declare Function SendMessage Lib "user32.dll" _
Alias "SendMessageA" ( _
ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
lParam As Any) As Long
Private Const EM_GETSEL As Long = &HB0
Private Const WM_GETTEXT As Long = &HD
Public Sub test()
Dim nSelStart As Long
Dim nSelEnd As Long
Dim sText As String
If InStr(1, SystemFocusClass, "textbox", vbTextCompare) > 0 Or SystemFocusClass.Text = "Edit" Then
On Error Resume Next
Call SendMessage(SystemFocusHwnd, EM_GETSEL, VarPtr(nSelStart), nSelEnd)
sText = SPACE$(nSelEnd + 2)
If Err.Number = 0 Then
Call SendMessage(SystemFocusHwnd, WM_GETTEXT, nSelEnd + 1, ByVal sText)
sText = Mid$(sText, nSelStart + 1, nSelEnd - nSelStart)
If Err.Number = 0 Then
' hier wird der aktuell markierte Text ausgegeben
MsgBox sText
End If
End If
On Error GoTo 0
End If
End Sub