我的计数变量不会增加超过1的值vba
我对此感到抱歉。这里去试图澄清:我的计数变量不会增加超过1的值vba
伪代码:
- 对于列表中的一个(一)各项目 - >设置列表计数变量为零
- 确认各项目两(j)的
- 如果列表中的一个项目匹配列表中的两个项目则计数器和存储值
- 如果count == 1然后做的东西(名单列表中发现了两个有一次一个项目)
- 如果count == 2,然后做其他的东西(列出在列表二中找到的一个项目两次)
- 下一个项目
我的问题是,“股票”变量被递增式内,但该变量的值不会从1更改为2。因此,声明“如果count = 2“永远不会发射。我的图片显示了在j For循环的每次迭代中,我已经打破了代码,以监视“ticker”变量的值。在“ticker”应该从1变为2的迭代中,IF语句内部的等式表明它增加了,但本地窗口中显示的变量值不会改变。
代码:
For i = LBound(SAPanArray) To UBound(SAPanArray)
anString = Trim(Split(SAPanArray(i), " ")(0))
ticker = 0
Set a = FindNextEmpty(Sheets("SAPdata").Range("F4"))
If IsInArrayC(anString, SAPanArray) = 0 Then
Sheets("SAPdata").Cells((a.Row), (a.Column)).Value = Sheets("SAPdata").Cells((i + 3), 9).Value
Sheets("SAPdata").Cells((a.Row), 7).Value = (Sheets("SAPdata").Cells((i + 3), 10).Value) * 2000
Sheets("SAPdata").Cells((a.Row), 7).Interior.Color = RGB(255, 192, 0)
Else
For j = LBound(SAPbulkArray) To UBound(SAPbulkArray)
SAPbulkArray = WorksheetFunction.Transpose(Sheets("SAPdata").Range("F4:F" & (Sheets("SAPdata").Range("F" & Cells.Rows.Count).End(xlUp).Row)))
If InStr((SAPbulkArray(j)), anString) > 0 Then
ticker = (1 + ticker)
dupArray(ticker) = Sheets("SAPdata").Cells((j + 3), 7).Value
End If
If ticker = 1 Then
If ((Sheets("SAPdata").Cells((i + 3), 10).Value) * 2000) <> (Sheets("SAPdata").Cells((j + 3), 7).Value) Then
Sheets("SAPdata").Cells((a.Row), (a.Column)).Value = Sheets("SAPdata").Cells((i + 3), 9).Value
Sheets("SAPdata").Cells((a.Row), 7).Value = (Sheets("SAPdata").Cells((i + 3), 10).Value) * 2000
Sheets("SAPdata").Cells((a.Row), 7).Interior.Color = RGB(255, 192, 0)
End If
ElseIf ticker = 2 Then
summer = (dupArray(1)) + ((Sheets("SAPdata").Cells((i + 3), 10).Value) * 2000)
If summer <> dupArray(2) Then
If Not IsEmpty(Sheets("SAPdata").Cells((j + 3), 11)) Then
Sheets("SAPdata").Cells((j + 3), 7).Value = Sheets("SAPdata").Cells((i + 3), 11).Value
End If
Sheets("SAPdata").Cells((i + 3), 11).Value = Sheets("SAPdata").Cells((j + 3), 7).Value
Sheets("SAPdata").Cells((i + 3), 11).Font.Color = vbWhite
Sheets("SAPdata").Cells((j + 3), 7).Value = ((Sheets("SAPdata").Cells((i + 3), 10).Value) * 2000) + Sheets("SAPdata").Cells((j + 3), 7).Value
Sheets("SAPdata").Cells((j + 3), 7).Interior.Color = RGB(255, 192, 0)
End If
End If
Next
End If
Next
For i = LBound(SAPanArray) To UBound(SAPanArray)
anString = Trim(Split(SAPanArray(i), " ")(0))
ticker = 0
Set a = FindNextEmpty(Sheets("SAPdata").Range("F4"))
If IsInArrayC(anString, SAPanArray) = 0 Then
Else
For j = LBound(SAPbulkArray) To UBound(SAPbulkArray)
If InStr((SAPbulkArray(j)), anString) > 0 Then
ticker = (1 + ticker)
End If
If ticker = 1 Then
ElseIf ticker = 2 Then
OK原谅我的黑客/削减一切,但这个帮助我看了你的逻辑顺序。
由于您的推理线路,只有真实的evers需要是1或0。该
ElseIf ticker =2
应该
Elseif ticker = 0
OR
Else
'some more code
所以,除非股票需要比以往任何时候都1大于yoyu可以节省自己的麻烦。到目前为止,您发布的内容并不需要。
我也这么认为,但是'i循环里面有一个'j循环' 'OP增加'ticker =(1 + ticker)'中的股票。 – 2016-11-23 01:38:45
这是可能的答案,尽管OP需要更详细的说明。 –
好吧,看起来这不是正确的答案,因为股票代码需要引用一个或两个,所以零在i的eahc迭代开始时需要重置。 –
如果您在for循环之前声明ticker = 0,会发生什么? – Sami
这是一大堆代码。你应该缩小这个问题的范围,以便提出一个人们想要回答的问题。参见[mcve]和[问]。 –
这是旁观点,但是这条线是不好的形式:'昏暗的计数器,计数器1,计数器,duplicateCount,行情作为长'。 (除*'ticker'之外的所有变量均隐含为Variant类型,只有'ticker'为'Long'数据类型)。您的其他声明陈述遭受同样的命运。 –