全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 Excel
1191 1
2014-01-02
TRD_Daylr.xls有三列,分别是股票代码、交易日、收益率,RE_A1.XLS也有三列,分别是股票代码、公布日期、交易所。我想把RE_A1.XLS里所有公布日期是2001年的公司在公布日期前三天至后两天的收益率放在TRD_Daylr.xls的sheet 2中,找到了下面这段代码,可是提示下标越界,怎么回事啊?

Sub aaa()
Dim A1 As Worksheet, A2 As Worksheet, p As Integer, ts As Integer, I As Integer, j As Integer
ts = 1
Set A1 = Workbooks("RE_A1.xls").Worksheets("Sheet1")
Set A2 = Workbooks("TRD_Dalyr.xls").Worksheets("Sheet1")
Workbooks("TRD_Dalyr.xls").Worksheets("Sheet2").Select
m = A1.UsedRange.Rows.Count
n = A2.UsedRange.Rows.Count
For I = 2 To m
If Year(A1.Cells(I, 2)) = 2001 Then
   For j = 2 To n
     If A1.Cells(I, 1) = A2.Cells(j, 1) And A1.Cells(I, 2) = A2.Cells(j, 2) Then
      For p = -3 To 2
      Cells(ts + 4 + p, 1) = A2.Cells(j + p, 1)
      Cells(ts + 4 + p, 2) = A2.Cells(j + p, 2)
      Cells(ts + 4 + p, 3) = A2.Cells(j + p, 3)
      Cells(ts + 4 + p, 4) = A1.Cells(I, 3)
      Next p
      ts = ts + 6
     End If
    Next j
   End If
  Next I
End Sub
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2014-1-5 17:18:10
你没有说是哪一句话出现越界错误(照理说,VBA的Debug会提示的)。在不知是哪句出错的情况下,我看:
可能性1:是Set A2 = Workbooks("TRD_Dalyr.xls").Worksheets("Sheet1")出错,因为你的文学说明说的是文件名是TRD_Daylr.xls,但你的程序那句是TRD_Dalyr.xls,注意两者是y与l的顺序不同,文件名不同,是越界的第1种可能。当然,此句的下一句也有文件名,要改就要一起改。
可能性2:For p = -3 To 2
       Cells(ts + 4 + p, 1) = A2.Cells(j + p, 1)
注意p有可能是-3,那么j+p(由于j>=2)有可能是-1或0,这都有可能造成cells(j+p,1)越界的情况
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群