这是我在这里的第一篇文章,也可能是一篇很难的文章。
我正在为我的一个朋友创建一个治疗师诊所的日程安排工具。
我有一个名为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:00将是800
用户选择日期和时间后,将为该日期和时间创建一个“序列号”-例如,2017年1月1日8:00的约会将返回序列号1800。约会序列号存储在文本框中,该文本框将日期序列号和时间序列号的值组合在一起。
当用户选择一个命令按钮时,我希望vba在我的日程表电子表格(它已经有每天和时间的日期/时间序列号)上找到那个特定的序列号,并从txtname / txtphone写入数据。
有没有人能帮我,或者我把事情搞得太复杂了。
我对循环和搜索引擎并不熟悉,但我一直在尝试寻找解决方案
提前感谢
发布于 2017-02-03 06:25:33
我不确定您是使用序列号写入工作表还是在表单上显示数据--如果是后者,一个真正简单的解决方案是使用vlookup或index/match。例如,假设命令按钮名为CommandButton1,使用单击事件从不同的页面查找序列号并返回姓名/电话组合。
假设: Textbox名为TextBox1命令button=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发布于 2017-02-03 06:52:48
如果你的组合框有序列号,并且你正在写进度表,你可以尝试这样做:
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是约会者的电话号码
https://stackoverflow.com/questions/42013049
复制相似问题