Array für Function ??
01.04.2005 06:31:03
Erich M.
für einen Code habe ich aus dem Forum (insb. Josef Ehrensberger) folgendes Array erhalten:
Option Explicit
Private varDaten(4) As Variant
Private Sub Daten()
'Daten-Arrays in Array "varDaten" schreiben
'Dimension von "varDaten" anpassen!
'Anzahl der Einträge beliebieg!
'An erster Stelle immer die Nummer
varDaten(0) = Array(231, "Test 1")
varDaten(1) = Array(232, "Test 2")
varDaten(2) = Array(233, "Test 3")
varDaten(3) = Array(234, "Test 4")
End Sub
Sub Eintragen(Bereich As Range, beginn As Integer, ende As Integer, offset As Integer)
Dim n As Integer, i As Integer
Dim rng As Range
If offset < 0 Then offset = offset - 1
Daten
If ende < beginn Then ende = beginn
For n = 0 To UBound(varDaten)
Set rng = Bereich.Find(varDaten(n)(0), LookAt:=xlWhole)
If Not rng Is Nothing Then
For i = beginn To IIf(ende > UBound(varDaten(n)), UBound(varDaten(n)), ende)
rng.offset(0, offset + i) = varDaten(n)(i)
Next
End If
Set rng = Nothing
Next
End Sub
'Aufruf aus beliebiger Prozedur (auch aus anderem Modul!)
Sub test1()
'Aufruf mit Übergabe des Bereiches in dem die
'Nummern überprüft bzw. verglichen werden sollen!
'Parameter
' × Bereich
' × beginn -ab welcher "Spalte" die Daten aus dem Array ausgelesen werden
' × offset -Spaltenoffset vom Bereich zur Ersten Eintragsspalte
Eintragen Range("A2:A6"), 0, 0
End Sub
Code eingefügt mit: Excel Code Jeanie
Ist es auch möglich, solch ein Array für eine Function zu erstellen, als Ersatz für eine ewig lange If / ElseIf-Funktion:
Option Explicit
Function Test(K)
If K < 2999999 Then
Kart = "Test 1"
ElseIf K < 9999999 Then
Kart = "Test 2"
ElseIf K < 29999999 Then
Kart = "Test 3"
ElseIf K < 64299999 Then
Kart = "Test 4"
End If
End Function
'Array?
'
'varDaten(0) = Array(< 2999999, "Test 1")
'varDaten(1) = Array(< 9999999, "Test 2")
'varDaten(2) = Array(< 29999999, "Test 3")
'varDaten(3) = Array(< 64299999, "Test 4")
'
'--> Function ??
Code eingefügt mit: Excel Code Jeanie
Besten Dank für eine Hilfe!
mfg
Erich
http://www.toolex.de