VB6 najprostsza tablica dwuwymiarowa, ERROR

Dim Tablica(), TextLinii(1)
ReDim Tablica(10, 1)

TextLinii(0) = "linia1"
TextLinii(1) = "linia2"

For NR = 0 To 1
   Tablica(NR, 1) = TextLinii(NR)
Next

x = Tablica(0, 1)
y = Tablica(1, 1)

ReDim Preserve Tablica(1, 1)

ReDim Preserve wywala taki error:

 

Run-time error ‘9’:

Subscript out of range

 

dlaczego?

 

Niby prosty kod a jednak.

Dim TextLinii(1) powinno być conajmniej 2 sadząc po “linia1” “linia2” lub nawet 10 sądząc po TextLinii(NR)

Skoro Tablica(10,1) NR powinno być mniejsze równe 10 

Nie wiem też czy indeksacja tablic w VB zaczyna się od zera chyba jednak od 1 sądząc po pętli z tablicą.

Więc konkretnie “Subscript error” wyskakuje przy TextLinii(0) = “linia1” a nie TextLinii(1) = “linia2” tak czy owak TextLinii jest zbyt mały. Nie weim też co miałeś(aś) na myśli o co chodzi w algorytmie, może TextLinii(NR) miało mieć postać TextLinii(1)[NR] albo coś w ten deseń?!

 

Jeśli to jest jakieś zadanie domowe moja odpowiedz zniknie za 3…2…1   :wink:

Bu!

  1. TextLinii(0) = “linia1”
  2. TextLinii(1) = “linia2”
  3.  

0 i 1 to chyba TextLinii(1), zresztą na próbę dałem 2 i to samo.

Po co będziemy rozprawiać o niczym

napisz tych parę linijek, tak, żeby nie było error dla ułatwienia podam

że tylko akceptowane jest:

  1. ReDim Preserve Tablica(10, 1)
  2. czyli Preserve nic nie zmienia.

A jeśli chodzi o zadanie szkolne to nie wiem, czy dzisiaj się jeszcze używa VBA w Excelu  :-D 

 

Ale faktycznie zadanie jest na poziomie szkolnym i trochę mi wstyd, że nie mogę tego sam rozwiązać  :shock: 

'to jest OK.

ReDim Tablica1(10)

ReDim Preserve Tablica1(1)

 

'a to:

ReDim Tablica2(10, 1)

ReDim Preserve Tablica2(1, 1) 'error

 

Run-time error ‘9’:

Subscript out of range

 

dlaczego?

Tablica2(10, 1)

Można tylko zmieniać ostatnią wartość tu: “1”

Kiedy używany jest modyfikator Preserve to można zmieniać tylko ostatni wymiar tablicy (tak jak zauważyłeś).