ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
12
返回列表 发新帖
楼主: lovershome

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

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-1-16 10:22 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
lovershome 发表于 2020-1-16 09:49
设置断点后,F8一步一步执行,到
  y = Sheets("Manual P").Range("4:4").Find(Sheets("ATP").Cells(4,  ...

再补充一下
只要不双击sheet\ATP的第8列,代码执行没有任何问题

TA的精华主题

TA的得分主题

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

那就是说明
  1. Sheets("Manual P").Range("4:4").Find(Sheets("ATP").Cells(4, Target.Column).Value)
复制代码
没有找到单元格,你看看为什么没找到了嘛

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-1-16 10:54 | 显示全部楼层
microyip 发表于 2020-1-16 10:34
那就是说明没有找到单元格,你看看为什么没找到了嘛

老师,确实没搞懂为什么没有找到单元格。
因为在没有执行双击第8列的时候,这个代码是能正常运行的,所以推测代码是正确的
求教,谢谢

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-1-17 09:23 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
怀疑是因为双击第8列后,target的值出现问题,所以增加了对象变量RNG
set RNG = target,并替换代码
双击第8列后将RNG设置为空
但没有解决问题。

到底哪里出错了。。。

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-1-17 15:02 | 显示全部楼层
本帖最后由 lovershome 于 2020-1-17 15:07 编辑
microyip 发表于 2020-1-16 10:34
那就是说明没有找到单元格,你看看为什么没找到了嘛

老师好
试着定义日期变量c
dim c as date
c=Sheets("ATP").Cells(4, Target.Column).Value
在立即窗口显示c的值是
C=0:00:00


但是在本地窗口查到的数值是
#2020/m/dd#
是不是说明抓取到的数据有问题?如何纠正?
谢谢

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-1-17 15:45 | 显示全部楼层
通过反复测试和查证,最终确认报错的原因是因为相关区域日期格式不统一造成的,把所有日期格式重新设定后解决了问题。
前后经历了半个月时间,查阅了很多网络资料和书籍,看似白费了很多功夫,但在此过程中也学到了校验代码的基本方法,同时优化了代码。
谢谢论坛和各位老师的指导
分享最终的代码如下

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
Dim RNG As Object
Const a As Integer = 200 'set the max of PN quantity
Const b As Integer = a * 9 'set the max of ATP area
Dim c As Date
Dim d As String


    Set RNG = Target
    If RNG.Column > 17 Then 'decide if the target cells are with date
    For i = 0 To a Step 1
    If RNG.Row = 5 + 9 * i Then 'decide if the target cells are in plan rows
    d = Sheets("ATP").Cells(RNG.Row, "d").Value 'the target PN
    c = Sheets("ATP").Cells(4, RNG.Column).Value 'the target date
    Sheets("Manual P").Select
    x = Sheets("Manual P").Range("b:b").Find(what:=d, LookIn:=xlValues).Row 'the row NO.of aim
    Sheets("Manual P").Select
    y = Sheets("Manual P").Range("4:4").Find(what:=c, LookIn:=xlValues, lookat:=xlWhole).Column 'the column NO.of aim
    ActiveSheet.Cells(x, y).Select
    Exit For
    End If
    Next
    End If
   
    If RNG.Column = 8 Then 'decide if the target is component
    If Sheets("ATP").FilterMode Then 'decide if ATP sheet is under sorting
    Sheets("ATP").ShowAllData 'clear the sorting
    End If
    z = Sheets("ATP").Range("d1:d" & b).Find(what:=RNG.Value, LookIn:=xlValues).Row + 7 'the row NO.of aim
    Sheets("ATP").Cells(z, "d").Select
    Set RNG = Nothing 'clear the target cell
    End If

End Sub

TA的精华主题

TA的得分主题

发表于 2020-1-17 16:36 | 显示全部楼层
测试了下,你日期设自定义的格式就不行,你设为日期格式是可以的,原因我也不清楚
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-25 18:46 , Processed in 0.037633 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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