Ich nutze Access 2007-2010 und kämpfe mit einem kleinen Problem:
ich möchte das ein bestimmtes Feld vom meinem Formular mit Doppelklick oder auch Icon in die Zwischenablage kopiert wird.
Bevor die Fragen kommen warum?, hier eine kurze Erklärung:
Ich bekomme die Aufträge per Mail und muss den Eingang und die Weitergabe an den Mailabsender bestätigen. Dazu habe ich ein Feld angelegt, welches mir die 2 Daten (ID und Feld2) in einem Feld (Mailtext) zusammenführt. Das Ergebnis sieht dann wie folgt aus: 'Auftrag unter der Nummer 2541-17 an Schmidt, Hamburg' weitergeleitet
Diesen Text möchte ich nun kopieren um ihn dann in die Mail einfügen zu können.
ID = Nummer
Feld2= Werkstatt
Mailtext: (kombi aus ID + freien Text + Werkstatt)
Versucht habe ich das mit der Ereignisprozedur:
Private Sub Mailtext_DblClick() 'Kopieren
On Error GoTo Err_Mailtext_DblClick
Me.Mailtext.SetFocus
DoCmd.RunCommand acCmdCopy
Exit_Mailtext_DblClick:
Exit Sub
Err_BefehlKop_Click:
MsgBox Err.Description
Resume Exit_Mailtext_DblClick
End Sub
Wenn Access nicht schon vorher meckert, dann spätestens bei Me oder
Resume Exit_Mailtext_DblClick.
Da ich blutiger Anfängernutzer bin, wäre es toll wenn einer mir die perfekte Leitungslösung in einfachen Worten oder Beispiel nennen könnte.
Die oben genannte Lösung habe ich aus dem Forum entnommen, habe also schon die Beiträge versucht zu übernehmen / kopieren. Leider ohne Erfolg.
Du musst den Text auswählen, bevor der Kopierbefehl abgesetzt wird.Private Sub Mailtext_DblClick() 'Textinhalt in Zwischenablage kopieren
Dim TextLength As Long
On Error GoTo Err_Mailtext_DblClick
With Me.Mailtext
'.SetFocus 'den haben wir schon beim Doppelklicken
TextLength = Len(.Text)
If TextLength = 0 Then Exit Sub 'es gibt nichts zu kopieren
.SelStart = 0 'Anfang festlegen
.SelLength = TextLength 'Länge festlegen
End With
RunCommand acCmdCopy 'Auswahl in Zwischablage kopieren
Exit_Mailtext_DblClick:
Exit Sub
Err_BefehlKop_Click:
MsgBox Err.Description
Resume Exit_Mailtext_DblClick
End Sub
Danke für den Tipp.
Sehe ich das richtig, dass ich in der Entwurfsansicht erst das Feld Mailtext auswähle und dann das Eigenschaftsblatt aufrufe, dann das Register "Ereignis" und Bei Doppelclick die Ereignisprozedur auswähle und dort den Text eintrage?
Habe ich so gemacht und bekomme eine Fehlermeldung:
Sie haben als Einstellug der Ereigniseigenschaft den Ausdruck Beim Doppelklicken eingegeben. Dieser Ausdruck hat einen Fehler verursacht: Deklaration der Prozedur entspricht nciht der Beschreibung oder einer Prozedur mit demselben Namen.
Ich glaube der Fehler sitzt ganz nah vor dem Bildschirm....
Vor der Ellipse (...) im Ereignis ist doch ein Pfeil zum Aufklappen. Wähle dort Ereignisprozedur aus und klicke danach rechts daneben auf den Knopf mit der Ellipse.
Erstmal Danke für die schnelle Antwort, aber..
Habe immer noch die gleiche Fehlermeldung (siehe oben).
Die Hilfe sagt folgendes:
Dieser Fehler tritt auf, wenn ein Ereignis nicht ausgeführt werden konnte, weil der Speicherort der Logik für das Ereignis nicht ausgewertet werden kann. Falls z. B. die OnOpen-Eigenschaft eines Formulars auf =[Field] festgelegt ist, tritt dieser Fehler auf, weil die Ausführung eines Makros oder Ereignisnamens erwartet wird, wenn das Ereignis auftritt.
Liegt es daran, dass ich das Feld "Mailtext" als Felddatentyp "berechnet" innerhalb der Tabelle angelegt habe? Ausdruck [Feld1]+[Feld2], Ergebnistyp: Text.
Ansonsten bin der festen Meinung alles andere so umgesetzt zu haben, wie geschrieben wurde. :-\
Hallo,
poste bitte mit C&P den vollständigen Code der Prozedur...
Die Doppelklick-Prozedur hat ein Argument, das vermutlich fehlt:
xxxx_DblClick(Cancel As Integer)
Das war es.. Danke.
Hatte den Code von Lachtaube übernommen und nicht weiter nachgedacht..
Danke an Euch beide.
... und ich hatte Deinen Code ohne Nachzudenken übernommen - schließlich steht ja auch noch die Aufforderung Kopieren daneben. ???
PS: für die Verwendung berechneter Tabellenfelder gibt es in Access kaum gute Gründe - sie verschwenden IMHO nur Speicherplatz und lassen sich jederzeit in Abfragen, Formularen oder Berichten nachbilden.