Kategorie szkoleń | Egzaminy | Kontakt
  • 1
  • 7
  • 244
Czy w VBA można zawierać wartość jednej zmiennej w nazwie drugiej zmiennej (np. tablicy)?
 
Czy można generować zmienne (tablice) np. za pomocą pętli? Czy możliwe jest generowanie w ten sposób obiektów?
 
Na przykład, jeśli pewna zmienna osiąga wartość x, czy można programowo utworzyć tablicę o nazwie Tablica_(wartość i), czyli w tym przypadku Tablica_x?
 
Jeśli nie, to jaka byłaby alternatywa? Jeśli nie jest to możliwe w VBA, czy jest to możliwe np. w C#?
Jacek_Kotowski
  • Zapytał
  • @ Jacek_Kotowski | 09.03.2015
    • lider
    • laureat
    • ekspert
    • 60
    • 54
    • 94

Odpowiedź (1)

  • 15

Tego typu operacja to mieszanie identyfikatorów z danymi, czyli trybu projektowania z trybem uruchomienia. Technicznie można to oczywiście zrealizować zarówno w VBA, jak i C#, poprzez dynamiczne generowanie kodu lub szablony kodu, jednak takie techniki zarezerwowane są dla problemów, których nie można w inny sposób rozwiązać. W oparciu o opis pytania wydaje się, że bardziej odpowiednie będzie zastosowanie odpowiedniego typu kolekcji np. słownikowej, gdzie kluczem będzie wartość zmiennej, a wartością powiązana tablica. Przykład poniżej:

'add reference to Microsoft Scripting Runtime.     
Sub Main()
Dim dict As Dictionary
Set dict = New Dictionary
Dim arr(2) As Integer
arr(0) = 0
arr(1) = 1
arr(2) = 2

Dim zmienna As String
zmienna = "x"
dict.Add Key:=zmienna, Item:=arr
Debug.Print dict("x")(0)
Debug.Print dict("x")(1)
Debug.Print dict("x")(2)
Set dict = Nothing
End Sub

Przed uruchomieniem należy dodać referencję do biblioteki Microsoft Scripting Runtime.

Dodatkowy opis kolekcji Dictionary w artykule KB:

http://support.microsoft.com/kb/187234

  • Odpowiedział
  • @ | 10.03.2015
  • TRENER ALTKOM AKADEMII