Yahoo Answers is shutting down on May 4th, 2021 (Eastern Time) and beginning April 20th, 2021 (Eastern Time) the Yahoo Answers website will be in read-only mode. There will be no changes to other Yahoo properties or services, or your Yahoo account. You can find more information about the Yahoo Answers shutdown and how to download your data on this help page.

VB 陣列給初值

請問vb該怎麼做才能像c的方式,如下

int aaa[9][9] = {{2, 2, 2, 2, 2, 2, 2, 2, 2},

{2, 0, 0, 0, 0, 0, 0, 0, 2},

{2, 0, 2, 2, 0, 2, 2, 0, 2},

{2, 0, 2, 0, 0, 2, 0, 0, 2},

{2, 0, 2, 0, 2, 0, 2, 0, 2},

{2, 0, 0, 0, 0, 0, 2, 0, 2},

{2, 2, 0, 2, 2, 0, 2, 2, 2},

{2, 0, 0, 0, 0, 0, 0, 0, 2},

{2, 2, 2, 2, 2, 2, 2, 2, 2}};

我買的VB基礎書本沒有說到這個耶!

所以我只好用

aaa(0,0)=2

aaa(0,1)=2

...

...

這樣好長又好累

請教高手大大!

Update:

to lynr

使用你的方法

結果會變成

a(1)(1)=2

但是我使用原先的方式卻是

a(1,1)=2

我不懂的地方是

a(1)(1) 跟a(1,1)

2個括號跟一個括號的不同??

請問差別是?

因為書上說 幾維陣列都是aaa(a,b,c,d,....)

就是只有一個括號

還是說不要管這麼多

就是這樣子??

Update 2:

另外想問

你的t 該怎麼宣告才正確??

因為我用dim t 才可以

如果用dim t as integer會錯

這又是我另一疑問!

5 Answers

Rating
  • 10 years ago
    Favorite Answer

    Dim a As Variant

    Dim b(9, 9) As Integer

    Dim i As Integer, j As Integer, k As Integer

    a = Array(2, 2, 2, 2, 2, 2, 2, 2, 2, _

    2, 0, 0, 0, 0, 0, 0, 0, 2, _

    2, 0, 2, 2, 0, 2, 2, 0, 2, _

    2, 0, 2, 0, 0, 2, 0, 0, 2, _

    2, 0, 2, 0, 2, 0, 2, 0, 2, _

    2, 0, 0, 0, 0, 0, 2, 0, 2, _

    2, 2, 0, 2, 2, 0, 2, 2, 2, _

    2, 0, 0, 0, 0, 0, 0, 0, 2, _

    2, 2, 2, 2, 2, 2, 2, 2, 2)

    k = 0

    For i = 0 To 8

    For j = 0 To 8

    b(i, j) = a(k)

    k = k + 1

    Next j

    Next i

    用Array函數和Variant型態

    2011-09-01 12:30:06 補充:

    不習慣0到8這種方式

    用1到9也可以

    就直接改

    For i = 1 to 9

    For j = 1 to 9

  • 10 years ago

    to 冰封

    dim t()%

    我的vb6是語法錯誤

    但改成t%()

    語法就正確

    但是會變成下一行錯誤

    t = Array(1, 2, 3)

    type mismatch

  • Anonymous
    10 years ago

    Dim aaa(9,9) = {{....}}

    感覺怪怪的

    索引到9不是該有10個嗎?

    2011-08-30 18:25:17 補充:

    恩~了解

    2011-08-31 23:57:02 補充:

    難道是VBS?

    2011-09-01 17:13:29 補充:

    看來那個錯誤

    是宣告一般變數卻給他陣列發生的

  • 10 years ago

    VB.Net ? VB6?

    .Net 可以直接這樣寫- -

    2011-09-01 15:10:24 補充:

    a(x,y) 跟 a(x)(y) 的差別在

    a(x)(y) 可以整組數據改成另一組

    a(3) = array(1,2,3)

    for i% = ... --> a(3,i) = 123

    2011-09-01 15:11:58 補充:

    dim t as integer 會錯的話 有90% 是vbs

    有10% 是串錯integer 0.0 (我在vb6 經常打錯= = 氣死我..

    2011-09-01 15:14:07 補充:

    Dim t As Integer

    t = Array(1,2,3) '這樣都會錯

    但 Dim t( )% 就可以了, 這樣你是宣告 Integer 的陣列

    2011-09-06 00:28:22 補充:

    ... 最好把 % 改回Integer (這裡打% 是因為字數限制+懶, 所以筆誤別怪我/3\\)

    2011-09-06 00:53:38 補充:

    由於VB6 比較討厭 (我都寫.Net 了-︿-)

    那就直接用 Dim t() 好了

    那是因為當你宣告的時候, 跟你寫進去的資料型態不一致

    雖然宣告型態滿重要,

    但vb6 不充許你把Variant 的 Array 寫成 Integer Array

    同時沒有直接弄一個 Integer Array 的方法

    如果要 t = Array() 這樣寫, 唯有不宣告型態

    沒所謂的, 只要你在用的時候注意一下型態就可以

  • How do you think about the answers? You can sign in to vote the answer.
  • Anonymous
    10 years ago

    t = Array(Array(1, 2, 3), Array(1, 2, 3), Array(1, 2, 3))

    2011-08-30 17:42:46 補充:

    他會這樣問的話就應該是VB6了-.-

    C語言這樣寫

    int aaa[9][9]

    是9X9個元素沒錯-.-

    2011-09-01 06:14:24 補充:

    可以宣告成variant

    至於t(0,0)和t(0)(0)的差別...

    使用上沒什麼差別吧...

    我想我還是會一個一個指定值...

    你可以用冒號:來把多行合併成一行

    t(0,0)=1:t(0,1)=1:t(0,3)=1

    t(1,0)=1:t(1,1)=1:t(1,3)=1

    ...

    2011-09-01 16:56:27 補充:

    總覺得VB6該過時了

Still have questions? Get your answers by asking now.