ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

EH搜索     
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
Excel不给力? 何不试试FoxTable! Excel 2016函数公式学习大典 Office知识技巧免费学 打造核心竞争力的职场宝典
300集Office 2010微视频教程 Tableau-数据可视化工具 精品推荐-800套精选PPT模板,点击获取 ExcelHome出品 - VBA代码宝免费下载
你的Excel 2010实战技巧学习锦囊 欲罢不能, 过目难忘的 Office 新界面 Excel VBA经典代码实践指南
查看: 323|回复: 16

[求助] 请老师帮忙分析:双击条件单元格后跳转,设置两个条件时,其中之一报错

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-1-14 14:50 | 显示全部楼层 |阅读模式
向各位老师请教
代码如下

问题:
当单独写入第一段代码,或是第二段代码时,运行OK
当将全部代码都写入时
1、先双击满足第一段代码的单元格,运行OK;
2、但如果先双击满足第二段代码的单元格后再双击满足第一段代码的单元格,报错;
3、无论何种操作,双击满足第二段代码的单元格时,运行OK;

文件如附件
谢谢

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)'双击单元格时触发
Dim i As Integer
Dim x As Integer
Dim y As Integer
Dim z As Integer

    If Target.Column > 17 Then 'decide if the target cell is component '如果双击的单元格列标大于17

    For i = 0 To 1500 Step 1 'check with in 1500 rows' area '并且双击的目标单元格行标满足=i+5
    If Target.Row = 5 + 9 * i Then
    Sheets("Manual P").Select '跳转到Sheets"Manual P"
    x = Sheets("Manual P").Range("b:b").Find(Sheets("ATP").Cells(Target.Row, "d").Value).Row '给x赋值为双击的目标单元格的值在Sheets"Manual P"中B列所在位置的行数
    y = Sheets("Manual P").Range("4:4").Find(Sheets("ATP").Cells(4, Target.Column).Value).Column '给y赋值为双击的目标单元格的值在Sheets"Manual P"中B列所在位置的列数
    Sheets("Manual P").Cells(x, y).Select  '选中单元格(x,y)
    Exit For
    End If
    Next
    End If
   
    If Target.Column = 8 Then '如果双击的单元格列标等于8
    If Sheets("ATP").FilterMode Then '同时表格ATP有筛选
    Sheets("ATP").ShowAllData '取消筛选
    End If
    z = Sheets("ATP").Columns("d").Find(what:=Target.Value, LookIn:=xlValues).Row + 7 'get the row NO. of target cell in column D
    '给z赋值为双击的目标单元格的值在Sheets"Manual P"中B列所在位置的行数+7
    Sheets("ATP").Cells(z, "d").Select '选中单元格(z, "d")
    End If
End Sub

test.rar

304.24 KB, 下载次数: 5

双击条件单元格跳转

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-1-15 09:04 | 显示全部楼层
顶,有没有老师帮忙指点一下,谢谢

TA的精华主题

TA的得分主题

发表于 2020-1-15 09:10 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2020-1-15 09:19 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-1-15 11:28 | 显示全部楼层
microyip 发表于 2020-1-15 09:10
这个好像之前见过的贴,又重新发帖

老师,上周确实发过,您也给做了指导,非常感谢。
但无奈确实刚入门,没搞懂问题出在哪里了
所以又重新发了一遍

能否帮忙进一步指导一下,谢谢

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-1-15 11:35 | 显示全部楼层

老师好,感谢关注
是这样的
代码想实现的功能是:
条件A、如果双击第5、14.....5+9i行大于18列的数据,跳转到manual P中,与双击单元格的日期及零件号相同的单元格。
条件B、如果双击第8列(component)的数据,跳转到sheet(ATP)中,D列对应零件号的单元格。
实际运行的时候
1、如果仅双击满足条件A的单元格,则跳转运行都OK
2、如果双击满足条件B的单元格,然后再双击满足条件A的单元格,就会报错
3、无论操作顺序如何,任何时候双击满足条件B的单元格,跳转都正常

经过测试,如果仅写入第一段代码,或者仅写入第二段代码,操作都OK

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-1-16 08:34 | 显示全部楼层
哪位老师帮忙看一下,报错出现的原因是什么?
查了很多资料,书也查了,没找到问题所在
谢谢啦

TA的精华主题

TA的得分主题

发表于 2020-1-16 08:58 | 显示全部楼层
设置断点,F8一步步执行就知道错误在哪了

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-1-16 09:49 | 显示全部楼层
microyip 发表于 2020-1-16 08:58
设置断点,F8一步步执行就知道错误在哪了

设置断点后,F8一步一步执行,到
  y = Sheets("Manual P").Range("4:4").Find(Sheets("ATP").Cells(4, Target.Column).Value).Column报错
与系统提示一致

我在x、y的赋值语句后面,分别加入了让sheet\manual P的A1和B1单元格分别等于x,y的语句
    Sheets("Manual P").Cells(1, 1) = x
    Sheets("Manual P").Cells(1, 2) = y

当运行出错的时候发现,x能够得到想要的值,y无法赋值
出错的语句应该就是
    y = Sheets("Manual P").Range("4:4").Find(Sheets("ATP").Cells(4, Target.Column).Value).Column
跟系统提示是一致的

但不知道为什么会导致此错误。

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-1-16 09:57 | 显示全部楼层
lovershome 发表于 2020-1-16 09:49
设置断点后,F8一步一步执行,到
  y = Sheets("Manual P").Range("4:4").Find(Sheets("ATP").Cells(4,  ...

补充一下,如果双击跳转只设置了条件A:如果双击第5、14.....5+9i行大于17列的数据就跳转的话,所有的代码给y赋值的语句不变,运行是没有任何问题的

当代码同时设置了条件A和B,并且,我先双击过第8列,就会导致y无法赋值

我推测是因为目标单元格因为B条件的语句的影响,造成了什么错误,导致y无法赋值

不懂的是,为什么会有错误
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关注官方微信,高效办公专列,每天发车

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2020-5-27 16:54 , Processed in 0.074403 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2020 Wooffice Inc.

   

沪公网安备 31011702000001号 沪ICP备11019229号

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:徐怀玉律师 李志群律师

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