當前位置:成語大全網 - 新華字典 - EXCEL VBA這些語句是什麽意思,有大神逐句翻譯嗎?

EXCEL VBA這些語句是什麽意思,有大神逐句翻譯嗎?

Private Sub Worksheet_Activate() '工作表激活事件

Set d = CreateObject("Scripting.Dictionary") '賦值D為字典對象

arr = Sheet1.UsedRange

For i = 2 To UBound(arr)

If arr(i, 1) <> "" Then d(arr(i, 1)) = "" 'D增加關鍵字

Next

With Range("B2").Validation

.Delete

.Add 3, 1, 1, Join(d.keys, ",") 'B2增加數據有效性等於D關鍵字相連的值

End With

Set d = Nothing

End Sub

Sub 查詢()

Dim d, arr, brr(), ar, br(), abr(), m, n, i, j, a, b, aa, s

Range("A5:P10000").ClearContents '清除("A5:P10000")單元格區域內容

If Range("B2") = "" Then MsgBox "請選擇料號!程序退出。", 64, "溫馨提示": Exit Sub

If Range("C2") = "" Then MsgBox "請填寫出庫數量!程序退出。", 64, "溫馨提示": Exit Sub '單元格B2和C2單元格為空值時彈出對話框提示

arr = Sheet1.UsedRange '賦值ARR

For i = 2 To UBound(arr) '在ARR1維中循環

If arr(i, 1) = Range("B2") And arr(i, 4) = "Available" Then '判定單元格是否等於 Range("B2") 和arr(i, 4) = "Available"就執行下面的代碼

m = m + 1 'M值進行累加

ReDim Preserve brr(1 To 7, 1 To m) '給BRR數給賦值,

For j = 1 To 6 'J從壹到6循環

brr(j, m) = arr(i, j) '給BRR賦值等於對應的arr數組理面的值

Next

brr(7, m) = arr(i, 10) '同樣是是BRR賦值

End If

If arr(i, 1) = Range("B2") Then '判定arr(i, 1) = Range("B2")就執行下面代碼

s = s + 1 'S值進行累加

ReDim Preserve abr(1 To 7, 1 To s) 'M 同樣也是給abr賦值等於對應的arr數組理面的值

For j = 1 To 6

abr(j, s) = arr(i, j)

Next

abr(7, s) = arr(i, 10)

End If

Next

If m = 0 Then '判斷M等於0就執行下面的程序

Range("B5:H10000").ClearContents '清除(("B5:H10000")單元格區域內容

[B5].Resize(s, 7) = Application.Transpose(abr) '{B5]擴充區域後賦值等於abr轉置的值

Range("B5:H" & s + 4).Sort [H5] '對H列排序

MsgBox "" & Range("B2") & "料號可出庫的庫存是0!程序退出。", 64, "溫馨提示" '彈出提示

Exit Sub '退出程序

End If

[B5].Resize(m, 7) = Application.Transpose(brr) ' '{B5]擴充區域後賦值等於BRR轉置的值

Range("B5:H" & m + 4).Sort [H5] '對H列排序

arr = Range("B5:H" & m + 4) '重新賦值ARR

Range("B5:H10000").ClearContents '清除(("B5:H10000")單元格區域內容

[B5].Resize(s, 7) = Application.Transpose(abr) ' '{B5]擴充區域後賦值等於abr轉置的值

Range("B5:H" & s + 4).Sort [H5] '對H列排序

For i = 1 To UBound(arr) '在ARR數組中循環

a = a + arr(i, 3) '給A賦值

Next

b = Val(Range("C2")) '給B賦值

If a - b < 0 Then '判定A-B小於0就執行下面程序

MsgBox "" & Range("B2") & "料號現有庫存 " & a & " 不夠本次出庫!程序退出。", 64, "溫馨提示" '彈出提示

Exit Sub

End If

For i = 1 To UBound(arr)

n = n + 1

ReDim Preserve br(1 To 7, 1 To n)

For j = 1 To 7

br(j, n) = arr(i, j)

Next

aa = aa + arr(i, 3)

If Val(aa) >= Val(b) Then

Exit For

End If

Next

br(3, n) = br(3, n) - (aa - b)

[J5].Resize(n, 7) = Application.Transpose(br) '上述代碼就是給[J5].Resize(n, 7)這個區域賦值等於轉置後的(br) 內容

End Sub