Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
988to992
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
988to992
988to992
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

vor Ausführung einer UDF Zwischenspeicher "retten"

vor Ausführung einer UDF Zwischenspeicher "retten"
25.06.2008 15:26:00
Peter
Guten Tag
Ich habe folgendes Problem:
Ich kopiere in einer Tabelle eine UDF in eine andere Zelle. Diese wird berechnet und gleichzeitig wir die Zwischenspeicher gelöscht.
Ist es möglich, dass vor Ausführung der eigentlichen Funktion zuerst der Zwischenspeicher einer Variable übergeben wird und am Ende die Variable wieder dem Zwischenspeicher zugewiesen wird? Wie müsste das geschehen`
Danke für eine Antwort.
Gruss, Peter

Public Function abc(defA As Variant, Periode As String, Positiv As Boolean) As Variant
Dim Zwischenspeicher as ?
Zwischenspeicher = ?
? = Zwischenspeicher
End Function


5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: vor Ausführung einer UDF Zwischenspeicher "retten"
26.06.2008 00:46:09
Tino
Hallo,
hier mal ein kleines Beispiel um in die Zwischenablage zu schreiben und auch wieder zu lesen.
'erordert Verweis: Microsoft Forms 2.0 Object Library!!!!

Sub TestZW()
Dim MyData As New DataObject
Dim MeTXT$
'Info: ZW = Zwischenablage
With MyData
.Clear 'lösche ZW
'schreibe in ZW
.SetText Range("A1")
MyData.PutInClipboard
'Lese von ZW
.GetFromClipboard
MeTXT = .GetText(1)
End With
End Sub


Gruß Tino

http://www.VBA-Excel.de


AW: vor Ausführung einer UDF Zwischenspeicher "retten"
26.06.2008 09:14:31
Peter
Hallo Tino
Vielen Dank für deine Antwort. Mir ist noch nicht ganz klar, wie ich deinen Code in meine Funktion integrieren kann. Kannst du mir da weiterhelfen?
Ich habe eine vereinfachte Beispielmappe hochgeladen. Ich möchte gerne den Bereich B3:C3 nach B5:C5 und dann nach B7:C7 und dann nach B9:C9 kopieren. Je nach Umgebung (via Citrix oder lokal) wird mir der Zwischenspeicher nach dem Kopieren der Formeln gelöscht (Citrix) resp. nicht gelöscht (zu dieser "Ungleichbehandlung" starte ich einen separten Eintrag um nicht zwei Probleme im gleichen Thread zu schleppen).
Oder muss ich deinen Code in in den untenstehenden Ereigniscode ( </p><pre>Private Sub Workbook_SheetChange )integrieren, weil ja dieser letztendlich das Zwischenergebnis löscht?
Vielen Dank, Peter
https://www.herber.de/bbs/user/53365.xls
Option Explicit
Dim bUndo As Boolean
</p><pre>Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
On Error Resume Next
Application.Calculate
If Sh.Name <> ActiveSheet.Name Then
With Application
.EnableEvents = False
If Not bUndo Then .Undo
.EnableEvents = True
End With
bUndo = True
Exit Sub
End If
bUndo = False
End Sub</pre><p>

Anzeige
AW: vor Ausführung einer UDF Zwischenspeicher "retten"
26.06.2008 10:14:00
Tino
Hallo,
irgendwie verstehe ich es nicht, habe eben sembliche Varianten durchgetestet.
Bereich B3:C3 kopiert und glaube 20mal irgendwo bzw. auch in Deine benannten Bereiche eingefügt.
Kannst Du mir kurz nochmal schildern, wann diese Office Zwischenablage bei welcher Aktion gelöscht wird und dies aber nicht machen soll oder darf.
Weil die Win Zwischenablage nicht gerade komfortabel ist und zum Bsp. Zellformatierungen nicht
übernehmen kann, würde ich erst mal nach einer Alternative suchen.
Gruß Tino

www.VBA-Excel.de


Anzeige
AW: vor Ausführung einer UDF Zwischenspeicher "retten"
26.06.2008 10:41:00
Peter
Hallo Tino
Auf meiner lokalen Maschine funktioniert das Kopieren wunderbar. Wenn die Datei auf dem Server gespeichert ist geht die Zwischenablage verloren, wenn der Code Private Sub Workbook_SheetChange nicht deaktiviert ist. Dieses Problem habe ich in einem neuen Beitrag beschrieben:
https://www.herber.de/forum/messages/988888.html
Leider habe ich keine Ahnung, weshalb die gleiche Datei in diesen unterschiedlichen Umgebungen so unterschiedliche Ergebnisse gibt.
Gruss, Peter

AW: vor Ausführung einer UDF Zwischenspeicher "retten"
26.06.2008 11:21:25
Tino
Hallo,
also habe nochmal etwas getestet, der Office Zwischenspeicher wird zum Beispiel durch doppelklick in eine Zelle geleert.
Aber dies hat nichts mit Deinem SheetChange Ereignis zu tun, also daran kann es nicht liegen!
Diesen doppelklick kann man aber abfangen, zum Bsp. wenn der doppelklick außerhalb von der Spalte B bis D ausgeführt wird, so wird dieser unterbunden.
Als Code ins Tabellenblatt:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim sbereich As Range
If Intersect(Target, Range("B:D")) Is Nothing Then
Cancel = True
End If
End Sub


Gruß Tino

www.VBA-Excel.de


Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige