簡體   English   中英

在Visual Basic中聲明數組大小

[英]Declaring array size in Visual Basic

這是我第一次與VB合作。 我最習慣於在matlab中工作,發現在matlab中我想當然的很多東西必須在VB中明確聲明。 令人沮喪!

特別是我需要聲明兩個數組大小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

幾點評論:

如果您要在代碼中更改s1和s2的值(就像在for循環中一樣),則不應將它們定義為Const。 您似乎還試圖在聲明它們之前使用s1和s2。

我不確定您到底想使用“ Const s1 As Integer = s1”語句做什么。 您可能只希望在代碼頂部附近添加“將Dim s1作為整數”和“將Dim s2作為整數”。

這應該對您更好一些:

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM