【发布时间】:2020-07-26 15:02:08
【问题描述】:
我是 Excel VBA 用户窗体的新手.. 我想实现以下两个问题:
1) 我有三个文本框名称客户姓名、手机号码和电子邮件 ID --> 我从 Sheet1 获取这些数据,这就像一个数据库,其中存储了所有这三列数据,并且会不时更改。 接下来,我将组合框依赖于另一个文本框 --> 这两个充当父项和子项,组合框是父项,文本框是子项,在组合框中选择的任何项目脚本将显示在文本框中。
考试: 组合框如果我选择项目“汽车”,那么它的脚本将在子文本框中显示为“名称有新车,他的手机号码是:& 电子邮件 ID 是:” 以同样的方式,我有多达 200 个这样的脚本。
我想将显示在此用户窗体上的前三个文本框数据直接填充到此脚本中,如下例所示
如果客户姓名是 John,手机号码 132132132 和电子邮件 ID test@test.com 当用户从父组合框中选择汽车时,此文本框将填充诸如“约翰有新车,他的手机号码是:132132132 & 电子邮件 ID 是:test@test.com”这样的数据,这样我就可以将数据保存在 Sheet2 中
在这 200 个脚本中,客户详细信息将改变他们在脚本中的位置。意味着少数脚本中的客户名称将出现在脚本的末尾。
2) 我还有两个相同形式的文本框,其中一个文本框用于输入客户语言,另一个文本框用于输入日期和时间(当前或特定日期和时间)。一旦我输入客户语言说英语和当前日期和时间,然后我选择更新按钮这两个文本框值需要保存在我上面解释的几个脚本上。
示例:
“约翰有新车,他的手机号码是:132132132 & 电子邮件 ID 是:test@test.com,语言是英语,访问时间当前日期和时间”
“我在日期和时间见到了 Kiran,然后他询问了我的联系电话和电子邮件 ID。语言是德国”
在以上两个示例中,我必须在某些脚本中使用所有文本框值,我只需要使用客户名称。
我正在使用搜索按钮调用这些客户数据,该按钮将从 sheet1 中提取数据。 一切都像在表格上提取和保存数据一样工作,但我无法找到与上述两种情况相匹配的选项。
如果你能分享这个的确切代码会很有帮助,因为我尝试直接在带有修剪选项的工作表上进行连接,这完全出错了,所以我得到了关于如何处理的结构。
在此先感谢
编辑: 当然,请在下面找到详细信息,感谢您的更新
下面是用户表单的视图。 因此,我用于 sheet1 的客户详细信息框架是存储我的数据库的,当我们单击搜索按钮时将显示在表单上 对于搜索按钮代码是
`Private Sub CommandButton3_Click()
Dim Cust_Name As String
Cust_Name = Trim(TextBox1.Text)
LastRow = Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To LastRow
If Worksheets("Sheet1").Cells(i, 1).Value = Cust_Name Then
TextBox1.Text = Worksheets("Sheet1").Cells(i, 2).Value
TextBox2.Text = Worksheets("Sheet1").Cells(i, 3).Value
TextBox3.Text = Worksheets("Sheet1").Cells(i, 4).Value
End If
Next
End Sub`
对于额外的详细信息框架,我有以下两个文本框的代码,我们需要在其中手动输入语言,将输入英语或任何其他语言以及日期和时间
所以,对于显示时间,我使用了代码
Me.TextBox10.Value = Format(Now, "dd/mm/yyyy hh:mm:ss")
对于依赖组合框和脚本文本框的脚本 Windows 框架,使用以下代码
`Private Sub ComboBox1_Change()
Dim i As Long, LastRow As Long
LastRow = Sheets("Sheet2").Range("F" & Rows.Count).End(xlUp).Row
For i = 2 To LastRow
If Sheets("Sheet2").Cells(i, "F").Value = (Me.ComboBox1) Then
Me.TextBox5 = Sheets("Sheet2").Cells(i, "G").Value
End If
Next
End Sub`
`Private Sub ComboBox1_DropButtonClick()
Dim i As Long, LastRow As Long
LastRow = Sheets("Sheet2").Range("F" & Rows.Count).End(xlUp).Row
If Me.ComboBox1.ListCount = 0 Then
For i = 2 To LastRow
Me.ComboBox1.AddItem Sheets("Sheet2").Cells(i, "F").Value
Next i
End If
End Sub`
因此,从“客户详细信息”框架中,当我从下拉列表中选择脚本时,我希望所有详细信息都应自动放入脚本中还需要在该脚本文本框中进行更新。
根据我分享的图片和下面的详细信息,我需要在最终输出中获得。 约翰有新车,他的手机号码是:123456789 & 电子邮件 id 是:test@test.com,语言是英语,当前访问时间 14-04-2020 12:46:33
这是我在最终修改后的脚本中需要的,我可以使用以下代码将其保存在工作表中。
`Private Sub CommandButton1_Click()
Dim sh As Worksheet
Set sh = ThisWorkbook.Sheets("Sheet4")
Dim n As Long
n = sh.Range("A" & Application.Rows.Count).End(xlUp).Row
sh.Unprotect "test"
sh.Range("A" & n + 1).Value = Me.TextBox1.Value
sh.Range("B" & n + 1).Value = Me.TextBox2.Value
sh.Range("C" & n + 1).Value = Me.TextBox3.Value
sh.Range("E" & n + 1).Value = Me.TextBox5.Value
sh.Protect "test"
End Sub`
还有什么需要告诉我谢谢。
【问题讨论】:
-
请尝试将您的文字墙分解为您遇到的问题的描述。发布您的代码,发布您想要发生的事情,然后发布发生的事情。没有人会给你运行场景所需的确切代码。但是,如果您发布代码并解释什么不起作用,那么我们可以为您提供帮助。
-
@teylyn ,请立即使用屏幕截图和代码找到我的更新。谢谢
标签: excel vba combobox textbox userform