[英]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.