首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

EXCEL VBA中的小疑点,

2012-12-30 
EXCEL VBA中的小问题,急Sub 按钮1_单击()Dim objDictAs ObjectDim objShtNewAs WorksheetDim objShtOldAs

EXCEL VBA中的小问题,急
Sub 按钮1_单击()
      Dim objDict    As Object
      Dim objShtNew  As Worksheet
      Dim objShtOld  As Worksheet
      Dim i&, k&, strTemp$
   Set objDict = New Dictionary
   ' 假设你的‘最新’的名单表是 Sheet1,旧名单表是 Sheet1
   ' 具体情况,你自己处理
   Set objShtNew = Sheets("Sheet1")
   Set objShtOld = Sheets("Sheet2")
   ' 假设你的‘姓名’是A列,手机号是B列
   '   第一行是表头,姓名从第二行开始记录的
   k = WorksheetFunction.CountA(objShtOld.Range("A:A"))
   For i = 2 To k
      objDict.Add objShtOld.Cells(i, 1).Text, vbNullString
   Next
   k = WorksheetFunction.CountA(objShtNew.Range("A:A"))
   For i = 2 To k
      strTemp = objShtNew.Cells(i, 1).Text
      If Not objDict.Exists(strTemp) Then
         ' 输出‘新姓名’的行号、姓名、手机号
         Debug.Print i, strTemp, objShtNew.Cells(i, 2).Text, Cells(i, 3).Text, Cells(i, 4).Text, Cells(i, 5).Text
    
      End If
   Next
   objDict.RemoveAll
   Set objDict = Nothing
   Set objShtNew = Nothing
   Set objShtOld = Nothing
   
End Sub


大量数据的时候, 出现运行错误'457'  提示我 该关键字已经与该集合的一个元素相关联

10几条数据的时候是可用的,几w条就不行了 

求大神啊
[解决办法]
问题应该是出在这句上:
objDict.Add objShtOld.Cells(i, 1).Text, vbNullString

这个,你关键要确认是否有重名的。
10几W,很有可能的……

热点排行