使用vba 禁止重复录入数据,写的好像没效果,代码该怎么修改
把textbox的信息传递到sheet1对应的列里面,数据是可以传递过去,但是有一个比较麻烦的问题就是点多几下,也传递进去了,里面的条件信息该怎么修改才能禁止多次录入或者...
把textbox的信息传递到sheet1对应的列里面,数据是可以传递过去,但是有一个比较麻烦的问题就是点多几下,也传递进去了,里面的条件信息该怎么修改才能禁止多次录入或者重复录入????Private Sub quedingluru_Click() Dim i As Long, dic As Object, k Set dic = CreateObject("Scripting.Dictionary") If dic.exists("TextBox1.Text & TextBox3.Text") Then MsgBox "信息已存在" Else k = k + 1 dic.Add TextBox1.Text & TextBox3.Text, k With Sheets("sheet1") i = .[a1].CurrentRegion.Rows.Count + 1 .Cells(i, 1) = TextBox1.Text .Cells(i, 2) = TextBox2.Text .Cells(i, 3) = TextBox4.Text .Cells(i, 4) = TextBox3.Text End WithMsgBox "录入成功" End IfEnd Sub
展开
1个回答
展开全部
你没有理解并掌握变量的作用域以及变量的声明周期这两个概念;
你在过程quedingluru_Click()里,声明的变量dic、k,每当该过程结束,该变量就从内存里消失了,下次再次进入,该变量的值重新开始,上次的内容是不记忆的。
解决办法,你需要把它们声明为模块级变量。
Private dic As Object
Private YesNo As Boolean '开关状态
Private k As Long
注意:把 上面三行代码,放在整个代码窗口的最最上面的位置!!!!
完整代码如下:
Private dic As Object
Private YesNo As Boolean '开关状态
Private k As Long
Private Sub quedingluru_Click()
'使用YesNo的开关作用,是为了保证只运行一次CreateObject
If Not YesNo Then
YesNo = True
Set dic = CreateObject("Scripting.Dictionary")
End If
If dic.exists("TextBox1.Text & TextBox3.Text") Then
MsgBox "信息已存在"
Else
k = k + 1
dic.Add TextBox1.Text & TextBox3.Text, k
With Sheets("sheet1")
i = .[a1].CurrentRegion.Rows.Count + 1
.Cells(i, 1) = TextBox1.Text
.Cells(i, 2) = TextBox2.Text
.Cells(i, 3) = TextBox4.Text
.Cells(i, 4) = TextBox3.Text
End With
MsgBox "录入成功"
End If
End Sub
你在过程quedingluru_Click()里,声明的变量dic、k,每当该过程结束,该变量就从内存里消失了,下次再次进入,该变量的值重新开始,上次的内容是不记忆的。
解决办法,你需要把它们声明为模块级变量。
Private dic As Object
Private YesNo As Boolean '开关状态
Private k As Long
注意:把 上面三行代码,放在整个代码窗口的最最上面的位置!!!!
完整代码如下:
Private dic As Object
Private YesNo As Boolean '开关状态
Private k As Long
Private Sub quedingluru_Click()
'使用YesNo的开关作用,是为了保证只运行一次CreateObject
If Not YesNo Then
YesNo = True
Set dic = CreateObject("Scripting.Dictionary")
End If
If dic.exists("TextBox1.Text & TextBox3.Text") Then
MsgBox "信息已存在"
Else
k = k + 1
dic.Add TextBox1.Text & TextBox3.Text, k
With Sheets("sheet1")
i = .[a1].CurrentRegion.Rows.Count + 1
.Cells(i, 1) = TextBox1.Text
.Cells(i, 2) = TextBox2.Text
.Cells(i, 3) = TextBox4.Text
.Cells(i, 4) = TextBox3.Text
End With
MsgBox "录入成功"
End If
End Sub
追答
上面有一句判断的地方,应该不加双引号的?
if dic.exists(TextBox1.Text & TextBox3.Text) Then
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |