|
本帖最后由 chentx 于 2013-1-31 15:24 编辑
好吧,最后一次回复你,大家都知道吃饭是必需的,吃饭这个行为的构成是:吃什么、怎么吃。吃多了会撑,吃少了会饿,吃好的有营养,吃化学品的会致癌。不讲技巧的使用方法当然会有反效果,不要告诉我你连这个道理都不懂。
在原代码中,不知道是你对VBA的语法了解不够还是你故意让它运行不了,你最先写的源代码最起码有3处语法错误:
1、对像变量要用Set来赋值,这是基础吧,你开始没有用Set但后面的又有Set这就非常奇怪了,所以我不知道你是不是故意这样写来让代码出错。
2、你没有用With,那.Find又怎么应用起来呢
3、ActiveWorkbook.Worksheets("sheet1").Range(a2) 什么意思?a2是变量吗,应该要用引号引起来吧。
即使是你缩减后的代码也跟原来的代码有差别,原代码的赋值是Range("a2")=rng(0,1),而你缩减后却变成Range("a2")=rng,跟原本的意思有不同吧,二者必有一个是错的。
而且你用Find说明有可能是Find不到的,你缩减后的代码没有考虑到这个情况,当然也有可能是必然会Find到所以不必理会这种情况。
代码长并不代表效率就一定低,精简的代码也不一定高效,这个道理相信有一定编程经验的都会明白。希望你明白一件事是:做事讲技巧方法比抱着死信条更有用。
如果你的信条是对一些简单的语句学习测试那不用定义变量使学习者专注于要学习的内容,那我完全赞同,但如果你的信条是任何程序开发都不需要定义变量,那就无法苟同了。[code=vb]Sub shiyan()
Dim rng As Range
With ActiveWorkbook
Set rng = .Sheets("sheet2").UsedRange.Find("气缸套", LookIn:=xlValues, lookat:=xlWhole)
If Not rng Is Nothing Then
.Sheets("sheet1").[A2] = rng(0, 1)
Else
.Sheets("sheet1").[A2] = "UnFind"
End If
End With
End Sub[/code]
|
评分
-
2
查看全部评分
-
|