【发布时间】:2017-04-21 00:47:39
【问题描述】:
我在关闭一个用户窗体并转到下一个时遇到问题。单击命令按钮后的 UserForm3 应关闭并应显示 UserForm4。不幸的是,我得到“运行时错误 91 对象变量或未设置块变量”。我已经深入研究了互联网,我很确定问题出在 Userform4 上,尽管 UserForm3 的代码被突出显示为错误。基本上,我希望显示 UserForm4,并根据来自 UserForm3 的 Combobox 的选择,让所有文本框都填充工作表“Log”中的数据。来自 UserForm3 的选择被保存到“日志”表上的单元格 E1。
来自 UserForm3 的代码
Private Sub CommandButton1_Click()
Sheets("Log").Range("E1") = ComboBox2.Text
Unload Me
UserForm4.Show <- ERROR DISPLAYED HERE
End Sub
在UserForm4 中,我想在下面的单元格中从 E1 中查找值,然后在 Userform4 中用找到 E1 值的行中的数据填充文本框。
UserForm4 代码
Private Sub UserForm_Initialize()
Dim Name As String
Dim rng As Range
Dim LastRow As Long
Dim wart As Worksheet
wart = Sheets("Log").Range("E1")
LastRow = ws.Range("B3" & Rows.Count).End(xlUp).Row + 1
Name = Sheets("Log").Range("E1")
UserForm4.TextBox8.Text = Name
nazw = Application.WorksheetFunction.VLookup(wart, Sheets("Log").Range("B3:H" & LastRow), 1, False)
UserForm4.TextBox1.Text = ActiveCell.Offset(, 1)
UserForm4.TextBox2.Text = ActiveCell.Offset(, 1)
UserForm4.TextBox3.Text = ActiveCell.Offset(, 1)
UserForm4.TextBox4.Text = ActiveCell.Offset(, 1)
UserForm4.TextBox5.Text = ActiveCell.Offset(, 1)
UserForm4.ComboBox1.Text = ActiveCell.Offset(, 1)
UserForm4.TextBox6.Text = ActiveCell.Offset(, 1)
UserForm4.TextBox7.Text = ActiveCell.Offset(, 1)
End Sub
【问题讨论】:
-
wart = Sheets("Log").Range("E1")是什么?wart是Worksheet对象还是Range对象?如果是工作表,则为Set wart = Sheets("Log")。如果是Range,那么Set wart = Sheets("Log").Range("E1")。 -
我希望“疣”成为“E1”单元格的内容。稍后应该使用 Vlookup 搜索它。
-
如果“E1”包含字符串,则将
Dim wart As Worksheet更改为Dim wart As String,如果E1“包含数字,则将Dim wart As Integer(或Long)更改为。您也可以使用Dim wart As Variant -
好的,我把它改成了
Dim wart As String。现在我得到“编译错误:需要对象”,Private Sub UserForm_Initialize()以黄色突出显示,Set wart =以蓝色突出显示。 -
ws在哪里设置和声明?
标签: excel runtime-error userform vba