先把简单的代码发下Sub xx()
Dim sh1, sh2
Set sh1 = Worksheets("list")
Set sh2 = Worksheets("Sheet1")
Dim i As Integer
Dim j As Integer
For i = 2 To 603
  For j = 2 To 538
  If sh1.Cells(i, 2) = sh2.Cells(j, 2) Then
  'sh1.Activate       大家注意这儿
  sh1.Cells(i, 24) = sh2.Cells(j, 13)
   sh1.Cells(i, 25) = sh2.Cells(j, 14)
 '   sh2.Activate      
    sh2.Cells(j, 2).Font.Color = RGB(255, 0, 0)
  End If
  
  Next
Next
End Sub
一运行开始正常,到四百多时就提法错误1004,程序定义或定义对象错误,第一次支行时没有加sh1.Activate,我想了下,加上了激活表那一句,第一个表就OK了,但是第二个表加个了sh1.Activate这一句,错误1004又出来了,这是什么问题??
想了半天,语句应该没有问题,而且我一按CTRL+C它就会提示本表不能再使用其它字体,很有点儿头大,就把所有的数据全复制到别外的表中去运行VBA,结果很好,大家说下,这个问题它到底是EXCEL表那个设置出了问题,怎么改?

解决方案 »

  1.   

    格值没有问题,我试了下,在提示1004错误时,你从出错的数据开始,例如 for i=432 to 500,运行后会提示1004错误,但是它会把i=432时的我想要的结果提出来!但只是提出一行!你跟在后面用i=433...它也会只做一行的结果。很郁闷
      

  2.   

    说句实在话。LZ实现的功能就是单元格比较,然后赋值而已。有时间调这个程序不如做个公式就都出来了。
    如果LZ非要调这个的话,把出错的工作簿上传到一个地方,大家帮忙看看。光看你说的错误提示,无法判断。
      

  3.   

    VBA对表进行赋值操作是不需要对表进行激活的(绝大多数操作都不需要激活),另外你这种操作方式运行效率太低。
    应该先把值赋值的数组,然后进行操作,这样的运行效率高,而且还可能解决出现的问题。
      

  4.   

    oo  up..............................
      

  5.   

    在XCSDN或别处有什么地方能把这个文件的最原始的东东传下,给大家下载后看看?