Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1348to1352
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
Inhaltsverzeichnis

Interessantes zum WE

Interessantes zum WE
07.02.2014 23:16:51
Luc:-?
Hallo, Fans;
habe hier noch einen kleinen Nachtrag zur VBA-Problematik [] versus Evaluate bzw Range, was auch mit xlFkt INDIREKT zu tun hat bzw haben kann. An die, die's interessiert, versucht mal …
Sub testRange()
MsgBox Evaluate("index(A1:D4,2,2):index(A1:D4,3,3)").AddressLocal(0, 0) & _
vbLf & Range("index(A1:D4,2,2):index(A1:D4,3,3)").AddressLocal(0, 0) & _
vbLf & [index(A1:D4,2,2):index(A1:D4,3,3)].AddressLocal(0, 0)
End Sub
Na, alles klar?! ;-)
Mit INDIREKT würde das trotz ähnlichen Mechanismus' nicht fktionieren wie diese Fml beweist, sie ergibt nur …
#BEZUG! ⇐INDIREKT("index(B9:E11,2,2):index(B9:E11,3,3)")
…während meine bei Argument-Angabe als Text auf Range(argument) basierende UDF RAddress tatsächlich die Adresse des aus der TextFml resultierenden Bereichs liefert …
B9:B11 ⇐RAddress("index(A8:F12,2,2):index(A8:F12,4,5)")
Viel Spaß & schöWE!
Gruß Luc :-?

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Interessantes zum WE
08.02.2014 10:01:36
Luschi
Hallo Luc,
habe mal ein bischen mit Deinem vorschlag herumgespielt und findes es schon interressant, was gerade die folgende Variange bewirken kann:
Range("index(A1:D4,2,2):index(A1:D4,3,3)").AddressLocal(0, 0)
Damit kann man sich die Bereich.Verschieben-Funktion ersparen. Einen kleinen Unterschied habe ich aber doch gefunden:
Range("A1","B20").Address --> $A$1:$B$20
Range("Index(A1,1,1),Index(B20,1,1)").Address --> $A$1,$B$20
Das Komma ist der Union-Operator; meiner Meinung nach arbeitet er in 1. Fall FALSCH!
Gruß von Luschi
aus klein-Paris

Anzeige
Finde ich gut, ...
08.02.2014 13:46:14
Luc:-?
…Luschi,
dass du das nicht nur aufgegriffen, sondern auch noch weiter experimentiert hast. Ich vermute, dass sich das alles in einer gewissen „Grauzone“ zwischen Xl und VBA abspielt und bei der Gestaltung des VBE nicht berücksichtigt wurde, weil dessen Pgmierer nicht mit so etwas gerechnet hatten. Denn der weist bei schrittweiser PgmAbarbeitung an dieser Stelle brav den eigentlich zu erwartenden Range-Zuordnungsfehler aus, allerdings ohne dass dieser tatsächlich entsteht, was mit If IsError(…) Then leicht überprüft wdn kann. Ich hatte mich gerade mit so etwas beschäftigt und war verblüfft, dass der Fehler-Behdlgszweig des Pgms nicht durchlief, obwohl der Fehler angezeigt wurde.
Das, was du beschreibst, ist dann ja auch hochinteressant. Ich würde das auch so sehen → 1.Fall falsch, denn eigentlich sollte das wirklich eine sog MehrfachAuswahl (Unite-Fall) sein. Offensichtlich scheint Range("A1","B20") hier aber eher wie Range(Cells(1, 1),Cells(20, 2)) zu fktionieren. Möglicherweise ist das von MS unbeabsichtigt, also ein bug, aber generell haben diese Effekte wohl etwas mit der allgemeinen Umsetzung von TextAngaben als Range-Argument zu tun. Es sieht so aus, als ob eine Aufzählung von 2 TextAdressen tatsächlich als von…bis-Bereich interpretiert wird; dann wäre interessant, was bei 3 und mehr Adressen passiert. Folglich müsste man wohl in diesen Fällen tatsächlich auf die Index-Notationsform ausweichen, denn der Text scheint evaluiert zu wdn, und da das ein Range-Objekt liefert (im anderen Fall eben 2), erfüllt das Konstrukt den angestrebten Zweck.
Gut zu wissen, dass Range so reagiert, das hilft, entsprd Fehler zu vermeiden, zumal das bei allen anderen Objekten als reine Aufzählung interpretiert wdn würde.
Sei bedankt für deine EigenInitiative, die zu weiterem Erkenntnisgewinn geführt hat. So sollte es immer sein! ;-)
Gruß + schöWE (ich bin dann mal bis später am Abend weg), Luc :-?

Anzeige
Habe das noch mal überprüft, ...
09.02.2014 02:44:53
Luc:-?
…Luschi;
Range("A1", "B20") ist doch kein bug, sondern entspricht tatsächlich Range(Cells(1, 1), Cells(20, 2)) (mehr Angaben dieser Art sind auch nicht möglich!), während Range("A1,B20") eine Aufzählung, also Union(…) (das united Range-Objekt), darstellt. So sind dann auch mehr als 2 Angaben möglich.
Gruß+schöSo, Luc :-?

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige