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

Zellbereich an Funktion zum ändern

Zellbereich an Funktion zum ändern
10.04.2014 13:24:21
Pepi
Hallo zusammen
Warum ist xC in der Funktion FU_Test() beim ersten Aufruf mit xA identisch (Werte der Zellen "A1:A2") und im zweiten Aufruf völlig anders.
Sub SU_Test()
Dim xA, xB, xD
xA = Range("A1:A2")
xB = FU_Test(xA)
Stop
xB = FU_Test(Range("A1:A2"))
Stop
End Sub

Function FU_Test(xC As Variant)
' Bearbeitung von xC (Sortierung, Filterung, etc.)
FU_Test = xC   'xC zurückgeben
Stop
End Function
Vielen Dank für Tipps
Pepi

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellbereich an Funktion zum ändern
10.04.2014 13:32:43
Tino
Hallo,
bei mir sind beide gleich?
Sub SU_Test()
Dim xA, xB
xA = Range("A1:A2")
xB = FU_Test(xA)
Range("C1:C2") = xB
xB = FU_Test(Range("A1:A2"))
Range("D1:D2") = xB
End Sub
Function FU_Test(xC As Variant)
FU_Test = xC
End Function
Gruß Tino

Das wird an dem liegen, was du uns nicht ...
10.04.2014 13:45:03
Luc:-?
…gezeigt hast, Pepi,
denn du hast ja wohl in der aus einer SubProzedur aufgerufenen Fkt einiges an A1:A2 geändert. Auf diese Weise dürfte die Übergabe von xA nach der (Default-)RufMethode Call-By-Reference (in VBA im ProzedurKopf als ByRef gekennzeichnet) die Änderungen in A1:A2 übernehmen. Die Deklaration As Variant ändert daran nichts, denn der kann alles enthalten, auch Objekt-Bezüge.
Übrigens wäre das bei Aufruf der Fkt in einer ZellFml unwirksam, weil Xl derartige Änderungen einer Fml nicht gestattet.
Gruß Luc :-?

Anzeige
Zellbereich an Funktion zum ändern
14.04.2014 09:31:31
Pepi
Hallo zusammen
Ich erlaube mir, den Task nochmals zu öffnen, weil ich noch nicht weitergekommen bin
Beispielmappe
https://www.herber.de/bbs/user/90143.xlsm
Hier nochmals meine Frage:
Ich will einen Zellbereich Range("A1:A5") an eine Funktion übergeben, dort bearbeiten und dann einem Array oder einem Listfeld (Userform) übergeben. Funktioniert alles, wenn ich den Zellbereich in ein Array xA=Range("A1:A5") einlese und den Funktionsaufruf xB = FU_Sort(xA) mache.
Nun wollte ich die Abkürzung nehmen und den Zellbereich direkt der Funktion übergeben xB = FU_Sort(Range("A1:A5")) Jetzt hat die Variable xC() in FU_Sort(), welche die Werte des Tabellebereichs "A1:A5" enthalten sollte, völlig andere Daten, mit denen ich nichts anfangen kann. Liegt der Fehler in der Deklaration oder wo mache ich den Ueberlegungsfehler? Besten Dank für kluge Köpfe.
Pepi

Anzeige
AW: Zellbereich an Funktion zum ändern
14.04.2014 10:45:13
Pepi
Hallo Tino
sieht ja wunderbar aus mit dem Userform
bin erstaunt, dass das Resulatat das gleiche ist - aktivier mal den Stop in FU_Sort() und sieh dir den Wert von xC an, der ist völlig verschieden. Ich habe 2 Printscreens in die Mustermappe kopiert, um den Unterschied darzustellen.
https://www.herber.de/bbs/user/90145.xlsm
Ich will ja Aenderungen in FU_Sort() machen - deshalb muss der Wert für xC() auch gleich sein.
lb Grüsse
Pepi

Anzeige
AW: Zellbereich an Funktion zum ändern
14.04.2014 11:13:56
Tino
Hallo,
jetzt weiß ich auf was Du hinaus willst.
Du übergibst Range("A1:A5") als Range Objekt, versuch es mal mit Range("A1:A5").Value.
Musst nur aufpassen wenn dieser Range aus nur einer Zelle besteht,
dann musst Du erst ein Array daraus erstellen.
Sub StartV2()
Dim xB As Variant
xB = FU_Sort(Range("A1:A5").Value)
End Sub
Function FU_Sort(xC As Variant)
Dim NewAr()
If IsArray(xC) Then
NewAr = xC
Else
ReDim Preserve NewAr(1 To 1, 1 To 1)
NewAr(1, 1) = xC
End If
FU_Sort = NewAr
End Function
Gruß Tino

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige