2011-11-27 97 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”。