昨天公司給我個(gè)任務(wù)讓做個(gè)倉(cāng)庫(kù)物品管理的表格,第一次用excel中VBA寫了個(gè)簡(jiǎn)單的小程序 1.需求 弄一個(gè)物品入庫(kù)清單和物品領(lǐng)用清單,根據(jù)這兩個(gè)清單自動(dòng)生成一個(gè)剩余物品表 物品入庫(kù)清單: 物品領(lǐng)用表: 3.程序 初中寫過(guò)VB, 所以vba語(yǔ)法感覺(jué)很親切啊 Private Sub Worksheet_SelectionChange(ByVal Target As Range)' 初始化數(shù)值 Dim RK_Row As Integer '入庫(kù)表中的行數(shù) RK_Row = 3 Dim RK_Col As Integer '入庫(kù)表中的列數(shù) RK_Col = 3 Dim LY_Row As Integer '領(lǐng)用表中的行數(shù) LY_Row = 3 Dim LY_Col As Integer '領(lǐng)用表中的行數(shù) LY_Col = 3 Dim Num As Integer '領(lǐng)用數(shù)量 Num = 0 Dim Recent As Date '最近領(lǐng)用日期 Recent = #1/1/2000# While Len(Sheet3.Cells(RK_Row, 3)) <> 0 '遍歷入庫(kù)表的每一行 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 '遍歷領(lǐng)用表中的每一行 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.結(jié)果 6.總結(jié) VBA其實(shí)還是挺簡(jiǎn)單的,上面也就是個(gè)初中水平的程序。不過(guò)如果他們這個(gè)物品領(lǐng)用寫的太雜亂了有很多寫的和倉(cāng)庫(kù)入庫(kù)表的名稱都不一樣,都沒(méi)有計(jì)算上。其實(shí)還是用VB或者其他語(yǔ)言做個(gè)倉(cāng)庫(kù)管理程序比較好,但不給錢誰(shuí)做呢【手動(dòng)攤手】。 |
|
來(lái)自: 阿默思 > 《業(yè)余研究》