|
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
本帖最后由 luketools 于 2024-3-7 20:40 编辑
求教各位大神,我做了一个出货单,写了一个change事件代码,因为库存规格有上万种,采用循环时检索前面的规格速度还可以,但如果检索的内容在最后面速度就会比较慢,求助各位有没有什么优化的方法,本人代码处于菜鸟水平,目前只能写到这个水平了。
本来应该用数组形式应该会更快,但是在change事件中不会用数组,也不知道能不能用。
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Application.ScreenUpdating = False
x = Sheet1.[d65536].End(xlUp).Row - 3
y = Sheet2.[d65536].End(xlUp).Row
c = Target.Column
r = Target.Row
If Target.Count = 1 Then
If Target <> 0 Then
If c = 3 And r > 9 And r < x Then '当输入新规格时自动调取单价;
For k = 3 To y
Cells(r, 3) = UCase(Cells(r, 3)) '将cells(r,3)单元格中的字符串全部转换成大写,然后赋予cells(r,3)
If Cells(r, 3) = Sheet2.Cells(k, 4) Then
Cells(r, 5) = Application.Round(Sheet2.Cells(k, 12), 1) '调用工作表函数四舍五入保留一位小数
Exit For
End If
Next
End If
If c = 4 And r > 9 And r < x Then '当出货数量大于等于500时,单价自动打99折,大于等于1000时,单价自动打98折;
For k = 3 To y
If Cells(r, 3) = Sheet2.Cells(k, 4) Then
If Cells(r, 4) < 500 Then
Cells(r, 5) = Application.Round(Sheet2.Cells(k, 12), 1)
ElseIf Cells(r, 4) >= 500 And Cells(r, 4) < 1000 Then
Cells(r, 5) = Application.Round(Sheet2.Cells(k, 12) * 0.99, 2) '打折后保留2位小数
ElseIf Cells(r, 4) >= 1000 Then
Cells(r, 5) = Application.Round(Sheet2.Cells(k, 12) * 0.98, 2) '打折后保留2位小数
End If
Exit For
End If
Next
End If
End If
End If
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
|
|