Vba 搜索引擎-在excel工作表中的txtbox中查找值并写入数据

Vba 搜索引擎-在excel工作表中的txtbox中查找值并写入数据,vba,excel,Vba,Excel,这是我在这里的第一篇文章,可能是一篇很难的文章 我正在为一位朋友的治疗师诊所创建一个日程安排工具 我有一个名为frmschedule的表单,当用户选择日期和时间时,它会在excel工作表上找到匹配项,并写入诸如名称等数据 用户将从预加载的列表框lstboxdate中选择一个日期,说明从2017年1月1日到2017年12月31日 然后,用户将从预加载的列表框lstboxtime中选择一个时间,说明8:00/8:20/8:40/9:00等 我有一个excel spreadhseet,它将所有365天

这是我在这里的第一篇文章,可能是一篇很难的文章

我正在为一位朋友的治疗师诊所创建一个日程安排工具

我有一个名为frmschedule的表单,当用户选择日期和时间时,它会在excel工作表上找到匹配项,并写入诸如名称等数据

用户将从预加载的列表框lstboxdate中选择一个日期,说明从2017年1月1日到2017年12月31日

然后,用户将从预加载的列表框lstboxtime中选择一个时间,说明8:00/8:20/8:40/9:00等

我有一个excel spreadhseet,它将所有365天都列在一个列表中,并且每天都给出一个序列号,例如1月1日将是1

我还有一个列出所有时间的范围和每个时间段的序列号。对于我来说,8点是800分

用户选择日期和时间后,将为该日期和时间创建序列号-例如,2017年1月1日8:00的约会将返回序列号1800。约会序列号存储在一个文本框中,该文本框结合了日期序列号和时间序列号的值

当用户选择一个命令按钮时,我希望vba在我的日程表电子表格中找到特定的序列号,该序列号已经具有每天和时间的日期/时间序列号,并从txtname/txtphone写入数据

有没有人能帮我,或者我把事情弄得太复杂了

我不熟悉循环和搜索引擎,但已经尝试找到解决方案


提前感谢

我不确定您是否使用序列号写入工作表或在表单上显示数据-如果是后者,一个非常简单的解决方案是使用vlookup或索引/匹配。例如,假设命令按钮名为CommandButton1,使用单击事件从不同页面查找序列号并返回名称/电话组合

假设: Textbox称为TextBox1 命令按钮=命令按钮1 带有姓名/电话的序列号在表2中

Private Sub CommandButton1_Click()
Dim sName$, sPhone$
sName = WorksheetFunction.VLookup(Me.ComboBox1.Value, Sheets("Sheet2").Range("A1:B100"), 2, False)
sPhone = WorksheetFunction.VLookup(Me.ComboBox1.Value, Sheets("Sheet2").Range("A1:C100"), 3, False)
Me.TextBox1 = "Name: " & sName & vbCrLf & "Phone: " & sPhone
End Sub

如果您的组合框具有序列号,并且您正在写入计划表,您可以尝试以下操作:

Private Sub CommandButton1_Click()
Dim rngName As Range
Dim rngPhone As Range
Dim i As Integer

i = WorksheetFunction.Match(cint(Me.cboSerial), Sheets("Sheet2").Range("A1:A100"), True)

Set rngName = Sheets("Sheet2").Cells(i, 2)
Set rngPhone = Sheets("Sheet2").Cells(i, 3)

rngName = Me.txtName
rngPhone = Me.txtNumber
End Sub
基本上,您运行匹配工作表函数来返回存储序列号的单元格地址,然后写入同一行中的单元格

cboSerial是存储序列号的组合框 txtName是约会持有人的姓名
txtNumber是预约持有者的电话号码

我想他想在手机旁边的一张纸上写下与序列号匹配的号码,以便记录预约。您好,是的,我想根据用户表单上与excel spreasheet匹配的约会序列号将数据写入excel工作表。如果这有助于实现确切需要做的事情,我已将文件放入dropbox…如果我要求太多,我诚挚的道歉如果您知道日期、时间以及每天的时段数,那么您应该能够计算行数,而无需进行搜索。约会日期-1月1日获取天数减去1,再乘以每天的时间段数,然后添加所选的时间段,这将为您提供工作表上的行号。使用单元格引用要更新的单元格。或者您可以在excel VBA中查找范围查找函数。您的项目听起来很复杂。我很想知道您对我不久前没有使用VBA或表单的预约跟踪程序的看法。Gordon,我真的很喜欢你在那里写的东西我的计划是像你一样包括每周视图,但还没有达到这一点。。至于你的建议,我认为这是一个好主意,但不知道如何做到这一点。嗨,Ryan,我已经将你的代码和确认对话框代码放在命令按钮中。我没有收到任何错误,但没有写入excel工作表?可能是excel序列号与userform序列号的格式不同吗?Ryan,我已经检查了代码,找不到为什么选择命令按钮时没有操作的原因。抱歉,继续按enter键下移一行。我已将文件放在dropbox上,因为由于字符长度,我无法将代码放在这里。再次感谢,我认为文本框中的数字可能实际上是文本,但运行匹配函数的字段是数字,因此找不到匹配项。能否尝试将文本框中的值转换为整数?例如Cintme.cboSerialThanks Ryan。我采纳了上述建议,并将其添加到代码中,其中日期和时间序列号被合并,但得到一条错误消息,说明需要标识符。你在哪里 ld或如何将序列号更改为整数?CintMe.txtserial1.Value=txtdate1serial.Value&txtdtime1serial.Value再次感谢您的帮助…我从中学习