Yesterday is history, tomorrow is a mystery, but today is gift. That's why we called it the present. >>>>>>> 点此联系我

[Excel]VBA实现的最简单的遍历

昨天公司给我个任务让做个仓库物品管理的表格,第一次用excel中VBA写了个简单的小程序

1.需求

弄一个物品入库清单和物品领用清单,根据这两个清单自动生成一个剩余物品表

物品入库清单:

物品领用表:

3.程序

初中写过VB, 所以vba语法感觉很亲切啊

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'    初始化数值
    Dim RK_Row As Integer   '入库表中的行数
    RK_Row = 3
    Dim RK_Col As Integer   '入库表中的列数
    RK_Col = 3
    Dim LY_Row As Integer   '领用表中的行数
    LY_Row = 3
    Dim LY_Col As Integer   '领用表中的行数
    LY_Col = 3
    Dim Num As Integer      '领用数量
    Num = 0
    Dim Recent As Date      '最近领用日期
    Recent = #1/1/2000#

    
    While Len(Sheet3.Cells(RK_Row, 3)) <> 0                             '遍历入库表的每一行
        Sheet1.Cells(RK_Row, 3) = Sheet3.Cells(RK_Row, 3)
        Sheet1.Cells(RK_Row, 4) = Sheet3.Cells(RK_Row, 4)
        Sheet1.Cells(RK_Row, 5) = Sheet3.Cells(RK_Row, 5)
        
        While Len(Sheet2.Cells(LY_Row, 3)) <> 0                         '遍历领用表中的每一行
            If Sheet2.Cells(LY_Row, 3) = Sheet3.Cells(RK_Row, 3) Then
                Num = Num + Sheet2.Cells(LY_Row, 7)
                If IsDate(Sheet2.Cells(LY_Row, 2)) Then
                    Recent = Sheet2.Cells(LY_Row, 2)
                End If
            End If
            LY_Row = LY_Row + 1
        Wend
        
        If Num <> 0 Then
            Sheet1.Cells(RK_Row, 2) = Recent
        ElseIf Recent = #1/1/2000# Then
            Sheet1.Cells(RK_Row, 2) = "日期不明"
        Else
            Sheet1.Cells(RK_Row, 2) = "暂未借出"
        End If
        
        Sheet1.Cells(RK_Row, 6) = Sheet3.Cells(RK_Row, 6) - Num
        
        
        LY_Row = 3
        Num = 0
        RK_Row = RK_Row + 1
        
    Wend
        
    
    
    
End Sub

4.结果

6.总结

VBA其实还是挺简单的,上面也就是个初中水平的程序。不过如果他们这个物品领用写的太杂乱了有很多写的和仓库入库表的名称都不一样,都没有计算上。其实还是用VB或者其他语言做个仓库管理程序比较好,但不给钱谁做呢【手动摊手】。

 

posted @ 2018-05-10 10:10  virter  阅读(11638)  评论(0编辑  收藏  举报