Excel精英培训网

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

[已解决]代码运行出错,错在哪?求助。

[复制链接]
发表于 2013-3-18 15:36 | 显示全部楼层 |阅读模式
表中的代码运行时,提示:类型不匹配
2013年春季火烈鸟政策物料发放.rar (13.35 KB, 下载次数: 8)
发表于 2013-3-18 15:42 | 显示全部楼层
  1. Sht.Range("F4:F14")= ""
复制代码
这有问题。
回复

使用道具 举报

发表于 2013-3-18 15:43 | 显示全部楼层
单个的RANGE可以这样判断,可你这是一个区域,直接去比较=""就不合适了。
其实你刚问的F4:F14是用在这个场合中的吧。
回复

使用道具 举报

发表于 2013-3-18 15:48 | 显示全部楼层    本楼为最佳答案   
本帖最后由 hwc2ycy 于 2013-3-18 15:55 编辑
  1. Dim arr, temp$
  2. arr = Sht.Range("F4:F14")
  3. temp = Replace(Join(Application.WorksheetFunction.Transpose(arr), ","), ",", "")
  4. If Sht.Range("H1") = "" Or Sht.Range("I1") = "" Or temp = "" Then
复制代码
回复

使用道具 举报

发表于 2013-3-18 15:53 | 显示全部楼层
因为你是读一列,可以先取F4:F14的内容到数据经过转置成一维数组,再用JOIN,生成字符串,再替换连接符,这样可以比较F4:F14全为空的情况。中间有单元格为空的情况就得用INSTR来判断。
回复

使用道具 举报

 楼主| 发表于 2013-3-18 15:53 | 显示全部楼层
hwc2ycy 发表于 2013-3-18 15:48

谢谢你的解答。
一定要用这个语句吗?
03.temp$ = Replace(Join(Application.WorksheetFunction.Transpose(arr), ","), ",", "")
直接用Arr= ""不可以吗?
回复

使用道具 举报

发表于 2013-3-18 15:54 | 显示全部楼层
对了,用temp like "* *"也能判断是否有空单元格,2个*号中间有个空格。
回复

使用道具 举报

发表于 2013-3-18 15:55 | 显示全部楼层
zk888 发表于 2013-3-18 15:53
谢谢你的解答。
一定要用这个语句吗?
03.temp$ = Replace(Join(Application.WorksheetFunction.Transp ...

不行的。一个是数组,一个是字符串。你在工作表里还得用三键方式嘛。
回复

使用道具 举报

 楼主| 发表于 2013-3-18 15:56 | 显示全部楼层
hwc2ycy 发表于 2013-3-18 15:54
对了,用temp like "* *"也能判断是否有空单元格,2个*号中间有个空格。

表中的F4:F14区域是固定的。有没有更简单的方法?
回复

使用道具 举报

发表于 2013-3-18 15:56 | 显示全部楼层
我上面的代码temp$=写错了,变量名里不能用$符号。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-24 20:52 , Processed in 0.708276 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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