Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
808to812
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
808to812
808to812
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Phänomen Application.Caller.Address?

Phänomen Application.Caller.Address?
08.10.2006 07:50:20
Stefan
Hallo,
jetzt wirds kniffelig.
Ich habe eine Zellfunktion die folgendermaßen aussieht:

Function returnPos()
range(Application.Caller.Address).ID = Application.Caller.Address
returnPos = Application.Caller.Address
End Function

Was die Funktion macht, ist die aktuelle Adresse der Zelle in die
ID-Eigenschaft sowie in den Rückgabewert der Zelle zu speichern.
Auf dem Worksheet zeigen Zellen mit dieser Funktion ihre eigene
Position an. Soweit so gut.
Ich habe jetzt sagen wir auf A1 eine solche Zelle und kopiere
diese - wichtig - per Rechtsklick kopieren/einfügen z.B. 3mal nach
rechts, sodass es insgesamt 4 Zellen nebeneinander gibt.
Anzeige: $A$1 $B$1 $C$1 $D$1
Nun geht es eigentlich weniger um den angezeigten Rückgabewert,
sondern den ebenfalls dynamisch abgespeicherten ID-Wert (s.oben),
der sich durch das Kopieren ja ebenfalls dynamisch ändern müsste.
Für $B$1 stimmt das auch, Activecell.ID ergibt hier "$B$1", allerdings
haben alle Zellen-IDs weiter rechts auch "$B$1" !?
Das Phänomen tritt nicht auf, wenn ich die Zellen hoch oder runter kopiere,
sondern nur bei links/rechts. Noch komischer ist, dass es beim alternativen
Kopieren (Ziehen am "Plus" einer Zelle, unten rechts) generell funktioniert.
Egal welche Richtung.
Kann jemand mir das erklären? Meine Anwendung ist auf einen
solchen unsichtbaren "Zell-Speicher" angewiesen...
Danke & Gruss
Stefan

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Phänomen Application.Caller.Address?
08.10.2006 09:54:18
Kurt
Hi,
das ist nicht nachvollziebar!
Diese Zeile:
range(Application.Caller.Address).ID = Application.Caller.Address
erfüllt in der Funktion keine Aufgabe und kann daher entfallen.
mfg Kurt
AW: Phänomen Application.Caller.Address?
08.10.2006 10:11:38
Reinhard
Hi Kurt,
ich kannte ID nicht, aber laut Hilfe kommt ID bei als Html gespeicherten Excelzellen zum Tragen, habe das nun nicht ausprobiert.
Was ich ausprobiert habe ist der nachfolgende Code. Sehr seltsam das Ganze. Ich habe XL2000.
Bei F5 hängt sich Excel auf und ich muss es per Taskmanager (WinXP) abschiessen. Mit F8 läuft es durch und bestätigt die Aussagen des Anfragers. Nach links und rechts kopieren ist unterschiedlich zu nach oben/unten.
Interessant ist, setze ich bei dem For der ersten For-Schleife einen Haltepunkt und drücke F5 so kommt Fehler 424, Objekt fehlt o.ä. und die vierte Funktion, also returnPos4, wird gelb markiert.
Ich setze die Frage auf noch offen a) wegen dem Anfrager, b) weil ich darum bitte dass jemand den Code testet ob bei ihm das gleiche Fehlerverhalten wie bei mir auftritt, Danke im Voraus dafür.
Option Explicit
Sub test()
Dim Ze As Range
Worksheets("Tabelle1").Activate
Range("D3").FormulaLocal = "=returnPos()"
Range("D3").Copy Destination:=Range("A3:C3") 'links
Range("D3").Copy Destination:=Range("D1:D2") 'oben
Range("D3").Copy Destination:=Range("E3:H3") 'rechts
Range("D3").Copy Destination:=Range("D4:D6") 'unten
For Each Ze In ActiveSheet.Range("A1:H6")
Ze.Offset(10, 0) = Ze.ID
Next Ze
Worksheets("Tabelle2").Activate
Range("D3").FormulaLocal = "=returnPos2()"
Range("D3").Copy Destination:=Range("A3:C3") 'links
Range("D3").Copy Destination:=Range("D1:D2") 'oben
Range("D3").Copy Destination:=Range("E3:H3") 'rechts
Range("D3").Copy Destination:=Range("D4:D6") 'unten
For Each Ze In ActiveSheet.Range("A1:H6")
Ze.Offset(10, 0) = Ze.ID
Next Ze
Worksheets("Tabelle3").Activate
Range("D3").FormulaLocal = "=returnPos3()"
Range("D3").Copy Destination:=Range("A3:C3") 'links
Range("D3").Copy Destination:=Range("D1:D2") 'oben
Range("D3").Copy Destination:=Range("E3:H3") 'rechts
Range("D3").Copy Destination:=Range("D4:D6") 'unten
For Each Ze In ActiveSheet.Range("A1:H6")
Ze.Offset(10, 0) = Ze.ID
Next Ze
Worksheets("Tabelle4").Activate
Range("D3").FormulaLocal = "=returnPos4()"
Range("D3").Copy Destination:=Range("A3:C3") 'links
Range("D3").Copy Destination:=Range("D1:D2") 'oben
Range("D3").Copy Destination:=Range("E3:H3") 'rechts
Range("D3").Copy Destination:=Range("D4:D6") 'unten
For Each Ze In ActiveSheet.Range("A1:H6")
Ze.Offset(10, 0) = Ze.ID
Next Ze
End Sub
Function returnPos()
Range(Application.Caller.Address).ID = Application.Caller.Address
returnPos = Application.Caller.Address
End Function
Function returnPos2()
Range(Application.Caller.Address).ID = Application.Caller.Address(0, 0)
returnPos2 = Application.Caller.Address(0, 0)
End Function
Function returnPos3()
Range(Application.Caller.Address).ID = Application.Caller.Address
returnPos3 = Application.Caller.Address(0, 0)
End Function
Function returnPos4()
Range(Application.Caller.Address).ID = Application.Caller.Address
returnPos4 = CStr(Application.Caller.Address(0, 0))
End Function

Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
Anzeige
AW: Phänomen Application.Caller.Address?
08.10.2006 18:05:34
Stefan
Danke für die Antworten.
@Reinhard: Bei mir schmiert Excel auch ab, allerdings erst ab dem 4.Tabellenblatt.
Wenn ich das weglasse, kommen die erzeugten und kopierten Werte, allerdings gibts immer noch das Problem, dass die "vertikalen" Zellen die falsche ID haben.
@Stefan: Danke für den Code. Habs ausprobiert. Die Anzeige (Rückgabewert) ist korrekt,
aber auch hier ist der ID-Wert der Zellen rechts und links der Originalzelle nicht wie erwartet.
Tja, weiss jetzt auch nicht weiter...gibts bei MS immer noch 100€ für nen Bug?
Teilen wir uns! ; |
AW: Phänomen Application.Caller.Address?
08.10.2006 14:31:29
Stefan
Hallo Stefan,
Weiss zwar nicht warum, aber so geht's bei mir:
Public

Function returnPos()
Dim myAddress As String
Dim myRange As Range
myAddress = Application.Caller.Address
Set myRange = Range(Application.Caller.Address)
myRange.ID = myAddress
returnPos = myAddress
End Function

Schoene Gruesse
Stefan
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige