Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
444to448
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
444to448
444to448
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Array durchlaufen, wie ?

Array durchlaufen, wie ?
29.06.2004 09:12:40
Christian
Hallo,
ich bin einen Schritt weiter gekommen, nur leider sind meine VBA Kentnisse doch etwas mehr eingerostet als ich anfangs dachte..
Ich habe schon 10 verschiedene Techniken versucht, das Array zu durchlaufen, aber nichts scheint zu funktionieren..
Wie erreiche ich es, das zu jeder Zelle einfach 1 addiert wird..
Im Augenblick kopiert er den Bereich welchen er als Argument bekommt, einfach in die Zielregion, also den Bereich wo die Funktion als Matrixformel eingeben ist. Das ist ja soweit richtig, nur würde ich natürlich auch gerne etwas mit den in den Feldern enthaltenen Daten machen, z.B. 1 auf jede Zahl addieren, oder prüfen ob sie einen Text enthalten..


Function test(xRange As Range)
Dim xArray2D()
xArray2D = xRange
'wie addiere ich auf jede Zelle 1 drauf..
test = xArray2D
End Function

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Array durchlaufen, wie ?
29.06.2004 09:20:14
sergiesam
Hi,
wenn du zellen durchläufst, arbeitest du nicht mit einem klassischen Array sondern mit einem Rangeobjekt. Das kannst du bequem mit einer For-Each-Anweisung durchlaufen.

Sub test(xRange As Range)
Dim zelle As Range
For Each zelle In xRange
If IsNumeric(zelle.Value) Then
zelle.Value = zelle.Value + 1
End If
Next zelle
End Sub

Gruß,
Sam
AW: Array durchlaufen, wie ? (Klappt nicht)
29.06.2004 09:29:38
Christian
Hallo,
kann es sein, das dies NICHT in Benutzerfunktionen funktioniert..
Ich habe alles wie oben versucht, allerdings brauche ich das ganze eben in einer Benutzerfunktion, und folgendes klappt nicht:

Function test(xRange As Range)
Dim xArray2D As Range
Dim zelle As Range
xArray2D = xRange
For Each zelle In xArray2D
If IsNumeric(zelle.Value) Then
zelle.Value = zelle.Value + 1
End If
Next zelle
test = xArray2D
End Function

Keine Ahnung, ich weiss nicht ob es ein grundsaetzlicher Fehler ist, oder nur ein winyiges Typen oder Formatproblem..
Anzeige
AW: Array durchlaufen, wie ? (Klappt nicht)
29.06.2004 09:44:26
sergiesam
Hi,
du musst unterscheiden, ob es eine Benutzerfunktion ist (vgl. Summe, Mittelwert) oder ein Makro (Programm). Bei einer Benutzerdefinierten Funktion kannst du nur ein Ergebnis ermitteln und keine anderen Zellen verändern.
Siehe Beispiel:
https://www.herber.de/bbs/user/7838.xls
Sam
AW: Array durchlaufen, wie ? (Klappt nicht)
29.06.2004 09:54:14
Christian
Ja, aber ich muss doch auch bei einer Benutzerfunktion die Möglichkeit haben, das Ergebnis zu bearbeiten. MINV rechnet ja auch mit den ihr gegebenen Werten.
Ich will ja gar nicht die Zellen ändern, die ursprünglich die Werte enthalten, sondern die Zahlen im AUSGABE Array z.B. alle auf 3 setzen.
Das Problem ist einfach folgendes, eine einfache Funktion kriege ich hin, wie z.B.

Function addiere(a As Long, b As Long)
addiere = a + b
End Function

Aber wenn ich mit einem Array arbeiten muss, weil ich z.B. zu der Matrix A1 bis B2 jeweils eins addiere will, und dies als Matrixformel in A4 bis B5 eintragen, dann kann ich nicht auch die einzelnen Werte zugreifen, bzw diese ändern. (Im Ergebnis, nicht in den Quellzellen)
Es muss doch möglich sein, mehr als diese elementaren Operationen wie Plus oÄ auszuführen, also auch Werte dieses Arrays, bzw. Range zwischenzuspeichern oder zu ändern. (Wieder, nicht die Quelldaten, sondern zwischenErgebnisse)

Function test(xRange As Range)
Dim xArray2D()
Dim zelle As Variant
xArray2D = xRange
For Each zelle In xArray2D
If IsNumeric(zelle.Value) Then
zelle.Value = zelle.Value + 1
End If
Next zelle
test = xArray2D
End Function

Anzeige
AW: Array durchlaufen, wie ? (Klappt nicht)
29.06.2004 10:10:14
GerdZ
Hallo Christian,
Du suchst sowas wie folgenden Code:
Function test(xRange As Range)
Dim xArray2D()
Dim x As Integer, y As Integer
xArray2D = xRange
For x = LBound(xArray2D, 1) To UBound(xArray2D, 1)
For y = LBound(xArray2D, 2) To UBound(xArray2D, 2)
xArray2D(x, y) = xArray2D(x, y) * 3
Next y
Next x
test = xArray2D
End Function
Gruß
Gerd
DANKE das wars..
29.06.2004 10:49:52
Cristian
Super, ja klappt..
Damit kann ich jetzt weiter ausprobieren.
z.B. mit For-Each-Next
29.06.2004 09:22:17
Galenzo
Hallo,
z.B. mit einer FOR-EACH-SChleife:
Dim c as Range
For Each c in Range("A1:B10")
c=c+1
Next
Viel Erfolg!
Anzeige

30 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige