求助EXCEL VBA的家庭问题求助

查看: 1123|回复: 7
求助关于VBA中like的使用问题
阅读权限20
在线时间 小时
QQ截图10.png (35.76 KB, 下载次数: 10)
16:10 上传
如图所示,我表格中更有6535行,现在我向实现一个功能是,查找D列的单元格中是否含有某个字段,然后在相应的E列单元格内写入一个字段。
比如说倘若D列含有等离子的单元格,在其对应的E列单元格写入“出口”两字。
如下面我写了一些代码,为什么不对呢?
Private Sub CommandButton1_Click()
For i = 1 To 50
&&If Cells(i, 4).Value Like &等离子& Then
& &&&Cells(i, 5) = &出口&
& & End If
阅读权限95
在线时间 小时
本帖最后由 doitbest 于
16:27 编辑
If instr(Cells(i, 4).Value, &等离子&)&&Then
if Cells(i, 4).Value like &*等离子*&
阅读权限20
在线时间 小时
求助 求助 麻烦大神帮帮满
阅读权限20
在线时间 小时
doitbest 发表于
If instr(Cells(i, 4).Value, &等离子&)&&Then
十分感谢 果然好用,但是因为我有6000多行 太慢了 有没有什么好的办法快一点呢
阅读权限20
在线时间 小时
& & & & & & & &
doitbest 发表于
If instr(Cells(i, 4).Value, &等离子&)&&Then
if Cells(i, 4).Value like &*等离子*&
对对 忘记两个星号 十分感谢了
阅读权限30
在线时间 小时
& & & & & & & &
ljpassport 发表于
十分感谢 果然好用,但是因为我有6000多行 太慢了 有没有什么好的办法快一点呢
6000行也会&&很快
阅读权限50
在线时间 小时
用数组代替逐个单元格操作
阅读权限70
在线时间 小时
用数组吧Private Sub CommandButton1_Click()
arr = [A1:A6000]: crr = [E1:E6000]
For i = 1 To UBound(arr)
& & If arr(i, 1) Like &*等离子*& Then
& && &&&crr(i, 1) = arr(i, 1)
& & End If
Next
[E1:E6000] = crr
End Sub
复制代码
浏览过的版块
玩命加载中,请稍候
玩命加载中,请稍候
Powered by
本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任! & & 本站特聘法律顾问:徐怀玉律师 李志群律师查看: 3831|回复: 7
关于Value的问题
在VBA代码中有时候需要在单元格后面加.Value,有时候又可以省略,不知道怎么个区别,请哪位给予详细的说明?谢谢
这个可以试一下嘛,大多的情况下可以省略,如果出现错误可以加上试一下
wayy 发表于
这个可以试一下嘛,大多的情况下可以省略,如果出现错误可以加上试一下
不是这个意思,它在什么情况下能省略与不能省略肯定有规律的?!
(8.58 KB, 下载次数: 308)
21:10 上传
点击文件名下载附件
兰版书上的例子。多数时一样,极少数时有区别。如文本框的值赋给单元格时。
不知道还有没有其他例子
wenchduan 发表于
不是这个意思,它在什么情况下能省略与不能省略肯定有规律的?!
在这个时候必须加:
dim a()
a=单元格区域.value
复制代码
其它好象都按默认为value
进来学习下,顺便赚个经验回家
加与不加在于识别不了的时候:即当你把单元格赋值给变量时,变量可以接收对象与值,这个时候就要区分 。【因为一般情况下对象赋值需用SET,故一般情况下可以省略】
我所知的,只有在字典添加KEY时,若KEY为RNG.VALUE,则后面的.VALUE不可省,否则添加 为对象。
当其他的RNG与RNG.VALUE都可以进行赋值时,就应该注意是否要省略了。
很多人都说,其实.Value是Range的默认属性,所以可以省略,但当我们有时候省略时,又会出错,这是怎么一回事呢?
& && &可以这么说,即使Range的默认属性是.Value,当我们没有明确指定时,编译时就需要进行“自动类型适应”的过程,如果过程进行不下去,就会有错误发生,如:&&i = Range(&A1&)& & 或& &Range(&A1&) = 256,因为有一种“默认”及“适应”性,所以不会把A1的 Address属性 ($A$1) 赋给 i ,也不会把256 赋给A1的Height属性,而是赋给了.Value。
& && &举个例子来说,比如,工作表2的名称默认是SHEET2, 我们在A1单元格输入SHEET2工作表的名称,也就是说Range(&A1&) = &SHEET2&,
& && &我们现在想删除A1单元格所指定的工作表,用 Sheets(Range(&A1&)).Delete 会怎么样呢?
& && &答案是:会报错——“运行错误'13',类型不匹配”。但稍作修改,比如说将A1单元格的内容修改为2,那么仍然是用Sheets(Range(&A1&)).Delete这代码,
& && &运行后会怎么样呢?答案是:不会出错。
& && &那么,A1仍然是“SHEET2”,而是将代码改为Sheets(CStr(Range(&A1&))).Delete,结果又怎么样呢?答案是:正常运行!
& && &这说明什么问题呢?
& && &首先,Sheets()指的是某个对象,括号里可以用数字、也可以用文本作为参数来表示某个工作表,从上面不难看出来,其默认处理方式是数值格式,也就是表示工作表的序号,当我们使用“SHEET2”这个文本想进入其默认处理方式时,就会存在无法匹配的问题,因此报错,而当我们用Cstr()函数,将A1的值,
& && &强制转换为文本类型然后再提供给Sheets(),这时候就是让其接受文本值,也理所当然会按工作表名来接收,所以顺利进行。
|||Excel精英培训
Powered by本帖子已过去太久远了,不再提供回复功能。

我要回帖

更多关于 供暖问题向谁求助 的文章

 

随机推荐