Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-Seite mit Beispielarbeitsmappe aufrufen

Anpassung Code auf 64 Bit PC


Betrifft: Anpassung Code auf 64 Bit PC von: biwi
Geschrieben am: 22.01.2019 12:01:22

Hallo zusammen,

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

  

Betrifft: AW: Anpassung Code auf 64 Bit PC von: Nepumuk
Geschrieben am: 22.01.2019 13:00:57

Hallo,

so:

Private Declare …

Gruß
Nepumuk


  

Betrifft: AW: Anpassung Code auf 64 Bit PC von: biwi
Geschrieben am: 22.01.2019 13:28:30

Ach Gott so einfach,perfekt!
Vielen lieben Dank


Beiträge aus dem Excel-Forum zum Thema "Anpassung Code auf 64 Bit PC"