下面我给出我的代码,并进行代码的分析和解读:Sub mynzI() '跨工作表计算器实现 Dim wzname As String, total As Integer, mysheet As Worksheet '对变量的声明 total = 0 '物质总在库数变量初始值设定 wzname = InputBox("请录入需要统计的物质名称") If wzname = "" Then MsgBox "请录入物质名称": Exit Sub '避免用户录入空值 For Each mysheet In Worksheets '遍历工作表 If Left(mysheet.Name, 2) = "库存" Then '如果符合计算条件的工作表,将参与计算 i = 2 Do While mysheet.Cells(i, 1) <> "" '在参与计算的工作表A列建立循环 If mysheet.Cells(i, 1).Value = wzname Then '判断物质名称 total = total + mysheet.Cells(i, 2).Value '统计物质总在库 End If i = i + 1 Loop End If Next MsgBox "物质" & wzname & "在库总数为:" & total '将结果汇报给用户End Sub 代码截图: 代码解读:1)Dim wzname As String, total As Integer, mysheet As Worksheet 以上是对变量类型的声明,当然这个声明是可以省略的。2)total = 0 变量total我们设置为某物质在库的总量,这句代码是对物质总在库数变量初始值设定3)wzname = InputBox("请录入需要统计的物质名称")这句代码是利用InputBox对话框要求用户录入需要统计的物质名称。4)If wzname = "" Then MsgBox "请录入物质名称": Exit Sub 这句代码是避免用户录入空值的处理,如果用户录入的是空值,提示用户"请录入物质名称",并退出程序。5)For Each mysheet In Worksheets 以上代码在工作表集合中建立一个遍历循环,其中mysheet变量是集合中的每个元素6)If Left(mysheet.Name, 2) = "库存" Then 以上代码对工作表是否参与计算进行判断,如果符合计算条件的工作表,将参与计算7)Do While mysheet.Cells(i, 1) <> "" 以上代码在参与计算的工作表A列建立循环,这里要注意的是Do while 循环,这是VBA中的另外一种循环方法,也是非常重要的。mysheet.Cells(i, 1) <> "" 是循环条件的判断,只要符合条件,循环就进行。8)If mysheet.Cells(i, 1).Value = wzname Then '判断物质名称 total = total + mysheet.Cells(i, 2).Value '统计物质总在库 End If以上代码先对物质名称进行判断,如果是我们要统计的物质,就进行数量的累加处理。9)MsgBox "物质" & wzname & "在库总数为:" & total 以上代码将结果汇报给用户,利用的是一个MsgBox对话框。 代码的运行效果: 今日内容回向: 1) 如何实现跨工作表的数据计算? 2) 如何判断工作表是否参与计算? 3) 如何判断单元格的值是否参与计算? 4) 本讲提到的两种循环是什么? 本讲内容参考程序文件:工作簿03.xlsm我20多年的VBA成果全在下面的资料中: 【分享成果,随喜正能量】人生有苦乐的两面,太苦了,当然要提起内心的快乐;太乐了,也应该明白人生苦的真相。热烘烘的快乐,会乐极生悲;冷冰冰的痛苦,会苦得无味,人生最好是过不苦不乐的生命。。