ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

   
EH云课堂-专业的职场技能充电站 限时送,魔方网表将Excel变在线系统 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
Excel不给力? 何不试试FoxTable! Excel 2016函数公式学习大典 高效办公必会的Office实战技巧 免费下载Excel行业应用视频
300集Office 2010微视频教程 Tableau-数据可视化工具 ExcelHome出品 - VBA代码宝免费下载 13门Excel免费公开课任你学
你的Excel 2010实战技巧学习锦囊 欲罢不能, 过目难忘的 Office 新界面 免费的Excel考勤计算系统
查看: 242|回复: 8

[求助] 希望高手哥哥能帮忙讲解下下面的代码是什么意思

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-2-11 20:13 | 显示全部楼层 |阅读模式
自已现在也在慢慢的学习VBA,可能是没有什么底子,很多代码不能理解是什么意思,
希望高手哥哥能帮忙讲解下下面的代码是什么意思。
  1. Dim Arr, ar, n%, k%, s$, d
  2.     With Worksheets("入库单")
  3.         n = .[b5].End(4).Row()
  4.         If n = 6 Then End
  5.         d = .[c4]: s = .[k4]
  6.         Arr = .[b7:k7].Resize(n - 6)
  7.         ar = .[l7].Resize(n - 6)
  8.         Union(Range(.Cells(7, 2), .Cells(n, 2)), Range(.Cells(7, 6), .Cells(n, 9)), _
  9.                     Range(.Cells(7, 11), .Cells(n, 12))).ClearContents
  10.    
  11.     With Worksheets("入库记录")
  12.         k = .[b1048576].End(3).Row + 1
  13.         If k < 5 Then k = 5
  14.         .Cells(k, 2).Resize(n - 6, 10) = Arr
  15.         .Cells(k, 14).Resize(n - 6) = ar
  16.         .Cells(k, 1).Resize(n - 6).Formula = "=row()-4"
  17.         .Cells(k, 12).Resize(n - 6) = d
  18.         .Cells(k, 13).Resize(n - 6) = s
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-2-11 20:17 | 显示全部楼层
自己顶下,别让沉下去了。

TA的精华主题

TA的得分主题

发表于 2019-2-11 20:25 来自手机 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-2-11 20:35 | 显示全部楼层
nini711 发表于 2019-2-11 20:25
我确定我能读懂,不过得翻翻书,帮你顶下

那你得好好的翻吧

TA的精华主题

TA的得分主题

发表于 2019-2-11 21:54 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2019-2-13 08:35 | 显示全部楼层
本帖最后由 nini711 于 2019-2-13 09:51 编辑

Dim Arr, ar, n%, k%, s$, d
    With Worksheets("入库单")
        n = .[b5].End(4).Row()’end(4)是end(xldown)的意思么?,那就是获取b5向下数最后一个不为空的单元格行序数。
        If n = 6 Then End
        d = .[c4]: s = .[k4]
        Arr = .[b7:k7].Resize(n - 6)
        ar = .[l7].Resize(n - 6)
        Union(Range(.Cells(7, 2), .Cells(n, 2)), Range(.Cells(7, 6), .Cells(n, 9)), _
                    Range(.Cells(7, 11), .Cells(n, 12))).ClearContents

with worksheets之后的.[b5]相当于
worksheets("入库单").[b5]指入库单的b5单元格。
d = .[c4]: s = .[k4]相当于d =worksheets("入库单") .[c4]: s =worksheets("入库单") .[k4]
Arr = .[b7:k7].Resize(n - 6),resize是以b7:K7这一选区为基准,将选区向下扩大n-6行。比如当n=8,那arr的range就是b7:K8

    With Worksheets("入库记录")
        k = .[b1048576].End(3).Row + 1
        If k < 5 Then k = 5
        .Cells(k, 2).Resize(n - 6, 10) = Arr
        .Cells(k, 14).Resize(n - 6) = ar
        .Cells(k, 1).Resize(n - 6).Formula = "=row()-4" ’formula是公式属性,把这个选区都输入“=row()-4”这个公式
        .Cells(k, 12).Resize(n - 6) = d
        .Cells(k, 13).Resize(n - 6) = s

TA的精华主题

TA的得分主题

发表于 2019-2-13 08:42 | 显示全部楼层
這樣沒什麼意思
都是基本句,難道你看一句發問一句嗎,看書更好

TA的精华主题

TA的得分主题

发表于 2019-2-13 09:02 | 显示全部楼层
  1. Dim Arr, ar, n%, k%, s$, d
  2.     With Worksheets("入库单")
  3.         n = .[b5].End(4).Row() '取得B5单元格开始,连续区域中的最后一个非空单元格的行号
  4.         If n = 6 Then End '如果N为6,退出
  5.         d = .[c4]: s = .[k4]
  6.         Arr = .[b7:k7].Resize(n - 6) 'Arr的区域 为 B7:Kn
  7.         ar = .[l7].Resize(n - 6) 'ar的区域 为l7:ln
  8.         '清除B7:Bn,F7:In,K7:Ln这三个区域的内容
  9.         Union(Range(.Cells(7, 2), .Cells(n, 2)), Range(.Cells(7, 6), .Cells(n, 9)), _
  10.                     Range(.Cells(7, 11), .Cells(n, 12))).ClearContents
  11.    
  12.     With Worksheets("入库记录")
  13.         k = .[b1048576].End(3).Row + 1 '取得B1048576 单元格向上的第一个非空单元格所在的下一行的行号,相当于B列有效区域的下一行的行号
  14.         If k < 5 Then k = 5
  15.         .Cells(k, 2).Resize(n - 6, 10) = Arr '在 B列至K列 回填
  16.         .Cells(k, 14).Resize(n - 6) = ar '在N列填充原l 列的内容
  17.         .Cells(k, 1).Resize(n - 6).Formula = "=row()-4" ' 在A 列编号
  18.         .Cells(k, 12).Resize(n - 6) = d
  19.         .Cells(k, 13).Resize(n - 6) = s
复制代码
头像被屏蔽

TA的精华主题

TA的得分主题

发表于 2019-2-13 09:09 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关注官方微信,每天学会一个新技能

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

GMT+8, 2019-2-19 23:38 , Processed in 0.086922 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2017 Wooffice Inc.

   

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

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

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