VBA高手请进.帮忙解释一下代码

Sub BQ()
Dim Myr%, x%, n%, y%, m%, o%, s%, T%, ac%, W%, ai%, P%
Dim Sht1 As Worksheet, Sht2 As Worksheet
Set Sht1 = Sheets("柜体料单")
Set Sht2 = Sheets("标签输入")
Sht1.Activate
Myr = [A65536].End(xlUp).Row

n = 3
m = Cells((Myr - 1), 7) + n
o = Cells((Myr - 1), 12) + m
s = Cells((Myr - 1), 18) + o
y = Cells((Myr - 1), 24) + s
ac = Cells((Myr - 1), 29) + y
ai = Cells((Myr - 1), 34) + ac
P = Cells((Myr - 1), 39) + ai
W = Cells((Myr - 1), 44) + P
T = Cells((Myr - 1), 50) + W

Sht2.Range("A3:H350") = Clear

For x = 6 To Myr '底板类
If Range("C" & x) > 0 And Range("G" & x) = 1 Then
Sht2.Range("B" & n) = Range("C4") '板件名称
Sht2.Range("A" & n) = Range("B" & x) '板件序号
Sht2.Range("C" & n) = Range("C" & x) + 2 '成活宽(高)(长)度
Sht2.Range("D" & n) = Range("E" & x) + 2 '成活深(深)(宽)度
Sht2.Range("E" & n) = 1 '数量
Sht2.Range("F" & n) = Range("D3") '板材颜色
Sht2.Range("G" & n) = Range("N3") & "mm" '板材厚度
Sht2.Range("H" & n) = Range("M" & x) '是否划槽
'Sht2.Range("I" & n) = "是" '是否排钻
n = n + 1

ElseIf Range("C" & x) > 0 And Range("G" & x) = 2 Then
Sht2.Range("B" & n) = "顶板"
Sht2.Range("A" & n) = Range("B" & x)
Sht2.Range("C" & n) = Range("C" & x) + 2
Sht2.Range("D" & n) = Range("E" & x) + 2
Sht2.Range("E" & n) = 1
Sht2.Range("F" & n) = Range("D3") '板材颜色
Sht2.Range("G" & n) = Range("N3") & "mm" '板材厚度
Sht2.Range("H" & n) = Range("M" & x) '是否划槽
'Sht2.Range("I" & n) = "是"

=====================================================

'这个程序是在对数据表进行操作,T 在这段代码中尚未使用到.
'这段代码写入数据的效率太低,数据量较大时写入速度会很慢.如果能看到完整代码和数据有优化的可能,效率会非常的高.

Sub BQ()

Dim Myr%, x%, n%, y%, m%, o%, s%, T%, ac%, W%, ai%, P% '定义若干Integer变量
Dim Sht1 As Worksheet, Sht2 As Worksheet '定义两个工作表对象
Set Sht1 = Sheets("柜体料单") '将工作表对象关联到已有的表格
Set Sht2 = Sheets("标签输入")
Sht1.Activate
Myr = [A65536].End(xlUp).Row '寻找最后一行数据

'比如 Myr=101
n = 3
m = Cells((Myr - 1), 7) + n '100行7列的数据+3,以下依次类推,感觉像是在累加数据,比如只有一行数据,从1-50的序列.这里就可以简化为 7+3=10
o = Cells((Myr - 1), 12) + m '12+10=22
s = Cells((Myr - 1), 18) + o '18+22=30
y = Cells((Myr - 1), 24) + s '24+30=54
ac = Cells((Myr - 1), 29) + y '29+54=83
ai = Cells((Myr - 1), 34) + ac '以下相同,就是将同一行不同列数据累加
P = Cells((Myr - 1), 39) + ai
W = Cells((Myr - 1), 44) + P
T = Cells((Myr - 1), 50) + W '最后求出T

Sht2.Range("A3:H350") = Clear '清除表2 A3:H350区域的数据

For x = 6 To Myr '底板类'以下是写入数据,将Sht1的数据写入到Sht2中
If Range("C" & x) > 0 And Range("G" & x) = 1 Then
Sht2.Range("B" & n) = Range("C4") '板件名称
Sht2.Range("A" & n) = Range("B" & x) '板件序号
Sht2.Range("C" & n) = Range("C" & x) + 2 '成活宽(高)(长)度
Sht2.Range("D" & n) = Range("E" & x) + 2 '成活深(深)(宽)度
Sht2.Range("E" & n) = 1 '数量
Sht2.Range("F" & n) = Range("D3") '板材颜色
Sht2.Range("G" & n) = Range("N3") & "mm" '板材厚度
Sht2.Range("H" & n) = Range("M" & x) '是否划槽
'Sht2.Range("I" & n) = "是" '是否排钻
n = n + 1

ElseIf Range("C" & x) > 0 And Range("G" & x) = 2 Then
Sht2.Range("B" & n) = "顶板"
Sht2.Range("A" & n) = Range("B" & x)
Sht2.Range("C" & n) = Range("C" & x) + 2
Sht2.Range("D" & n) = Range("E" & x) + 2
Sht2.Range("E" & n) = 1
Sht2.Range("F" & n) = Range("D3") '板材颜色
Sht2.Range("G" & n) = Range("N3") & "mm" '板材厚度
Sht2.Range("H" & n) = Range("M" & x) '是否划槽
'Sht2.Range("I" & n) = "是"
温馨提示:答案为网友推荐,仅供参考
相似回答