[VBA] Kolekcja typu własnego jako opcjonalny argument

0

Chciałam sobie uporządkować przekazywanie parametrów do funkcji, a tymczasem zabrnęłam do miejsc, gdzie moja znajomość języka nie jest wystarczająca.

Stworzyłam przede wszystkim własny typ danych:

Public Type Parameters
    name    As String
    value   As String
End Type

A oto moja definicja funkcji:

Private Function GetFromUrl_ByPost(ByVal url As String, ByRef postParameters() As Parameters) As Long

Cały bajer tej funkcji teraz polega na tym, że postParameters ma być opcjonalne. Nie da się zrobić deklaracji Optional ByRef postParaemeters() As Parameters. Nie da się zapodać w wywołaniu funkcji Nothing zamiast postParameters.

W takim razie, co się da...?

edit:
Poczytałam sobie o typie Variant, zastosowałam:

Private Function GetFromUrl_ByPost(ByVal url As String, Optional ByRef postParameters As Variant) As Long

Teraz jest fajnie, jak argumentu nie podam, ale jak podam, to mam błąd na wywołaniu funkcji:

Compile error: Only user-defined types in public object modules can be coerced to or from a variant or passed to late-bound functions

Typ jak widać jest public, więc to nie jego problem. Moduł jest zwykłym modułem... nie wiem jak mu nadać public. Czyżbym musiała stworzyć klasę? Nie da się tego w zwykłym module zrobić?

0

Zdawało mi sie, że ten dział to C# i .Net.

0

Nie rób Typu, tylko Class.

pozdrawiaMM

0

Hm. Klasa z dwoma parametrami typu string i niczym więcej... Wydaje mi się przerostem formy nad treścią. Prędzej już myślę o zastąpieniu tego dwoma tablicami stringów...

0
aurel napisał(a)

Hm. Klasa z dwoma parametrami typu string i niczym więcej... Wydaje mi się przerostem formy nad treścią. Prędzej już myślę o zastąpieniu tego dwoma tablicami stringów...

Tak działa VB. I nie zmieni tego dopisek .NET :)

pozdrawiaMM

0

To to jest VBA czy VB.NET w końcu?

0

To jest VBA, tak jak w temacie.

edit:
Ale zdaje się, że temat można uznać za zamknięty. Zależało mi na tym, by przekazać własny typ jako argument - nie da się? Ok. Jeśli się da - super by było wiedzieć jak, ale chyba nikt nie wie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0