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

find方法debug时可以得到数据,直接运行却不可以,该怎么解决

2012-03-25 
find方法debug时可以得到数据,直接运行却不可以目的:在登录表中点击按钮会逐一将F20:G54 中的日期取出,在S

find方法debug时可以得到数据,直接运行却不可以
目的:在登录表中点击按钮会逐一将F20:G54 中的日期取出,在SAT LIST中查找相同日期,然后在下面对应的单元格中写入数据,结果,使用F8逐步执行可以得到结果,但是直接点击按钮运行则得不到结果。请各位帮忙。弄了一天了。
Private Sub CommandButton2_Click()
'Dim mdate As Date
'Dim ndate As Date
'Dim tdate As Date

'写入rawdata
'找出需要填写的行
jdno = Range("f3")
With Workbooks("RT 收件登录表 new2.xls").Worksheets("rawdata").Range("a1:a3000")
  Set c = .Find(jdno, LookIn:=xlValues)
  If Not c Is Nothing Then
  daterow = c.Row
  firstAddress1 = c.Address
  Do
  Set c = .FindNext(c)
   
  Loop While Not c Is Nothing And c.Address <> firstAddress1
  End If
End With
'找出要填写的列

'先判断月份(???适用新建档案,不适用修改档案)
Set mrow = Worksheets("schedule").Range("b1").End(xlDown).Offset(1, 0)
r = mrow.Row '找到最后一行数据的行数
rd = r - 1

'单元格引用方法Worksheets(1).Cells(1, 1).Value = 24

'使用for 循环来取得schedule中日期,在日历中找到相同的日期在其对应的单元格写入试验数据
  For j = 6 To 7
For i = 20 To rd

  mdate = Workbooks("RT 收件登录表 new2.xls").Worksheets("schedule").Cells(i, j).Value
  ndate = Workbooks("RT 收件登录表 new2.xls").Worksheets("schedule").Cells(i, j).Value
  If mdate > 40000 And mdate < 50000 Then
   
' r = Sheets.Count
' For m = 1 To r
'' with
'' If mdate >= 40299 And mdate < 40330 Then
' With Worksheets(m).Range("a1:ca1")
'' Set col = .Find(mdate, LookIn:=xlValues)
'' If Not col Is Nothing Then
'' 'datecolumn = col.Column
'' firstAddress2 = col.Address
'' Set ddd = col.Offset(daterow - 1, 0)
'' q1 = ddd.Address
'' qqq = ddd.Column
'' Do
'' Set col = .FindNext(col)
'' Loop While Not col Is Nothing And col.Address <> firstAddress2
'' 'ddd.Value = ddd.Value & "!" & Worksheets("schedule").Cells(i, 2).Value & " " & Worksheets("schedule").Cells(i, 3).Value & " " & Worksheets("schedule").Cells(i, 4).Value & " " & Worksheets("schedule").Cells(19, j).Value
'' End If
' Exit For
'
'
' End With
'
'
'
'
' Next
   
  '判断是否为SAT
  tp2 = Workbooks("RT 收件登录表 new2.xls").Worksheets("schedule").Cells(i, 4).Value
  If Right(Workbooks("RT 收件登录表 new2.xls").Worksheets("schedule").Cells(i, 4).Value, 3) = "SAT" Then
  '写入SAT数据表
  scount = Workbooks("2010 SAT list.xls").Sheets.Count
  For n = 1 To scount
   
  With Workbooks("2010 SAT list.xls").Worksheets(n).Range("b1:ca1")
  Set satcol1 = .Find(ndate, LookIn:=xlValues)
  If Not satcol1 Is Nothing Then
  'datecolumn = col.Column
  firstAddress3 = satcol1.Address
  Set satddd = satcol1.Offset(daterow - 1, 0)
  'qqq = ddd.Column
  Do
  Set satcol1 = .FindNext(satcol1)
  Loop While Not satcol1 Is Nothing And satcol1.Address <> firstAddress3


  'Set satddd = satcol.Offset(daterow - 1, 0)
  satddd.Value = Workbooks("RT 收件登录表 new2.xls").Worksheets("schedule").Cells(i, j).Offset(0, 6)
  Exit For
  End If
  End With
  Next
'
' ElseIf Right(Worksheets("schedule").Cells(i, 4).Value, 3) = "F/T" Then
' '写入F/T数据表
' scount = Workbooks("2010 FT list.xls").Sheets.Count
' For n = 1 To scount
' With Workbooks("2010 SAT list.xls").Worksheets(n).Range("b1:ca1")
'
' Set satcol = .Find(ndate, LookIn:=xlValues)
' If Not satcol Is Nothing Then
' 'datecolumn = col.Column
' firstAddress3 = satcol.Address
' Set satddd = satcol.Offset(daterow - 1, 0)
' 'qqq = ddd.Column
'' Do
'' Set satcol = .FindNext(satcol)
'' Loop While Not satcol Is Nothing And satcol.Address <> firstAddress3
' 'Set satddd = satcol.Offset(daterow - 1, 0)
' satddd.Value = Workbooks("RT 收件登录表 new2.xls").Worksheets("schedule").Cells(i, j).Offset(0, 6)
' Exit For
' End If
' End With
' Next
'
'
  End If
  '判断是否为F/T
   
   
  End If
Next
Next
MsgBox "成功写入排程数据"

End Sub


[解决办法]
你把文件发给我,帮你看看
amoon2000@sohu.com

热点排行