如果函数要写入sheet1或者同时写入sheet1和sheet2

时间:2015-04-26 23:20:41

标签: excel-vba vba excel

我试图将if函数写入用户表单上的保存按钮,这样如果输入到用户表单的数据已经在表单2上,那么它只会被写入表单1.但是如果它不存在于工作表2上,然后来自用户表单的数据被写入工作表1和工作表2.这是因为我希望工作表2上的数据像一种数据库,并且显然不需要重复。我已经将写入程序分成两个独立的模块(我认为这样可以更容易区分)。这是我的代码(温柔,我还在学习)

Sub writetosheet1()
Dim i As Integer

i = 1
While ThisWorkbook.Worksheets("Sheet1").Range("A" & i).Value <> ""
i = i + 1
Wend

ThisWorkbook.Worksheets("Sheet1").Range("a" & i).Value = UserForm1.txt1.Value
ThisWorkbook.Worksheets("Sheet1").Range("b" & i).Value = UserForm1.txt2.Value
ThisWorkbook.Worksheets("Sheet1").Range("c" & i).Value = UserForm1.txt3.Value
ThisWorkbook.Worksheets("Sheet1").Range("d" & i).Value = UserForm1.txt4.Value
ThisWorkbook.Worksheets("Sheet1").Range("e" & i).Value = UserForm1.txt5.Value
End Sub

Sub writetosheet2()

Dim i As Integer
i = 1
While ThisWorkbook.Worksheets("Sheet1").Range("A" & i).Value <> ""
i = i + 1
Wend


ThisWorkbook.Worksheets("Sheet2").Range("a" & i).Value = UserForm1.txt1.Value
ThisWorkbook.Worksheets("Sheet2").Range("b" & i).Value = UserForm1.txt2.Value
ThisWorkbook.Worksheets("Sheet2").Range("c" & i).Value = UserForm1.txt4.Value
ThisWorkbook.Worksheets("Sheet2").Range("d" & i).Value = UserForm1.txt5.Value
End Sub

Private Sub CMDSAVE_Click()
Dim id As Long
id = txt1.Value
If id <> Sheets("Sheet2").Range("a:a").Value Then
Call writetosheet1
Call writetosheet2
Else
Call writetosheet1

End If
End Sub

对此的任何帮助都太棒了!感谢。

1 个答案:

答案 0 :(得分:0)

我认为您不能将单个值与整个范围进行比较,如下所示:

If id <> Sheets("Sheet2").Range("a:a").Value Then

你需要分别通过该范围内的所有细胞。

If Application.CountIf(Sheet2.Range("A:A"), id) > 0 then
 'write only to sheet1
else
 'write to both sheets
end if