Excel精英培训网

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

[已解决]请教我的语句里的"f”值为什么得出错误值?

[复制链接]
发表于 2012-12-10 00:50 | 显示全部楼层 |阅读模式
本帖最后由 mfk1288 于 2012-12-10 00:53 编辑

我的表格的sheet1里的D2单元格的值是从数据有效性得出来的。而sheet2表里的match公式也可以得出正确的值,但是我的代码却得不出正确的结果。
  1. Sub tt()
  2. d = Sheets("Sheet1").Range("D2")
  3. With Sheets("Sheet2")
  4. f = Application.Match(d, .Range("A:A"), 0)
  5. If IsNumeric(f) Then
  6. MsgBox f
  7. End If
  8. End With
  9. End Sub
复制代码
我先后在d = Sheets("Sheet1").Range("D2")后面加上.value或者.text都不行。而以下代码却能得出正确的结果。
  1. Sub tt1()
  2. With Sheets("Sheet2")
  3. f = Application.Match(Sheets("Sheet1").Range("D2"), .Range("A:A"), 0)
  4. If IsNumeric(f) Then
  5. MsgBox f
  6. End If
  7. End With
  8. End Sub
复制代码
我再在第一段代码加入一句,
  1. Sub tt()
  2. d = Sheets("Sheet1").Range("D2")
  3. With Sheets("Sheet2")
  4. f = Application.Match(d, .Range("A:A"), 0)
  5. If IsNumeric(f) Then
  6. MsgBox f
  7. End If
  8. MsgBox d = .Range("A9")
  9. End With
  10. End Sub
复制代码
却能提示是"True”,为什么呢?要如何改第一段代码才能得出正确结果呢?
Book1.rar (32.52 KB, 下载次数: 14)
发表于 2012-12-10 07:19 | 显示全部楼层    本楼为最佳答案   
  1. Sub tt()
  2. Dim d As Long
  3.     d = Sheets("Sheet1").Range("D2")
  4.     With Sheets("Sheet2")
  5.         f = Application.Match(d, .Range("A:A"), 0)
  6.         If IsNumeric(f) Then
  7.             MsgBox f
  8.         End If
  9.          MsgBox d = .Range("A9")
  10.     End With
  11.    End Sub
复制代码
我想d没有设置成数据类型的所致,d = Sheets("Sheet1").Range("D2")
没设置结果,d以文本形式出现

评分

参与人数 1 +5 金币 +10 收起 理由
suye1010 + 5 + 10 分析的极是!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-17 12:53 , Processed in 0.275238 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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