Min*_* Ha 2 excel vba excel-vba
我已经构建了一个简单的函数,但它需要大约11-12个具有相同整数类型的变量.每次我尝试使用超过10个变量时,第一个变量经常出错,而其他变量被正确计算.如果我将变量数减少到10,那么它们都是正确的.这是否意味着hat vba一次只能存储10个相同类型的变量?或者这是我的电脑'限制:))
这是我的代码,btb返回错误的值,而其他的是正确的,但如果我删除变量"a"和所有相关的代码,那么btb返回正确
Sub regionCount()
Dim btb, dbb, hn, ntb, dnb, tnbBS, tnbNS, hcm1, hcm2, hcm3, a As Integer
btb = dbb = hn = dnb = tnbBS = tnbNS = hcm1 = hcm2 = hcm3 = a = 0
For Each mycell In Worksheets(1).Range("E2:E382")
If mycell.Value = "Khu vuc Bac Trung Bo" Then
btb = btb + 1
ElseIf mycell.Value = "Khu vuc Dong Bac Bo" Then
dbb = dbb + 1
ElseIf mycell.Value = "Khu vuc Ha Noi" Then
hn = hn + 1
ElseIf mycell.Value = "Khu vuc Nam Trung Bo" Then
ntb = ntb + 1
ElseIf mycell.Value = "Khu vuc Dong Nam Bo" Then
dnb = dnb + 1
ElseIf mycell.Value = "Khu vuc Tay Nam Bo - Bac song hau" Then
tnbBS = tnbBS + 1
ElseIf mycell.Value = "Khu vuc Tay Nam Bo - Nam song hau" Then
tnbNS = tnbNS + 1
ElseIf mycell.Value = "Khu vuc TPHCM_1" Then
hcm1 = hcm1 + 1
ElseIf mycell.Value = "Khu vuc TPHCM_2" Then
hcm2 = hcm2 + 1
ElseIf mycell.Value = "Khu vuc TPHCM_3" Then
hcm3 = hcm3 + 1
ElseIf mycell.Value = "-- None --" Then
a = a + 1
End If
Next mycell
Range("C5").Value = btb
Range("d5").Value = dbb
Range("e5").Value = hn
Range("f5").Value = ntb
Range("g5").Value = dnb
Range("h5").Value = tnbBS
Range("i5").Value = tnbNS
Range("j5").Value = hcm1
Range("k5").Value = hcm2
Range("l5").Value = hcm3
Range("m5").Value = a
Run Code Online (Sandbox Code Playgroud)
结束子
你的陈述
btb = dbb = hn = dnb = tnbBS = tnbNS = hcm1 = hcm2 = hcm3 = a = 0
Run Code Online (Sandbox Code Playgroud)
应该
btb = 0
dbb = 0
hn = 0
dnb = 0
tnbBS = 0
tnbNS = 0
hcm1 = 0
hcm2 = 0
hcm3 = 0
a = 0
Run Code Online (Sandbox Code Playgroud)
考虑一下这句话
a = b = c
Run Code Online (Sandbox Code Playgroud)
这被解释为
a = (b = c)
Run Code Online (Sandbox Code Playgroud)
哪里(b = c)是逻辑表达式.因此,如果b是相同的值c(如果变量全部保留为默认初始化,0那么a它将被设置为)True(即-1)
你的语句布局方式会将最左边的值设置为-1(如果行中有奇数个变量)或者设置为0(如果你有偶数).
还应该指出的是
Dim btb, dbb, hn, ntb, dnb, tnbBS, tnbNS, hcm1, hcm2, hcm3, a As Integer
Run Code Online (Sandbox Code Playgroud)
相当于
Dim btb As Variant, dbb As Variant, hn As Variant, ntb As Variant, dnb As Variant, _
tnbBS As Variant, tnbNS As Variant, hcm1 As Variant, hcm2 As Variant, _
hcm3 As Variant, a As Integer
Run Code Online (Sandbox Code Playgroud)
它不一样
Dim btb As Integer, dbb As Integer, hn As Integer, ntb As Integer, dnb As Integer, _
tnbBS As Integer, tnbNS As Integer, hcm1 As Integer, hcm2 As Integer, _
hcm3 As Integer, a As Integer
Run Code Online (Sandbox Code Playgroud)