在excel中如果测试在手动键入值但从单元格

时间:2016-03-02 15:40:19

标签: excel vba excel-vba

使用excel VBA,我构建了一个字典并填充它。我做了我的测试并且做得很好。 之后,在一个循环中,我必须测试是否存在一个键来执行某些操作:

For i3 = 2 To n 'n is the the number of rows
    If dicos.Exists(ActiveSheet.Range("T" & i3)) Then
        ActiveSheet.Range("N" & i3) = dicos(ActiveSheet.Range("T" & i3)) + 1
    Else
        ActiveSheet.Range("N" & i3) = 1
    End If
Next

它不起作用,我在所有列N中都有1个。我尝试用T列中的一些值进行手动测试并找到它! 任何人都可以向我解释我做错了什么以及为什么当我手动输入值时测试是肯定的,当程序必须从单元格中取出它时它是否为负(T列)? 非常感谢你。

1 个答案:

答案 0 :(得分:1)

Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet1")

Dim dicos As Dictionary
Set dicos = new Dictionary

'Populate dicos....

For i = 2 To n 'n is the the number of rows
    If dicos.Exists(ws.Cells(i, 20).Value) Then
        ws.Cells(i, 14) = dicos.Item(ws.Cells(i, 20).Value) + 1
    Else
        ws.Cells(i, 14) = 1
    End If
Next

我认为问题是你没有在添加剂行上使用.Value,因此它只是在那里放1。当我测试您的代码时,我将+1更改为+4,并在cells(i,14)而不是1中获得了4。