我敢肯定,这是一个简单的问题,但是我对此还是很陌生并尝试学习。你们都已经极大地帮助了我。
我在工作簿中有一个工作表,用于存储我输入到用户窗体文本框中的数据选项。想法是,我在用户窗体的组合框中输入一个名称,然后单击“保存”按钮,该按钮将文本从各个文本框中复制到隐藏的电子表格中,以后可以使用另一个按钮“加载”。
我保存文本框数据的代码工作正常,但是在使组合框引用我创建的动态范围(在列中)时遇到了问题。另外,我不确定如何编写代码以从组合框选择所在的行中复制数据。
示例:
名称Datafield1 Datafield2 Datafield3
Preset1紫色10000香蕉
我希望我的组合框在名称下填充动态范围,然后自动将“紫色”,“ 10000”,“香蕉”全部复制到文本框1、2和5
之前我已经获得了要用静态范围填充的组合框,但是我从未尝试根据我在组合框中选择的内容来填充用户表单测试框
对于动态范围块,我有几行代码,使具有范围的工作表处于活动状态,并设置了组合框的行来源
我不确定从哪里开始引用组合框选择行中的其他单元格
到目前为止,我没有收到任何错误消息,因为我无法弄清楚如何使动态范围正常工作或如何填充文本框。预先感谢您的帮助,你们真棒。
string
答案 0 :(得分:0)
我不确定您确切要将文本框值存储在哪里,因此我只将它们存储在隐藏的工作表中的单元格A1,B1,C1中。可以轻松更改此设置以满足您的需求。
这就是我要做的:
Userform_Initialize()
子模块位于模块中,通过单击数据所在的工作表中的按钮来调用它:
Option Explicit
Sub Userform_Initialize()
Dim sht As Worksheet
Dim sourceRng As Range
Set sht = ThisWorkbook.Worksheets("Name of the Sheet") 'where the data is
With sht
Set sourceRng = .Range(.Range("A2"), .Range("A" & .Rows.Count).End(xlUp))
End With
UserForm1.ComboBox1.List = sourceRng.Value
Load UserForm1
UserForm1.Show
End Sub
按下按钮时,将显示用户窗体,并且组合框已经初始化。
更改组合框的值时,将触发位于用户窗体本身中的ComboBox1_Change()
子项。发生这种情况时,文本框会自动加载相应的值。
Option Explicit
Private Sub ComboBox1_Change()
Dim sht As Worksheet
Dim dataRng As Range
Set sht = ThisWorkbook.Worksheets("Name of the Sheet") 'where the data is
With sht
Set dataRng = .Range(.Range("A2"), .Range("D" & .Rows.Count).End(xlUp))
End With
TextBox1.Value = Application.WorksheetFunction.VLookup(ComboBox1.Value, dataRng, 2)
TextBox2.Value = Application.WorksheetFunction.VLookup(ComboBox1.Value, dataRng, 3)
TextBox3.Value = Application.WorksheetFunction.VLookup(ComboBox1.Value, dataRng, 4)
End Sub
最后,单击“保存”按钮,会将文本框的值写入隐藏的工作表。 SaveButton_Click()
子项也位于用户窗体中。
Private Sub SaveButton_Click()
Dim sht As Worksheet
Dim dataRng As Range
Set sht = ThisWorkbook.Worksheets("Name of hidden Sheet") 'where the data should be stored
With sht
.Range("A1").Value = TextBox1.Value
.Range("B1").Value = TextBox2.Value
.Range("C1").Value = TextBox3.Value
End With
Unload UserForm1
UserForm1.Hide
End Sub