Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1636|回复: 7

[已解决]求助各位高手,vba运行出错怎么办?

[复制链接]
发表于 2013-4-26 20:29 | 显示全部楼层 |阅读模式
我的程序运行错误,要求是:第一,如果附件中sheet2的第八列某一行的绝对值大于40的话,也就是H列,那么就需要把第十列,也就是J列的这一行的数据删除,同时,J列这个被删除值的前后个两个数值也需要删掉;
第二,如果第六列,每个单元格的数减去上一个单元格的数的绝对值大于0.3/0.04的话,也需要把需要把第十列,也就是J列的这一行的数据删除,同时,J列这个被删除值的前后个两个数值也需要删掉;
第三,如果第九列的单元格某个值的绝对值大于10000的话,,也需要把需要把第十列,也就是J列的这一行的数据删除,同时,J列这个被删除值的前后个两个数值也需要删掉;
                                                              
sheet2,sheet3.。。。。。。都进行相同的操作, 谢谢了!

Sub Macro1()

Dim i, j, k, x, y As Long


i = 2
j = 13
k = 1
x = 1

Do While Sheet2.Cells(k, 1) > 0


    Do While Abs(Sheet2.Cells(k + x, 8)) > 40 ''''''''''''''''''''''''''''''眼跳速度
        x = x + 1
    Loop
    If Abs(Sheet2.Cells(k + x, 6) - Sheet2.Cells(k, 6)) > 0.3 / 0.04 Then ''''''''''''''''''''''''''''''眼跳幅度
        For y = k - 2 To k + x + 2
            Sheet2.Cells(y, 10) = ""
        Next y
      ' k = k + x
    End If
        x = 1
   
   If Abs(Sheet2.Cells(k, 9)) > 10000 Then '''''''''''''''''''''''''''''眼跳加速度

  Sheet2.Cells(k, 10) = ""
  Sheet2.Cells(k + 1, 10) = ""
  
  End If

  k = k + 1
Loop

k = 1
x = 1

Do While Sheet3.Cells(k, 1) > 0


    Do While Abs(Sheet3.Cells(k + x, 8)) > 40
        x = x + 1
    Loop
    If Abs(Sheet3.Cells(k + x, 6) - Sheet3.Cells(k, 6)) > 0.3 / 0.04 Then ''''''''''''''''''''''''''''''眼跳幅度
        For y = k - 2 To k + x + 2
            Sheet3.Cells(y, 10) = ""
        Next y
      ' k = k + x
    End If
        x = 1
   
   If Abs(Sheet3.Cells(k, 9)) > 10000 Then

  Sheet3.Cells(k, 10) = ""
  Sheet3.Cells(k + 1, 10) = ""
  
  End If

  k = k + 1
Loop
End Sub
最佳答案
2013-4-26 20:36
Do While Sheets("2313").Cells(k, 1) > 0  '工作表 表示方法错了


    Do While Abs(Sheet21.Cells(k + x, 8)) > 40 ''''''''''''''''''''''''''''''眼跳速度
        x = x + 1
    Loop
    If Abs(Sheet21.Cells(k + x, 6) - Sheet21.Cells(k, 6)) > 0.3 / 0.04 Then ''''''''''''''''''''''''''''''眼跳幅度
        For y = k - 2 To k + x + 2
            Sheet21.Cells(y, 10) = ""
        Next y
      ' k = k + x
    End If
        x = 1
   
   If Abs(Sheet21.Cells(k, 9)) > 10000 Then '''''''''''''''''''''''''''''眼跳加速度

  Sheet21.Cells(k, 10) = ""
  Sheet21.Cells(k + 1, 10) = ""
  
  End If

  k = k + 1
Loop

k = 1
x = 1

合并3.rar

214.74 KB, 下载次数: 2

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-4-26 20:36 | 显示全部楼层    本楼为最佳答案   
Do While Sheets("2313").Cells(k, 1) > 0  '工作表 表示方法错了


    Do While Abs(Sheet21.Cells(k + x, 8)) > 40 ''''''''''''''''''''''''''''''眼跳速度
        x = x + 1
    Loop
    If Abs(Sheet21.Cells(k + x, 6) - Sheet21.Cells(k, 6)) > 0.3 / 0.04 Then ''''''''''''''''''''''''''''''眼跳幅度
        For y = k - 2 To k + x + 2
            Sheet21.Cells(y, 10) = ""
        Next y
      ' k = k + x
    End If
        x = 1
   
   If Abs(Sheet21.Cells(k, 9)) > 10000 Then '''''''''''''''''''''''''''''眼跳加速度

  Sheet21.Cells(k, 10) = ""
  Sheet21.Cells(k + 1, 10) = ""
  
  End If

  k = k + 1
Loop

k = 1
x = 1
回复

使用道具 举报

 楼主| 发表于 2013-4-26 20:50 | 显示全部楼层
hoogle 发表于 2013-4-26 20:36
Do While Sheets("2313").Cells(k, 1) > 0  '工作表 表示方法错了

这样也不对,说是子过程或函数未定义。
回复

使用道具 举报

发表于 2013-4-26 21:00 | 显示全部楼层
你要全部都改了,不是只有这一个地方
回复

使用道具 举报

 楼主| 发表于 2013-4-26 21:17 | 显示全部楼层
hoogle 发表于 2013-4-26 21:00
你要全部都改了,不是只有这一个地方

我是全部都改了,可还是不行啊。
回复

使用道具 举报

 楼主| 发表于 2013-4-26 21:17 | 显示全部楼层
子过程或函数未定义啊
回复

使用道具 举报

发表于 2013-4-26 21:21 | 显示全部楼层
你再传下附件                       
回复

使用道具 举报

 楼主| 发表于 2013-4-26 21:31 | 显示全部楼层
hoogle 发表于 2013-4-26 21:21
你再传下附件

多谢了,现在貌似能运行了,刚才粘贴错了一点,谢谢了啊。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-17 03:01 , Processed in 0.537344 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表