白话Excel函数公式 Office易学宝微视频教程合集(Excel+Word+PPT)
笨办法学VBA(从入门到精通) 高效办公必会的Office实战技巧
财务总监的Excel私房课 网易云课堂-Excel数据透视表应用大全
Excel图表神技
楼主: hustnzj

【日积月累】上11118班所学到的基础知识点

  [复制链接]
发表于 2012-5-15 19:43:08 | 显示全部楼层
凤凰山上人 发表于 2012-5-15 19:34
可否弄成附件供众学员下载学习?

辛苦你了,看你的情况吧,我向你这样为大家无私奉献的人致敬!谢谢你的付出!

点评

等这一段忙完了,抽空弄一下,呵呵  发表于 2012-5-16 17:35
回复 支持 反对

使用道具 举报

发表于 2012-5-16 12:53:47 | 显示全部楼层
本帖最后由 pemp 于 2012-5-16 12:58 编辑
hustnzj 发表于 2012-5-8 20:45
2012-5-12 (为了今天的小结,我可是费了老劲了,一个个菜单命令的测试,希望同学们能有所获,呵呵)

   ...

班班,关于哪些操作不能被录制宏? 这个问题,我想补充一点:

在做课时二成果展示时,我发现“Ctrl+A”也是不能很好录制的:
当选中一表格中的某个单元格,按下“Ctrl+A”对表格进行“全选”时,记录的是当前表格的整个区域地址,而不是“Ctrl+A”操作。这样在诸如我成果二中的类似情况下,表格的大小每次不一定相同,但宏代码会机械地按录制时 “Ctrl+A”形成的区域进行选择,并不是实际的全选功能。({:soso_e149:}可惜发现这个问题时,课时二小结和成果提交截止日期已经过了,不能再修改了)

我试了一下相对引用,也是如此。

我想类似的宏录制情况可能还有,即宏代码记录的是某个操作的实际效果,而不是操作本身,这样会造成当某些情况发生改变时,不能很好适应。

以上仅是个人观点,不知正确与否,请班班明示!{:soso__695721744103714719_2:}

点评

的确,录制宏录制的代码是比较机械的,这也是我为什么一直把录制宏当做获取“关键词”的一种途径,呵呵。  发表于 2012-5-16 18:02

评分

参与人数 1登攀 +3 收起 理由
hustnzj + 3 认真思考

查看全部评分

回复 支持 反对

使用道具 举报

发表于 2012-5-16 16:52:46 | 显示全部楼层
本帖最后由 唐醒之 于 2012-5-16 17:17 编辑

是呵,以下面的数据为例(示例文件中有四个数据区域),
示例文件.jpg
当活动单元格位于四个不同数据区域的时候,点击Ctrl+A 快捷键将分别选中不同的数据区域,此时录制宏得到的宏代码也会有别,整理如下(原始代码有删节,以下只是为了说明问题):


  1.     Cells.Select
  2.     Range("B4:C5").Select
  3.     Range("B6:D7").Select
  4.     Range("B9:E14").Selec
复制代码

这说明Excel的菜单的效果不仅和数据区域有关,活动单元格的位置以及事先选中的单元格区域等情况都可能影响Excel菜单的执行效果。

示例文件.zip

7.23 KB, 下载次数: 1

点评

录制宏的确是比较“老实”的,所以它不会像我们想要的那么智能,呵呵。智能的录制宏不是没有,也是有的。不是Ctrl+A的快捷键,而是Ctrl+Shift+8的快捷键。呵呵  发表于 2012-5-16 18:06

评分

参与人数 1登攀 +3 收起 理由
hustnzj + 3 思考细致

查看全部评分

回复 支持 反对

使用道具 举报

发表于 2012-5-16 22:42:22 | 显示全部楼层
谢谢班班的点评,和学委的跟帖,我试了一下,“Ctrl+Shift+8”还真是可以,感叹VBA博大精深,感叹班班的高深莫测啊~
要学的太多了,自己知道的太少了,感谢一路上有你们~~~{:soso__16632167726617671050_2:}
回复 支持 反对

使用道具 举报

发表于 2012-5-19 14:12:01 | 显示全部楼层
  这几天一直有点忙,今天才认真看班班的总结,写的真好,班班辛苦了!
我还是个初学者,能遇到这么好的老师真的是福气呀
  能不能详细讲一些简单的循环语句,比如IF  WITH for之类的 ,到现在为止我之会用一个FOR I语句

点评

课时4的视频就是专门讲循环,可以先去看看ggsmart老师的精华帖  发表于 2012-5-19 15:19
回复 支持 反对

使用道具 举报

发表于 2012-5-20 05:21:29 | 显示全部楼层
475105075 发表于 2012-5-19 14:12
这几天一直有点忙,今天才认真看班班的总结,写的真好,班班辛苦了!
我还是个初学者,能遇到这么好的老 ...

嗯 好的 谢谢
回复 支持 反对

使用道具 举报

发表于 2012-5-23 10:13:28 | 显示全部楼层
hustnzj 发表于 2012-5-8 20:54
2012-5-19

【应用于Range对象的Find方法】

班班,“find方法的重复使用”有点不太明白的地方,恳请抽空给予释疑!

With Worksheets(1).Range("a1:a500")
    Set c = .Find(2, LookIn:=xlValues)
    If Not c Is Nothing Then
        firstAddress = c.Address   '保留第一个满足条件单元格的地址
        Do
            c.Value = 5
            Set c = .FindNext(c)   '按Find方法的条件接着查找,相当于用户界面“查找和替换”对话框的“查找下一个”
        Loop While Not c Is Nothing And c.Address <> firstAddress   '定义循环终止条件:当找不到或者再次查找到第一个满足条件单元格,表示已经绕完一圈。
    End If
End With

首先,上面的and应该是“or”吧?其次,找到的第一个单元格的值已被改为5了,再通过findnext查找,即使发生绕转后,也不会“再查找到第一个满足条件单元格”吧,所以不能理解“c.Address <> firstAddres”如何能发挥作用呢?

点评

不好意思,自己粗心了,看原来的楼层吧,已经更正了,呵呵  发表于 2012-5-24 22:19

评分

参与人数 1登攀 +3 收起 理由
hustnzj + 3 学习很仔细

查看全部评分

回复 支持 反对

使用道具 举报

发表于 2012-5-23 11:12:35 | 显示全部楼层
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-5-23 17:57:47 | 显示全部楼层
本帖最后由 hustnzj 于 2012-5-24 22:18 编辑
pemp 发表于 2012-5-23 10:13
班班,“find方法的重复使用”有点不太明白的地方,恳请抽空给予释疑!

With Worksheets(1).Range("a1 ...


这个条件是没有错,错在我忽略了这个例子是替换,所以绕一圈之后就找不到了发生错误。
感谢指正,呵呵。
下面这个示例是在单元格区域 A1:A500 中查找值为 2 的单元格,并将这些单元格右边一个单元格的值变为 5
改成下面这样应该就好理解了:
With Worksheets(1).Range("a1:a500")
    Set c = .Find(2, LookIn:=xlValues)
    If Not c Is Nothing Then
        firstAddress = c.Address   '保留第一个满足条件单元格的地址
        Do
            c.offset(,1).Value = 5
            Set c = .FindNext(c)   '按Find方法的条件接着查找,相当于用户界面“查找和替换”对话框的“查找下一个”
        Loop While Not c Is Nothing And c.Address <> firstAddress   '定义循环终止条件:当找不到(只有一个满足条件)或者再次查找到第一个满足条件单元格(表示已经绕完一圈)
    End If
End With

此楼理解有误,已经在原楼层进行了更正!


回复 支持 反对

使用道具 举报

发表于 2012-5-25 17:20:50 | 显示全部楼层
班班太强大了。学习了。谢谢班班
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 入学

本版积分规则

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