excel VBA 窗体 录入

最近开始学VBA,做了一个简单的录入窗体,自动将录入日期、时间、人员、事项等信息添加到工作表中,

代码如下
Private Sub CommandButton2_Click()
Dim i As Integer
i = 1
Do
i = i + 1
Loop Until Cells(i, 2) = ""
If ComboBox1.Text = "" Or ComboBox2.Text = "" Then
MsgBox "时间和人员不能缺项!", vbInformation, "提示"
Else
Cells(i, 2) = DTPicker1.Value '日期
Cells(i, 3) = ComboBox2.Text '时间
Cells(i, 4) = ComboBox1.Text '人员
Cells(i, 5) = TextBox1.Text '事项
End If
End Sub
两个问题:
1、现在想要追加一个判断条件,即如果日期、时间、人员三项内容与工作表中已有的完全一致,则出现提示:记录已存在,并且不能提交,多条件判断不会用,请高手指教。
2,如果想要把录入的内容用listview显示在右边(如下图),增加修改和查询功能,同时保存到工作表中,怎么操作?

先谢了

建议:

添加一个辅助数据: Cells(i, 6) = DTPicker1.Value & ComboBox2.Text & ComboBox1.Text

用作索引字段

然后在写入工作表之前,增加一个判断:

Dim rng as Range
Set rng = Columns(6).Find(DTPicker1.Value & ComboBox2.Text & ComboBox1.Text)
If rng is not nothing then
    Msgbox "记录已存在,不能提交!"
    Exit sub
End If

当然,也可以用字典对象来做,更简单。


还有,那段查找B列最后一个空单元的循环可以简化为一句代码,如下:

i = Range("B65536").End(xlUp).Offset(1,0).Row

List 控件的 RowSource 属性可以和工作表单元格关联,然后仿照前面判断重复的代码,进行记录的定位,然后进行修改并保存。

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-04-18
1.你可以在do loop循环中加入判断语句
Do
i = i + 1
if Cells(i, 2) = DTPicker1.Value _and '日期
Cells(i, 3) = ComboBox2.Text _and '时间
Cells(i, 4) = ComboBox1.Text _and '人员
Cells(i, 5) = TextBox1.Text then '事项
msgbox "已存在!"

exit do
end if

Loop Until Cells(i, 2) = ""

2.你可以在窗体上再添加个texbox1控件,然后对Listview1进行筛选
Dim i As Long
Dim s1 As String
Dim itm As ListItem
s1 = Me.TextBox1.Text
Me.ListView1.ListItems.Clear
For i = 2 To Sheet1.Range("a65536").End(xlUp).Row
If Sheet1.Cells(i, 1) Like s1 & "*" Then
Set itm = ListView1.ListItems.Add
itm.Text = Sheet1.Cells(i, 1)
itm.SubItems(1) = Sheet1.Cells(i, 2)
End If
Next i

关于listview表头、列宽、颜色等设置可以参考以下代码:

With ListView1
.View = lvwReport
.ColumnHeaders.Add 1, , Sheet1.Cells(1, 1), 80
.ColumnHeaders.Add 2, , Sheet1.Cells(1, 2), 346.75
.Gridlines = True
.FullRowSelect = True
.HotTracking = True
.Font.Size = 13
.ForeColor = RGB(65, 135, 245)
.Font.Bold = True
End With追问

谢谢回复得这么详细,不过对于我这种初学者有点深奥,呵呵,能不能麻烦你帮我把我之前的语句和打算增加了这个条件语句写在一起,谢谢

追答

1.就是在中间加上一行来判断是否在EXCEL中已存在当前输入的内容
Private Sub CommandButton2_Click()
Dim i As Integer
i = 1
Do
i = i + 1
if Cells(i, 2) = DTPicker1.Value and Cells(i, 3) = ComboBox2.Text and Cells(i, 4) = ComboBox1.Text then
msgbox "记录已存在!"
exit sub
end if
Loop Until Cells(i, 2) = ""
If ComboBox1.Text = "" Or ComboBox2.Text = "" Then
MsgBox "时间和人员不能缺项!", vbInformation, "提示"
Else
Cells(i, 2) = DTPicker1.Value '日期
Cells(i, 3) = ComboBox2.Text '时间
Cells(i, 4) = ComboBox1.Text '人员
Cells(i, 5) = TextBox1.Text '事项
End If
End Sub

本回答被提问者和网友采纳
第2个回答  2014-04-18
真的不知道 你好强大 啊

如何在Excel VBA中使用窗体控件
打开Excel开发工具下的Visual Basic。在项目工程区域,鼠标右击选择“插入”,点击“用户窗体”。添加窗体后,在其右侧会自动出现一个工具箱。点击“视图”下的工具箱可以控制它的显示和不显示。点击工具箱中的控件,添加至用户窗体中。点击执行按钮后,可以在Excel工作表中显示窗体界面,且可以使用控件按钮。

excel中如何将用vba把表一的信息录入表二
1、可以先利用宏录制来自动生成代码,然后再进行修改。操作方法如下:第一步,打开一个excel应用,新建一个白空表格,并录入数据。2、第二步,点击excel应用程序窗口状态栏中左侧的“宏录制”按钮。3、第三步,然后在表1中,选中左上角第一个有数据的单元格。4、第四步,接着按下CTRL+SHIFT键,再...

VBA怎么添加窗体
菜单->工具->宏->Visual Basic 编辑器( 或者按快捷键Alt+F11)会 打开VBA编辑器 在VBA编辑器窗口中 菜单->插入->用户窗体 会插入一个用户窗体 然后就可以编写窗体代码以及在窗体中放入控件.如果要显示用户窗体 可以新建一个宏 并输入下面这句:userform1.show 其中userform1 是窗体控件的名称 例如:su...

Excel VBA 用户窗体设置\/一步一步代你设计EXCEL用户+密码登录界面_百度...
首先,创建一个名为"窗体登录(用户名+密码).xlsm"的新Excel文件,启用宏。在Sheet1上,将名称改为"Main",添加一个命令按钮CmdLogin,显示为"重新登录",作为主界面入口。接着,添加一张名为"tb用户"的工作表,隐藏重要信息,只在后台存储用户数据。在Visual Basic编辑器(VBE)中插入用户窗体Usf_Log...

excel VBA 窗体 录入
添加一个辅助数据: Cells(i, 6) = DTPicker1.Value & ComboBox2.Text & ComboBox1.Text 用作索引字段 然后在写入工作表之前,增加一个判断:Dim rng as RangeSet rng = Columns(6).Find(DTPicker1.Value & ComboBox2.Text & ComboBox1.Text)If rng is not nothing then Msgbox "记录...

如何在vba建立窗口来实现录入数据
一种是选择你要录入数据的区域,再通过菜单“工具”->“记录单”,EXCEL就会弹出一个数据录入窗体。第二种方法是按“ALT+F11”进入VBA编辑器,在这里,你可以插入一个用户窗体,这个可能对没有接触过编程的人来说有些复杂,但功能确实比前一种方法要强劲得多了。答题不易,互相理解,您的采纳是我...

VBA编辑器 - VBA FOR EXCEL编程(5)
VBA编辑器是编写VBA代码的平台,可用于查看、编辑和运行调试VBA代码。在Excel中打开VBA编辑器的步骤如下图所示。通常使用「工程资源管理器」、「属性窗口」和「代码窗口」三个部分,如下界面。接着,插入「用户窗体」和「模块」,具体操作见下图。至此,已将常用窗体加入VBA编辑器中。以下视频动态展示了...

excel如何用宏自动录入数据excel如何用宏自动录入数据库
1.打开 Excel,按下 Alt+F11 快捷键或选择“开发工具”栏中的“Visual Basic”按钮,以打开 Visual Basic 编辑器。2.使用“插入”菜单中的“模块”命令添加新的 VBA 模块。在模块窗口中输入自动录入数据的 VBA 代码。3.编写 VBA 代码来控制 Excel 的工作表和单元格。您可以使用 VBA 代码打开 Excel...

Excel Vba 如何将单元格的值,同步显示在窗体中的LABEL或TEXTBOX中...
1、首先,在电脑中找到并打开Excel,在工具栏找到开发工具。2、然后,在开发工具栏下点开VisualBasic。3、然后,使用lable控件来来显示变量内容,接着双击按钮1进入按钮1的代码编写。4、在按钮1中输入:UserForm1.Label1.Caption = a。5、然后,回到form,点击运行窗体。6、最后,lable位置发生了变化,...

在Excel2007,如何用VBA Form和代码来实现窗口输入的客户信息,顺序填入...
先用代码找到表格最后一行,明确要填写在哪一行,比如赋值给n这个参数,叫第n行。然后,Form的每个对象都有一个名称,比如Textbox("姓名"),也对应一个需要填写的列,比如C列(第3列),因此代码为 cells(n,3)=Textbox("姓名").Value 依次写完所有项目即可。最后修饰一下,比如在首部增加判断If ...

相似回答