Keresés

Új hozzászólás Aktív témák

  • Fire/SOUL/CD

    félisten

    válasz tgumis #53308 üzenetére

    Most nem volt sok időm, ezért egy makrót írtam hozzá. Nem elképzelhetetlen, hogy kivitelezhető összetettebb sima képlettel is, most sajna nincs időm ezen agyalni.

    Module1 kód (Topik összefoglalóban megtalálod, hogy lehet beszúrni)

    Option Explicit
    'Fire/SOUL/CD - 2024


    Public Function Fire_CreateMenu_FX(MyCell As Variant, MyRange As Range, MyColumnIndex As Integer) As String

    'MyCell -> forrás cella címe (amit fel kell dolgozni)
    'MyRange -> az a tartomány (táblázat, ha úgy tetszik), ahol fel vannak sorolva a menükódok és megnevezésük
    'MyColumnIndex -> tartomány (táblázat) azon oszlopa, amely a menük megnevezését tartalmazza

    'elválasztó karakter (itt vessző), ezzel vannak elválasztva a menükódok a cellá(k)ban
    Const MYDELIMITER = ","

    'szöveg típusú dinamikus tömb
    Dim MyStringArray() As String

    'ciklusszámláló
    Dim i As Long

    'FELOSZTÁS függvény segítségével, a MYDELIMITER paraméterrel tömböt hozunk létre
    MyStringArray = Split(MyCell.Value, MYDELIMITER)

    'a feldolgozott, teljes menü ebbe a szöveges változóba fog kerülni
    Dim MyString As String
    MyString = ""

    'végignézzük a tömb elemeit (kódokat a cellában, ami bármennyi lehet)
    For i = 0 To UBound(MyStringArray)

    On Error Resume Next

    'FKERES függvény futtatása. Megkeressük az összes menükódot és összefűzzük egy darab string-be
    MyString = MyString + Application.WorksheetFunction.VLookup(CInt(MyStringArray(i)), MyRange, MyColumnIndex, False)

    'hibakezelés, ha olyan kód lett megadva, ami nem létezik a tartományban
    If Err.Number <> 0 Then
    MsgBox "A(z) " & MyStringArray(i) & " azonosító nem található a(z) " & MyRange.Address & " tartományban!"
    End If

    'ha nem az utolsó menükód, akkor egy vessző+szóköz párossal elválasztjuk őket egymástól
    If i <> UBound(MyStringArray) Then
    MyString = MyString + ", "
    End If

    Next i

    'visszaadjuk a feldolgozott, teljes menüsort
    Fire_CreateMenu_FX = MyString

    End Function

    Így tudsz rá hivatkozni (függvény paraméterezése megegyezik az FKERES függvényével)

    Megjegyzés
    Menükódok csak számjegyeket tartalmazhatnak.

    [ Módosította: koncsik ]

Új hozzászólás Aktív témák

Hirdetés