这是我在这里发表的第一篇文章,也许是一篇难题。
我正在为他们的治疗师诊所的朋友创建一个安排工具。
我有一个名为frmschedule的表单,当用户选择日期和时间时,它会在excel表上找到匹配项并写下名称等数据。
用户将从2017年1月1日至2017年12月31日的预装列表框(lstboxdate)中选择一个日期。
然后,用户将从预先加载的列表框(lstboxtime)中选择一个时间,说明8:00 / 8:20 / 8:40 / 9:00等。
我有一个excel spreadhseet,它在列表中有365天,并且每天给出一个"序列号"例如,1月1日将是" 1"
我还列出了所有列出的时间范围和每个时段的序列号。例如,8:00将是800
用户选择了日期和时间之后,"序列号"将在该日期和时间创建 - 例如,2017年1月1日8:00的预约将返回序列号1800.预约序列号存储在一个文本框中,该文本框结合了日期序列号的值以及时间序列号。
当用户选择命令按钮时,我希望vba在我的日程表电子表格中找到该特定的序列号(已经有每天和每天的日期/时间序列号),并从txtname / txtphone写入数据。 / p>
有没有人可以帮助我,或者让我这太复杂了。
我不熟悉循环和搜索引擎,但试图找到解决方案
提前致谢
答案 0 :(得分:0)
我不确定您是否使用序列号写入工作表或在表单上显示数据 - 如果是后者,一个非常简单的解决方案是使用vlookup或索引/匹配。例如,假设命令按钮名为CommandButton1,使用单击事件从不同页面查找序列号并返回名称/电话组合。
假设: 文本框称为TextBox1 命令按钮= CommandButton1 姓名/电话的序列号在Sheet2上
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
答案 1 :(得分:0)
如果您的组合框中包含序列号并且您正在写入日程表,则可以尝试以下操作:
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
基本上,您正在运行Match()工作表函数以返回存储序列号的单元格地址,然后您将写入同一行中的单元格。
cboSerial是存储序列号的组合框 txtName是约会持有人的姓名 txtNumber是约会持有人的电话号码