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

Problem mit Arrayübergabe an ein Sub

Problem mit Arrayübergabe an ein Sub
03.12.2004 11:22:01
Mario
Hi, ich glaube mir fehlt hier irgendwie ein Typecast oder so.
Public

Sub OpenCell(Cell As Range, ParamArray CellArray() As Variant)
Dim i As Integer, j As Integer
Dim Element As Variant
Cell.Font.Color = RGB(0, 255, 0)
If Intersect(Cell, Range("B2:K11")) Is Nothing Then
ElseIf Cell.Value = 0 Then
For i = -1 To 1
For j = -1 To 1
If i = 0 And j = 0 Then
Else
For Each Element In CellArray()
If Element = Cell Then
CellArray(CellArray().Count + 1) = Cell '*
Call OpenCell(Cell.Offset(i, j), CellArray)
End If
Next Element
End If
Next j
Next i
End If
End Sub

* hier meckert er rum. In den beiden Arrays sind eigentlich Range-Objekte. Aber in der Hilfe stand, Arrays, die übergeben werden, müßten vom Typ Variant sein. Aber Variants haben anscheinend keine Prozedur .Count *grml* Kann man da nicht irgendwie typecasten? und wie funktioniert das in VBA?
Vielen Dank schonmal für Eure Mühe!
Gruß Mario

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

Betreff
Datum
Anwender
Anzeige
AW: Problem mit Arrayübergabe an ein Sub
ChrisL
Hi Mario
Geht es nicht ohne Array?
z.B.

Sub t()
Call Test(Range("A1:A4,B5,C6"))
End Sub


Sub Test(rng As Range)
Dim Zelle As Range
For Each Zelle In rng
MsgBox Zelle.Address
Next Zelle
End Sub

Gruss
Chris
AW: Problem mit Arrayübergabe an ein Sub
03.12.2004 14:37:29
Mario
Uih, das ist ne super Idee, danke! So werde ich es machen. Aber ich glaube es wäre für das generelle Programmieren in VBA schon nicht schlecht, mal zu wissen, wie man Arrays "ordentlich" übergibt bzw. wie man richtig typecastet. In gescheiten Programmiersprachen geht das ja genauso einfach wie mit Integern oder Strings.
Anzeige
Problem gelöst, aber Frage bleibt
ChrisL
Hi Mario
Die Antwort kenne ich nicht.
Gruss
Chris
AW: Problem mit Arrayübergabe an ein Sub
03.12.2004 19:06:09
Nepumuk
Hallo Mario,
wenn du ein echtes Array (egal ob Rangearray oder Variantarray) setzt VB bei der Übergabe an ein ParamArray eine eindimensionale Dimension vor die anderen. Wenn du also diese Zeile:
CellArray(CellArray().Count + 1) = Cell
so änderst:
CellArray(CellArray(0).Count + 1) = Cell
dann funktioniert es. Aber, nur beim ersten Aufruf. Da es sich bei deiner um eine rekursive Prozedur handelt, übergibst du beim 2. Aufruf nicht das einfache Rangearray mit z.B. den Zellen A1:A10, sondern das ParamArray CellArray(0).[A1:A10]. Das daraufhin zurückgelieferte ParamArray hat die Dimension CellArray(0)(0).[A1:A10]. Beim dritten mal CellArray(0)(0)(0).[A1:A10]. ............. Du könntest aber an Stelle des ParamArrays ein ganz normales Variantarray verwenden.
Gruß
Nepumuk
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige