ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 求大神帮忙看看这段代码是什么问题。

[复制链接]

TA的精华主题

TA的得分主题

发表于 2013-4-11 19:48 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
代码如下:
Private Sub CmdCalculate_Click()
On Error GoTo Err_CMdCalculate_Click
   '打开“MRP物料需求”表
   Set Rs = New ADODB.Recordset
   StrTemp = "Select * From MRP物料需求"
   Rs.Open StrTemp, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
   '打开“主生产计划”表
   Set Rs1 = New ADODB.Recordset
   StrTemp = "Select * From 主生产计划"
   Rs1.Open StrTemp, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
   '打开“物料清单”表
   Set Rs2 = New ADODB.Recordset
   StrTemp = "Select * From 物料清单"
   Rs2.Open StrTemp, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
   '使【结果发布】按钮可用
   Me![CmdGiveOutResult].Enabled = True
   Rs2.MoveFirst
   '在“物料清单”表中循环操作
   For iTemp = 0 To Rs2.RecordCount - 1
      Rs1.MoveFirst
      '在“主生产计划”表中循环操作
      For jTemp = 0 To Rs1.RecordCount - 1
      '判断“产品编号”与“父项编号”是否相等
      If (Rs2("父项编号") = Rs1("产品编号")) Then
         '在“MRP物料需求”表中添加新记录
         Rs.AddNew
         Rs("物料编号") = Rs2("物料编号")
         Rs("物料名称") = Rs2("物料名称")
         Rs("年份") = Rs1("年份")
         Rs("计划期") = Rs1("计划期")
         '判断待添加物料记录是否已经存在
         If MaterialNum = Rs("物料编号") Then
            '如果存在,把以前的“预计库存”值赋予“期初库存”
            Rs("期初库存") = BinStore
         Else
            '如果不存在,则赋予“期初库存为100
            Rs("期初库存") = 100
         End If
         Rs("毛需求") = Rs2("需求数量") * Rs1("MPS数量")
         If Rs("预计库存") - Rs("期初库存") >= 0 Then
            Rs("预计入库") = Rs("预计库存") - Rs("期初库存")
         Else
            Rs("预计出库") = Rs("期初库存") - Rs("预计库存")
         End If
         If Rs("毛需求") - Rs("期初库存") > 0 Then
            Rs("净需求") = Rs("毛需求") - Rs("期初库存")
         Else
            Rs("毛需求") = 0
         End If
         If (Rs("期初库存") - Rs("毛需求")) > 0 Then
         Rs("预计库存") = Rs("期初库存") - Rs("毛需求")
         Else
            Rs("预计库存") = 0
         End If
         If Rs("毛需求") - Rs("预计库存") <= 0 Then
            Rs("计划产出") = Rs("毛需求")
         Else
            Rs("计划产出") = 0
         End If
         Rs("计划投入") = Rs("净需求")
         '为MaterialNum赋值,用于与下条记录比较,判断物料是否存在
         MaterialNum = Rs("物料编号")
         '把“预计库存”值赋予BinStore
         BinStore = Rs("期初库存") - Rs("毛需求")
         If BinStore <= 0 Then
            BinStore = 0
         End If
         Rs1.MoveNext
         '更新“MRP物料需求表”
         Rs.Update
      Next jTemp
      Rs2.MoveNext
   Next iTemp
   '释放数据记录集空间
   Set Rs = Nothing
   Set Rs1 = Nothing
   Set Rs2 = Nothing
   '刷新“MRP计算结果发布(物料需求)”子窗体
   MRPCResultSOFrm.Requery
Exit_CmdCalculate_Click:
   Exit Sub
Err_CMdCalculate_Click:
   MsgBox Err.Description
   Resume Exit_CmdCalculate_Click
End Sub


运行调试的时候,提示 Next .....没有 FOr(就是在上面标示的字段位置)

TA的精华主题

TA的得分主题

发表于 2013-4-11 23:14 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
不是因为next Jtemp 的问题,而是
    If (Rs2("父项编号") = Rs1("产品编号")) Then
这句的 end if 没有了,所以引起了错误
你试着加上再试试

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-4-12 08:55 | 显示全部楼层
Renco 发表于 2013-4-11 23:14
不是因为next Jtemp 的问题,而是
    If (Rs2("父项编号") = Rs1("产品编号")) Then
这句的 end if 没有 ...

加上去可以了,谢谢!做这种编程类的,还真的是小心再小心啊
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-17 20:28 , Processed in 0.026746 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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