Array für Function ??

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Array für Function ?? von: Erich M.
Geschrieben am: 01.04.2005 06:31:03

Hallo EXCEL-Freunde,

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

Bild


Betrifft: AW: Array für Function ?? von: andre
Geschrieben am: 02.04.2005 08:18:39

Hallo Erich,
imPrinzip so:
Function test(k)
Dim vardaten(3, 1)
vardaten(0, 0) = "Test 1": vardaten(0, 1) = 2999999
vardaten(1, 0) = "Test 2": vardaten(1, 1) = 9999999
vardaten(2, 0) = "Test 3": vardaten(2, 1) = 29999999
vardaten(3, 0) = "Test 4": vardaten(3, 1) = 64299999
For i = 0 To UBound(vardaten())
If k < vardaten(i, 1) Then
test = vardaten(i, 0)
Exit For
End If
Next
End Function


Sub test2()
Kart = test(4)
MsgBox Kart
End Sub



Bild


Betrifft: Genial von: Erich M.
Geschrieben am: 02.04.2005 19:16:33

Hallo andre,

habe die Antwort erst jetzt entdeckt (hatte schon nicht mehr damit gerechnet).

Funktioniert bestens; vielen Dank!!

mfg
Erich
EXCEL-Shareware und Freeware: http://www.toolex.de
EXCEL und Lottogewinne machen glücklich: http://48678.rapidforum.com


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Blattname (Schrift) farbig "