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 '结束过程;
'前面这位知友的回答相当专业,虽然略有瑕疵,但也可谓瑕不掩瑜,多多学习了。