Arraydimension variabel
27.07.2005 12:44:13
GothicFiction
hier noch ein Problem: In einer Excelliste stehen in der Spalte A Daten (also nicht jetzt irgendwelche, sonder die Pluralform von Datum). Per Suchabfrage (diese läuft problemfrei) sollen die Reihen herausgegriffen werden, die über das Datum identifiziert wurden. Nun sollen Zellwerte aus dieser Reihe addiert werden, Zeit für ein Beispiel:
Seien die Reihe 2, 7, 112 identifiziert: Der Wert, den ich nun haben möchte, um ihn in eine andere Excelliste einzufügen ergibt sich aus B2 + B7 + B112.
meine Idee war, ein Array zu verwenden, in welches ich die gefundenen Reihennummern einfüge. Da ich vorher nicht weiss, wie viele es sein werden, kann ich vorher nicht definieren, wie groß das Array sein wird, bei PHP z.B. kein Problem, man kann einfach werte zum array adden, der index läuft automatisch hoch, gibt es in VBS etwas äquivalentes?
Danach könnte ich bequem per For Each schleife jeweils eine der gefundenen Zeilen herauspicken, die gewünschten werte zu einer variable hinzuaddieren und glücklich sein. Leider ist das aber nicht so, hier, was ich bisher gemacht habe:
Option Explicit
'Funktion sucht Zeile mit betreffendem Datum
Function suche_datum(ByVal col As Range, ByVal datum As String) As Variant
Dim cell As Variant, values As Variant, varZeilen As Variant
For Each cell In col
If cell.Value = datum Then
cell.Activate
varZeilen = Array(ActiveCell.row) 'hier würde, wenns PHP Code wäre, bei jedem durchgang einfach ein wert ans array angehängt
End If
Next
suche_datum = varZeilen
End Function
'Funktion erstellt Range-Objekt, das durchsucht werden soll
Function bestimme_bereich(ByVal row As Variant, ByVal col As Variant)
Dim last_row As Variant
last_row = Cells(Rows.Count, col).End(xlUp).row
Set bestimme_bereich = ActiveSheet.Range(Cells(row, col), Cells(last_row, col))
End Function
Sub datumssuche()
Dim rngBereich As Range, varZeilen As Variant, strDatum As String, i As Variant
'Alle Zeilen mit entsprechendem Datum finden
strDatum = "01.01.2005"
Set rngBereich = bestimme_bereich(2, 1)
varZeilen = suche_datum(rngBereich, strDatum)
'Hier würd ich dann die Zusammenzählung der gefundenen Werte zum Endwert vornehmen
For Each i In varZeilen
MsgBox i
Next i
End Sub