问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

EXCEL VBA这些语句是什么意思,有大神逐句翻译吗?

发布网友 发布时间:2022-05-10 21:14

我来回答

4个回答

热心网友 时间:2023-11-01 07:38

Private Sub Worksheet_Activate() '工作表激活事件
Set d = CreateObject("Scripting.Dictionary") '赋值D为字典对象
arr = Sheet1.UsedRange
For i = 2 To UBound(arr)
If arr(i, 1) <> "" Then d(arr(i, 1)) = "" 'D增加关键字
Next
With Range("B2").Validation
.Delete
.Add 3, 1, 1, Join(d.keys, ",") 'B2增加数据有效性等于D关键字相连的值
End With
Set d = Nothing
End Sub
Sub 查询()
Dim d, arr, brr(), ar, br(), abr(), m, n, i, j, a, b, aa, s
Range("A5:P10000").ClearContents '清除("A5:P10000")单元格区域内容
If Range("B2") = "" Then MsgBox "请选择【料号】!程序退出。", 64, "温馨提示": Exit Sub
If Range("C2") = "" Then MsgBox "请填写出库数量!程序退出。", 64, "温馨提示": Exit Sub '单元格B2和C2单元格为空值时弹出对话框提示
arr = Sheet1.UsedRange '赋值ARR
For i = 2 To UBound(arr) '在ARR1维中循环
If arr(i, 1) = Range("B2") And arr(i, 4) = "Available" Then '判定单元格是否等于 Range("B2") 和arr(i, 4) = "Available"就执行下面的代码
m = m + 1 'M值进行累加
ReDim Preserve brr(1 To 7, 1 To m) '给BRR数给赋值,
For j = 1 To 6 'J从一到6循环
brr(j, m) = arr(i, j) '给BRR赋值等于对应的arr数组理面的值
Next
brr(7, m) = arr(i, 10) '同样是是BRR赋值
End If
If arr(i, 1) = Range("B2") Then '判定arr(i, 1) = Range("B2")就执行下面代码
s = s + 1 'S值进行累加
ReDim Preserve abr(1 To 7, 1 To s) 'M 同样也是给abr赋值等于对应的arr数组理面的值
For j = 1 To 6
abr(j, s) = arr(i, j)
Next
abr(7, s) = arr(i, 10)
End If
Next
If m = 0 Then '判断M等于0就执行下面的程序
Range("B5:H10000").ClearContents '清除(("B5:H10000")单元格区域内容
[B5].Resize(s, 7) = Application.Transpose(abr) '{B5]扩充区域后赋值等于abr转置的值
Range("B5:H" & s + 4).Sort [H5] '对H列排序
MsgBox "【" & Range("B2") & "】料号可出库的库存是【0】!程序退出。", 64, "温馨提示" '弹出提示
Exit Sub '退出程序
End If
[B5].Resize(m, 7) = Application.Transpose(brr) ' '{B5]扩充区域后赋值等于BRR转置的值
Range("B5:H" & m + 4).Sort [H5] '对H列排序
arr = Range("B5:H" & m + 4) '重新赋值ARR
Range("B5:H10000").ClearContents '清除(("B5:H10000")单元格区域内容
[B5].Resize(s, 7) = Application.Transpose(abr) ' '{B5]扩充区域后赋值等于abr转置的值
Range("B5:H" & s + 4).Sort [H5] '对H列排序
For i = 1 To UBound(arr) '在ARR数组中循环
a = a + arr(i, 3) '给A赋值
Next
b = Val(Range("C2")) '给B赋值
If a - b < 0 Then '判定A-B小于0就执行下面程序
MsgBox "【" & Range("B2") & "】料号现有库存 " & a & " 不够本次出库!程序退出。", 64, "温馨提示" '弹出提示
Exit Sub
End If
For i = 1 To UBound(arr)
n = n + 1
ReDim Preserve br(1 To 7, 1 To n)
For j = 1 To 7
br(j, n) = arr(i, j)
Next
aa = aa + arr(i, 3)
If Val(aa) >= Val(b) Then
Exit For
End If
Next
br(3, n) = br(3, n) - (aa - b)
[J5].Resize(n, 7) = Application.Transpose(br) '上述代码就是给[J5].Resize(n, 7)这个区域赋值等于转置后的(br) 内容
End Sub

热心网友 时间:2023-11-01 07:38

这么多,逐句解释,有点强人所难呀,并且一点奖励都没有。

热心网友 时间:2023-11-01 07:39

原文件看看,PMC的同行,你要改啥》sosomc@163.com
ReDim Preserve brr(1 To 7, 1 To m)这句应该会报错

热心网友 时间:2023-11-01 07:39

字典
数组
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
圣斗士星矢正义传说攻略_圣斗士星矢正义传说新手攻略 圣斗士星矢正义传说怎么觉醒圣衣 圣衣玩法攻略 圣斗士星矢正义传说召唤石怎么获得 获取攻略一览 超市促销员手机上打卡迟到几分钟 在超市里打卡显示的公司是什么意思? 长鹿休闲度假农庄交通指南 求从容桂到长鹿农庄怎么坐车,详细,准确 形容神情的五字词语 女生内衣穿多久该扔掉 吴江离张家港有多远? 考杭州电子科技大学的研究生,给点建议! 干柠檬片中间变黑了还能用吗 哪里有支持MySQL虚拟主机空间?要稳定,速度快的? 新闻要素的技巧 夏天如何有效防晒 Catia辅助缩放移动旋转按钮怎么关闭 怎样识别、防治番茄苗期立枯病? 李文鑫,李烨鑫,以五行起名方式哪个好谢谢 家长对学生在家行为习惯的评价(初三 脸上的斑印怎么去掉? OPPO R7s自己能打开后盖吗? 杭州电子科技大学有哪些院系,杭州电子科技大学院系 沐浴什么意思 怎么能去掉脸上的斑印? 社会信用体系以守信激励和失信约束为奖惩机制目的是什么 海律师:您好!我想咨询关于服刑人员患病后在监狱里治疗无效,但申请保外就医被拒绝该怎么办 怎么样去除脸上的斑印? 在catia中怎么按比例缩小草图尺寸 干柠檬片放了两个月中间变成黑色还能泡水喝吗 大侠们。那个虚拟主机的好啊。便宜,宕机少,速度快的。。麻烦介绍下呗。 人大法学考研多少分算高? 为什么用万用表测充电插头电流不断跳动?(请看说明) 电脑绘画软件那些比较好,我听别人说了sai,还有别的吗?还有哪个网站下了比较安全 养成良好生活习惯家长怎样给孩子写评语 求DNF狂战士补丁 人的肉眼最多能感受到多少帧 4.25日行情上证指数走势? 青岛做月饼的厂家有那些? 夏天防晒技巧 油性皮肤鼻子还很多黑头,适合擦乳液吗 安徽大学学工管理信息系统填错了如何修改 护士长离职工作交接内容 你旅游过的景点,哪个地方让你很难忘? 微信里过期的照片还有办法恢复么 脸上的斑印怎么去除? 杭州电子科技大学机械研究生很垃圾吗 杭州电子科技大学研究生奖学金如何设置? 运动会新闻稿里的五部分、六要素是什么啊 哪家做月饼的上市公司要做蛋糕了 美团买菜用什么信用卡支付可以折扣?