ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: ggsmart

菜鸟谈VBA最最基础入门《原创》

    [复制链接]

TA的精华主题

TA的得分主题

发表于 2009-9-7 18:52 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖已被收录到知识树中,索引项:开发帮助和教程
原帖由 zznjcs 于 2009-9-7 17:42 发表


understand, but 请在程序里多加一些注示,要不真的看不懂.
这样才能帮助我进步呀......


悲剧,我交我作业,我啥时候说要帮助你进步了,那我学习的时候,也没人来给我写批注啊。

TA的精华主题

TA的得分主题

发表于 2009-9-7 18:58 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
不晓得你哪句看不懂,可以在代码窗口抹黑,f1,或者贴出来大家学一下呢

TA的精华主题

TA的得分主题

发表于 2009-9-7 21:16 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-9-7 23:19 | 显示全部楼层
终于还是忍不住跑过来学习了~~~~~~~~
嘿嘿!谢谢叶枫

标记:目前只看到第三页

现在对定义变量还是有点模糊

TA的精华主题

TA的得分主题

发表于 2009-9-8 09:04 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
感谢楼主及资料整理者

TA的精华主题

TA的得分主题

发表于 2009-9-8 09:23 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-9-8 12:43 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
原帖由 同在星空下 于 2009-9-6 23:19 发表
首先恭喜你进入提高班,看了一此你发的帖,你基础扎实.进入透视表提高班会更加游刃有余.今晚看了你答提高班中测试题中关于刷新指定的透视表,你的代码我看不懂!能不能帮了解释一二,因为你幽默,善于诱导,因此特你的代码复 ...
原代码:
Sub ggsmart()
For i = 1 To 2
  Sheets("测试" & i).PivotTables(1).PivotCache.Refresh
Next
End Sub

1、这个英文字母i表明什么? -------i是循环变量,循环条件是for i = 1 to 2,即循环第一次时,i=1,循环第二次时,i=2.
2、红色字体部分中的连字符不明白--------& 用来将两个字符串连接成一个字符串,即循环第一次时,为"测试1“,循环第二次时为"测试2“,sheets("测试1")表示“测试1”工作表,通过循环来表示“测试1”和“测试2”工作表。
3、为何写成("测试" & i)这个样子? ---------"测试" & i的结果就是“测试1”和“测试2”,最终还是以sheets(工作表名称)的方式来来表示工作表。
4、PivotTables这个数据透视表的英文单词,为何后面括号只跟一个阿位伯数字1,阿拉伯数字1表示什么?是指数据透视表1吗?如果是,那数据透视表2怎样写进去呢? ----------PivotTables表示数据透视表集合,PivoTables(1)表示数据透视表集合里的第一个对象,如果要表示第十个则将1改为2,这同表示工作表一样。
5、
另外一个网友的代码,实在不好意思,我只是在想同一问题竟然多种方法,殊途同路,也是为了让自已能够举一反.
代码如下:
Option Explicit
Sub updating()
Dim k As Integer
For k = 1 To 2
    Sheets("测试1").PivotTables("数据透视表1").PivotCache.Refresh
    Sheets("测试2").PivotTables("数据透视表2").PivotCache.Refresh
Next k
End Sub

这段代码同我的代码的原理都是一样的,其实这个代码里我想,不用再使用那个For循环了吧?使用For循环的目的只是为了把刷新透视表的两句代码简化为一句,既然已经写了两句,那使用循环就多余了。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2009-9-8 13:31 | 显示全部楼层
原帖由 moon2778 于 2009-9-7 18:52 发表


悲剧,我交我作业,我啥时候说要帮助你进步了,那我学习的时候,也没人来给我写批注啊。


小样我搞不懂你还笑.

Sub 单击()
    Application.ScreenUpdating = False       这两个语句什么意思?
     Application.DisplayAlerts = False
    Call sc                                                    为什么要用SC过程把sheets都删除了?   
a = Sheets(1).[A65536].End(xlUp).Row
        For i = 3 To a
            Set qy = Sheets(1).Range("A1").Resize(i - 1, 9)      这句什么意思? 什么时候用set呀?            
                   xs = Sheets(1).Cells(i, 9)
            pd = Application.WorksheetFunction.CountIf(qy, xs)
                If Sheets(1).Cells(i, 8) = "清镇" And pd = 0 Then
                    Sheets.Add After:=Sheets(Sheets.Count)
                    ActiveSheet.Name = xs
                    Sheets(1).[a1:l2].Copy Sheets(Sheets.Count).[a1]
                    Sheets(Sheets.Count).Columns(5).ColumnWidth = 13   这句什么意思? 什么时候用set呀?  
                End If
        Next
            Sheets.Add After:=Sheets(Sheets.Count)
            ActiveSheet.Name = "清镇市外"
            Sheets(1).[a1:l2].Copy Sheets(Sheets.Count).[a1]
            Sheets(Sheets.Count).Columns(5).ColumnWidth = 13
        Call 添数据
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
End Sub

Sub 添数据()
    a = Sheets(1).[A65536].End(xlUp).Row
    For i = 3 To a
        Dim dqh As Range
        If Sheets(1).Cells(i, 8) = "清镇" Then
             xs = Sheets(1).Cells(i, 9)
             zh = Sheets(xs).[A65536].End(xlUp).Row
             Set dqh = Sheets(1).Cells(i, 1).Resize(1, 12)
             dqh.Copy Sheets(xs).Cells(zh + 1, 1)
             Sheets(Sheets.Count).Columns(5).ColumnWidth = 13
        Else
             Set dqh = Sheets(1).Cells(i, 1).Resize(1, 12)
             zha = Sheets("清镇市外").[A65536].End(xlUp).Row
             dqh.Copy Sheets("清镇市外").Cells(zha + 1, 1)
             Sheets(Sheets.Count).Columns(5).ColumnWidth = 13
        End If
    Next
End Sub

Sub sc()
    Dim sht As Worksheet
    Dim th As Workbook
    Set th = ThisWorkbook
    For Each sht In th.Sheets    '在工作表里循环
                    If sht.Name <> Sheet1.Name Then
                    sht.Delete
                    End If
                    Next
End Sub

TA的精华主题

TA的得分主题

发表于 2009-9-8 13:46 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-9-8 14:00 | 显示全部楼层
原帖由 zznjcs 于 2009-9-8 13:31 发表
Sub 单击()
    Application.ScreenUpdating = False       这两个语句什么意思?
                                          ...

哼(我要先哼一声,我才高兴)

Application.ScreenUpdating = False   这个是关闭屏幕显示,就是不希望在程序运行过程中,屏幕界面一直变化所以就设为false,这样一来程序运行速度也就提高了。
为什么要用SC过程把sheets都删除了?
因为我代码每次都要新建表格啊,所以每次运行之前先将其他表格删除,这样才可以避免第二次点击按钮的时候出现错误不是。
什么时候用set呀?
set是对对象赋值的时候就要用set,如果是对变量赋值就不用。
Sheets(Sheets.Count).Columns(5).ColumnWidth = 13   这句什么意思?
最后一张表的第五列的列宽设为13,不然日期不能正常显示嘛。

[ 本帖最后由 moon2778 于 2009-9-8 14:10 编辑 ]
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-23 05:16 , Processed in 0.037715 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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