永发信息网

请 EXCEL VBA高手 ,帮忙解释一下 下面这段代码,具体是什么意思?

答案:2  悬赏:70  手机版
解决时间 2021-02-15 04:13
我对VBA只通了9窍,请问这段EXCEL vba代码具体是什么意思?为什么要这样使用?麻烦高手详细解释一下。高分跪谢了。

Sub save()
Dim ar, ix As Integer
If [B2] = "甲" Then ix = 2: x = Sheets(ix).Range("A65536").End(xlUp).Row
If [B2] = "乙" Then ix = 3: x = Sheets(ix).Range("A65536").End(xlUp).Row
ar = Range("a4:h9")
If x = 1 Then
er = 1
Else
For i = 1 To 6
For j = 2 To 8
If ar(i, j) <> Sheets(ix).Cells(x - 6 + i, j) Then er = 1
Next j
Next i
End If
If er = 1 Then
Sheets(ix).Range("A" & x + 1).Resize(6, 8) = ar
MsgBox "保存成功"
Else
MsgBox "你已保存过该数据"
End If
End Sub
最佳答案
Sub save()
Dim ar, ix As Integer
If [B2] = "甲" Then ix = 2: X = Sheets(ix).Range("A65536").End(xlUp).Row '如果B2="甲" 那么变量ix=2,X=第二张表A列的最后一个有数据单元格行号
If [B2] = "乙" Then ix = 3: X = Sheets(ix).Range("A65536").End(xlUp).Row '如果B2="甲" 那么变量ix=3,X=第三张表A列的最后一个有数据单元格行号
'Range("A65536").End(xlUp).Row 相当于点选Range("A65536") 然后按住Ctrl+向上键 得到的那个单元格的行号
ar = Range("a4:h9") '把Range("a4:h9")赋值给数组ar
If X = 1 Then '判断x是否为1
er = 1  '如果x为1那么er=1(根据上面的情况如果x=1那么A列就只有A1有数据或者A列就没有数据)
Else '如果x不为1
For i = 1 To 6 'i从1到6循环
    For j = 2 To 8 'j从2到8循环 也就是ar这个数组的所有数据进行循环
        If ar(i, j) <> Sheets(ix).Cells(X - 6 + i, j) Then er = 1 '判断sheets(ix)的最后那部分数据是否为arr也就是看是否已经把数据复制过来了如果数据完全相同那么er=0否则er=1
    Next j
Next i
End If
If er = 1 Then '判断er是否为1
    Sheets(ix).Range("A" & X + 1).Resize(6, 8) = ar '把ar赋值于Sheets(ix).Range("A" & X + 1).Resize(6, 8)
    MsgBox "保存成功" '弹出对话框保存成功
Else
    MsgBox "你已保存过该数据" '如果er不为1弹出对话框你已保存过该数据
End If
End Sub

'这段代码其实就是判断[B2]如果为甲就把数据Range("a4:h9")添加到第二张表的最后,如果为乙就添加到第三章表的最后
全部回答
Sub save()   '定义过程名; Dim ar, ix As Integer  '定义变量ar和ix为整型变量; If [B2] = "甲" Then ix = 2: X = Sheets(ix).Range("A65536").End(xlUp).Row 'Range("A65536").End(xlUp).Row意为当活动单元格为A65536(即A列最下面一个单元格)时,按一次Ctrl+向上键后,新活动单元格的行号; '若当前工作表的B2单元格里内容为"甲",则为变量ix赋值为2,并将当前工作表后面的第一个(相对位置)工作表里A列执行上述操作后得到的新活动单元格的行号赋值给变量X; If [B2] = "乙" Then ix = 3: X = Sheets(ix).Range("A65536").End(xlUp).Row '若当前工作表的B2单元格里内容为"乙",则为变量ix赋值为3,并将当前工作表后面的第二个(相对位置)工作表里A列执行上述操作后得到的新活动单元格的行号赋值给变量X; ar = Range("a4:h9")  '将当前单元格的A4至H9区域中单元格的值赋给变量ar; If X = 1 Then er = 1  '若变量X的值为1,则er赋值为1; Else For i = 1 To 6     For j = 2 To 8  '若变量X的值不为1,则i从1循环到6,j从2循环到8,即读取A4至H9的每个单元格的值;         If ar(i, j) <> Sheets(ix).Cells(X - 6 + i, j) Then er = 1 Else er = 0 '若第ix个工作表的A4至H9区域内的数值等于当前工作表的A4至H9区域内的数值,则er=1,否则,er=0;     Next j Next i End If  '结束条件判断; If er = 1 Then     Sheets(ix).Range("A" & X + 1).Resize(6, 8) = ar     MsgBox "保存成功"      '若er=1,就把ar的值赋给第ix个工作表中从第X行下一行的6*9区域内,并弹出“保存成功”对话框; Else     MsgBox "你已保存过该数据"  '若er不为1,则弹出 "你已保存过该数据"对话框; End If  '结束条件判断; End Sub  '结束过程; '前面这位知友的回答相当专业,虽然略有瑕疵,但也可谓瑕不掩瑜,多多学习了。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
一个男生对你说“有我在”意味着什么?
谁知道哪里可以查。文物拍卖资格的公司?
石油大街地址在哪,我要去那里办事
博兴三路/西环南路(路口)这个地址在什么地方
最近“逆龄”这个词很火啊,谁能解释一下是什
阅读下列材料我们以这些殖民地的善良人民的名
在西方礼仪中男女戒指戴的位置所含的信息是什
中国电信石林西街口镇营业厅这个地址在什么地
tfboys易烊千玺的家乡在哪里
《七彩命运》txt全集下载
Reading is very important to help you lear
经济学关于经济萧条的解释是()。A.实际产出低
皇上,你还记得十八年前大明湖畔的夏雨荷吗!
怡合苑小区(建材路)我想知道这个在什么地方
2016.4.11号汉中开往北京的k262晚点没有
推荐资讯
then she won't be able to see the card怎么
能字井怎么去啊,有知道地址的么
金华艺工程服务中心在什么地方啊,我要过去处
银行应聘原因
征途丫鬟和城主侍女有什么区别?
下面图1为我国天津市不同季节近地面气温空间
靖宇县环境保护监测站我想知道这个在什么地方
古代嫔妃如果谋害太子是什么罪?
下列各项是关于玻璃棒在若干实验中的用途及操
山西水工局文体活动中心在什么地方啊,我要过
佰草集护肤品怎么样?补水款哪个系列的好?
激情燃烧的岁月比吃饭是第几集
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?