vba程序是什么?

说能提高算工资的效率?怎么做的,请内行截图给我看看,谢谢!... 说能提高算工资的效率?怎么做的,请内行截图给我看看,谢谢! 展开
 我来答
pepe3399
2020-07-30 · 知道合伙人软件行家
pepe3399
知道合伙人软件行家
采纳数:1259 获赞数:5944
1988年毕业于苏州市职业大学计算机专业 从事软件开发5年 从事生产管理20年

向TA提问 私信TA
展开全部

用代码实现自动化,界面就是一个按钮,点一下就完成了工资表的计算,或者自动生成工资条等。

这就是操作界面。

Private Sub CommandButton3_Click() '检查填充

   Dim skUArr(1 To 1000, 1 To 3)

   Dim skUGs As Integer

   Dim hH As Integer

   Dim zlHH As Integer

   Cells.Find(What:="Weight of box", After:=ActiveCell, LookIn:=xlFormulas _

        , LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _

        MatchCase:=False, MatchByte:=False, SearchFormat:=False).Activate

   zlHH = ActiveCell.Row '重量所在行号

   skmGs = 0

   hH = 5

   Do While Trim(Cells(hH, 1).Text) <> ""

      skUGs = skUGs + 1

      skUArr(skUGs, 1) = Trim(Cells(hH, 1).Text)

      skUArr(skUGs, 2) = Trim(Cells(hH, 4).Text)

      skUArr(skUGs, 3) = Cells(hH, 10).Value

      

      hH = hH + 1

   Loop

   Dim fName As String

   Dim SBook As Workbook

   Call SelectFile(fName)

   Set SBook = Workbooks.Open(fName)

   Dim M_sku As String, M_fnSku As String, M_qty As Integer

   With SBook.Sheets(1)

      For I = 1 To skUGs

         M_sku = Trim(.Cells(5 + I - 1, 1).Text)

         M_fnSku = Trim(.Cells(5 + I - 1, 4).Text)

         M_qty = .Cells(5 + I - 1, 9).Value

         If skUArr(I, 1) <> M_sku Then

            MsgBox ("第" & I & "条记录的SKU不一致!")

            Exit Sub

         End If

         If skUArr(I, 2) <> M_fnSku Then

            MsgBox ("第" & I & "条记录的FNSKU不一致!")

            Exit Sub

         End If

         If skUArr(I, 3) <> M_qty Then

            MsgBox ("第" & I & "条记录的QTY不一致!")

            Exit Sub

         End If

         

      Next I

   End With

   Dim qtyArr() As Integer

   Dim boxGs As Integer

   Dim boxArr()

   With ThisWorkbook.Sheets(1)

      boxGs = .Cells(4, 200).End(xlToLeft).Column

      ReDim qtyArr(1 To skUGs, 1 To boxGs)

      ReDim boxArr(1 To 4, 1 To boxGs)

      '读取数量

      For I = 1 To skUGs

         For J = 1 To boxGs

            qtyArr(I, J) = .Cells(5 + I - 1, 12 + J - 1).Value

         Next J

      Next I

     '读取box

      For I = 1 To 4

         For J = 1 To boxGs

            boxArr(I, J) = .Cells(zlHH + I - 1, 12 + J - 1).Value

         Next J

      Next I

   End With

   '填充

   With SBook.Sheets(1)

      '.Cells(5, 12).Resize(skUGs, boxGs) = qtyArr

      '.Cells(zlHH, 12).Resize(4, boxGs) = boxArr

      For I = 1 To skUGs

         For J = 1 To boxGs

            If qtyArr(I, J) > 0 Then

               .Cells(5 + I - 1, 12 + J - 1) = qtyArr(I, J)

            End If

         Next J

      Next I

      For I = 1 To 4

         For J = 1 To boxGs

            .Cells(zlHH + I - 1, 12 + J - 1) = boxArr(I, J)

         Next J

      Next I

   End With

   SBook.Save

   MsgBox ("检查结果OK,填充完成!")

End Sub

这是其中一个按钮的代码,供参考。

追问
全是英文?看不懂?
来自九陇山风风韵韵的魔芋

2020-07-31 · TA获得超过4371个赞
知道大有可为答主
回答量:2752
采纳率:100%
帮助的人:144万
展开全部

VBA全称Visual Basic for Applications是Visual Basic的一种宏语言,在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。

主要能用来扩展Windows的应用程序功能,特别是Office办公软件,它也可以说是一种应用程式视觉化的Basic脚本。

VBA界面图

注:如上图的右边的对话框中就有语言代码,我们可以利用这个语言代码快速的完成左边表格中,按班级进行拆分为单个工作表。

如果是人工的话,就需要一个班一个班的筛选,复制粘贴这样的重复操作。数据量少还好说,如果数据量大的话,那么就会很耗时了。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式