Anpassung Code auf 64 Bit PC
22.01.2019 12:01:22
biwi
ich habe folgendes Problem: In meinem Excel-Tool habe ich ein User-Form welches weitere Vertragsdetails von einem ausgewählten Vertrag dynamisch einblendet.
Über einen Button in der UserForm wird ein screenshot der Userform erstellt und dann einer Email angehängt. Soweit funktioniert das alles auch ganz gut. Jetzt habe ich aber einen Kollegen mit einem 64 bit Computer bei dem der Code nicht funktioniert und wollte den Code dahingehend anpassen dass er auf beiden Systemen läuft. Dazu habe ich online folgende Lösung gefunden:
#If Win64 Then
Declare PtrSafe Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal _
dwFlags As LongLong, ByVal dwExtraInfo As LongPtr)
#Else
Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags _
As Long, ByVal dwExtraInfo As Long)
#End If
Private Const VK_SNAPSHOT = &H2C
Sub CommandButton1_Click()
keybd_event VK_SNAPSHOT, 1, 0, 0
Call Email
End Sub
Wenn ich jetzt aber einen Vertrag auswähle also eine Zelle im Excelblatt anwähle wird mir die erste Zeile (also die Kopfzeile) meines Codes für die Befüllung der Userform gelb markiert.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.EnableEvents = False
Application.ScreenUpdating = False
If Intersect(Target, Range("A8:L20000")) Is Nothing Then Exit Sub
Range("B3").Value = Cells(Target.Row, 1).Value
'Vertragsnummer & Kunde
UserForm1.Label1.Caption = " " & Worksheets("Vertragsdetails").Range("B9")
'Vertragsdetails
UserForm1.Label2.Caption = " " & Worksheets("Vertragsdetails").Range("D9")
UserForm1.Label5.Caption = " " & Worksheets("Vertragsdetails").Range("D12")
UserForm1.Label9.Caption = " " & Worksheets("Vertragsdetails").Range("D13")
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Und es erscheint die Fehlermeldung Fehler beim Kompilieren:
Konstanten, Zeichenfolgen fester Länge ... sind als Public-Elemente von Objektmodulen nicht zugelassen
Außerdem wird mir die Zeile "Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)" markiert.
Kann mir jemand helfen?
Vielen lieben Dank im Voraus