【发布时间】:2016-12-01 00:00:07
【问题描述】:
我有一个命令按钮单击事件的代码,该事件不断引发错误 91。当我单步执行代码时,它会在“设置 findvalue”代码执行后立即引发错误。请参阅下面的代码 sn-p。在检查代码本身时我无法弄清楚。
'findvalue' 被标注为范围对象。 “DataSH”是主数据表所在的工作表,以记录 ID 列(B 列)开头。用户表单元素在 DataSH 上的数据表中设置为它们各自的列。
Private Sub cmdEdit_Click()
'declare the variables
Dim findvalue As Range
Dim cNum As Integer
Dim DataSH As Worksheet
'error handling
On Error GoTo errHandler:
'hold in memory and stop screen flicker
Application.ScreenUpdating = False
Set DataSH = Sheet1
这个sn-p的点击事件子例程被设置为根据那些UF元素中的值更新DataSH中所选记录ID(行号标识符)的行上的适当列数据(即更改或删除的值)。重点是使用 UF 元素(文本框和组合框)中所做的任何更改来更新 DataSH 上的主数据表。
Set findvalue = DataSH.Range("B:B"). _
Find(What:=Me.tbRecID.Value, LookIn:=xlValues, LookAt:=xlWhole)
'update the values
findvalue = tbRecID.Value
findvalue.Offset(0, 1) = tbRecDate.Value
findvalue.Offset(0, 2) = cmbRecLoc.Value
findvalue.Offset(0, 3) = cmbRecCust.Value
findvalue.Offset(0, 4) = tbRecAmt.Value
findvalue.Offset(0, 5) = cmbRecComm.Value
findvalue.Offset(0, 6) = cmbRecPrin.Value
findvalue.Offset(0, 7) = tbRecTerr.Value
findvalue.Offset(0, 8) = tbRecRep.Value
【问题讨论】:
-
您使用 Set 语句设置了 findvalue,然后尝试为其分配另一个值。
-
@Rdster,但这不应该引发任何错误,因为它只是确认当前的“findvalue”值
-
@Rdster 一旦在同一个 UF 上的列表框中(从 DataSH 上的数据表中拉出)中的记录被双击(一个单独的子例程),文本框和组合框元素就会被填充。 'findvalue' 设置为在该事件时填充到 tbRecID 文本框元素中的记录 ID。其余代码应该使用“findvalue”对象作为参考点,将 UF 元素(即已更改的元素)中的值返回到 DataSH 表(以及列表框的扩展)中的相应字段。至少我认为我解释得对。
-
那为什么还要费心寻找呢?如果您只是要分配文本框的值... Find 什么也不做。但是发布的答案之一很可能是您需要的。