2011-11-27 118 views
0

這是我第一次使用VB。我大多習慣於在matlab中工作,並發現在matlab中我認爲理所當然的東西必須在VB中顯式聲明。令人沮喪!在Visual Basic中聲明數組大小

特別是我需要聲明兩個數組大小s1和s2。正如你在下面的代碼中看到的那樣,s1是變量「stratum」等於1的集合「n」中的元素的數量。s2是變量「stratum」等於2的集合「n」中的元素的數量。漂亮直截了當。

我的方法是簡單地將層變量1循環到n並計數這些出現次數;然後將結果聲明爲常量。這會在matlab中運行,但VB不接受s1和s2作爲常量。在循環之後插入debug.print命令時,它甚至不會顯示s1和s2。

我已瀏覽已完成的相關帖子。我很欣賞任何建議。謝謝。

Sub TOAinput() 

    Const n As Integer = 648 

    Dim stratum(n), hybrid(n), acres(n), hhsz(n), offinc(n) 

    For i = 1 To n 
     stratum(i) = Worksheets("hhid level").Cells(i + 1, 2).Value 
    Next i 

    Dim s1 As Integer 
    Dim s2 As Integer 


    s1 = 0 
    s2 = 0 
    For i = 1 To n 
     If stratum(i) = 1 Then 
      s1 = s1 + 1 
     Else: 
      s2 = s2 + 1 
     End If 
    Next i 

    Dim acres1(s1), hhsz1(s1), offinc1(s1), acres2(s2), hhsz2(s2), offinc2(s2) 

    (...) 
    End Sub 

回答

0

這應該稍好於你:

Sub TOAinput() 

Const n As Integer = 648 

Dim stratum(n) As Integer 
Dim hybrid(n) As Integer 
Dim acres(n) As Integer 
Dim hhsz(n) As Integer 
Dim offinc(n) As Integer 

Dim i As Integer 

For i = 1 To n 
    stratum(i) = Worksheets("hhid level").Cells(i + 1, 2).Value 
Next 

Dim s1 As Integer 
Dim s2 As Integer 

For i = 1 To n 
    If stratum(i) = 1 Then 
     s1 = s1 + 1 
    Else 
     s2 = s2 + 1 
    End If 
Next 

Dim acres1() As Integer 
Dim hhsz1() As Integer 
Dim offinc1() As Integer 
Dim acres2() As Integer 
Dim hhsz2() As Integer 
Dim offinc2() As Integer 

ReDim acres1(s1) 
ReDim hhsz1(s1) 
ReDim offinc1(s1) 
ReDim acres2(s2) 
ReDim hhsz2(s2) 
ReDim offinc2(s2) 

(...) 
End Sub 

我也建議,如果可能的話,你聲明的數組類型。我假定它們都是整數,並且適當地修改了代碼,但這可能不適用於您的情況(即不同的數據類型)。

+0

昏暗sumac1,sumac2,mhhsz1,mhhsz2,cvhhsz1,cvhhsz2 sumac1 = SUM(acres1) sumac2 = SUM(acres2) mhhsz1 =平均(hhsz1) mhhsz2 =平均(hhsz2) cvhhsz1 = STDEV(hhsz1 )/ Average(hhsz1) cvhhsz2 = StDev(hhsz2)/ Average(hhsz2) – ben

+0

非常感謝。無視我無意中發佈的亂碼。 – ben

0

一對夫婦的意見:

如果你改變你的代碼的S1和S2的值(如你在你的for循環),他們不應該被declated爲const。在聲明之前,您似乎也試圖使用s1和s2。

我不確定你正在試圖用「Const s1 As Integer = s1」語句來做什麼。您可能只想在代碼頂部附近「Dim s1 as Integer」和「Dim s2 as Integer」。