【发布时间】:2015-04-10 09:17:56
【问题描述】:
我有一个用户表单,可以在列中的单元格更改时打开。 该用户窗体包含复选框,它们都会触发带有文本框的第二个用户窗体,该文本框在隐藏工作表上查找其内容的单元格。 (勾选的复选框决定了文本框要查找的单元格)。然后用户编辑该框,单击一个按钮,新文本将写回同一单元格。
这是勾选复选框时的 VBA。它工作得很好。万岁!
Dim vln As Variant
Dim reta As Worksheet
Set reta = ActiveWorkbook.Sheets("RetailerActivity")
Set vln = ActiveCell.Offset(-1, -3)
UserForm2.TextBox1.Text = Application.WorksheetFunction.VLookup(vln, reta.Range("A1:Z100"), 3, False)
UserForm2.TescoSave.Visible = True
UserForm2.Show
End Sub
当文本框被编辑后,我想把它写回它来自的同一个单元格。我认为最简单的方法是拥有一个公共变量(作为范围),并将 vlookup 的结果传递给该变量,以便第二个用户窗体可以有一行读取
Private Sub ASave_Click()
publicvariable.Value = TextBox1.Value
userform1.hide
End Sub
很好很容易,而不是再次进行 VLookup。对?
无论哪种方式,我似乎都无法将公共变量设置为查找。
在我拥有的任何子之外
Public bums As Range
在上面的代码中,在我设置文本框的位置之后,我尝试添加该行
Set bums = Application.WorksheetFunction.VLookup(vln, reta.Range("A1:Z100"), 3, False)
但代码错误与“类型不匹配”。
如果我尝试
Set bums = Range(Application.WorksheetFunction.VLookup(vln, reta.Range("A1:Z100"), 3, False))
我得到对象“_global”的方法“范围”失败。
我通过从互联网上拼凑出来的代码进行编码,正如您可能知道的那样,所以我不怀疑这是一个完整的组合。
任何建议将不胜感激。
【问题讨论】:
标签: vba excel excel-formula vlookup