Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 查找函数在修改表之前不工作_Vba_Excel_Userform - Fatal编程技术网

Vba 查找函数在修改表之前不工作

Vba 查找函数在修改表之前不工作,vba,excel,userform,Vba,Excel,Userform,我想知道是否有人能帮忙 我在Excel中创建了一个userform,并使用一个引用号返回表中给定行的值。我目前收到的问题是,当我最初打开工作簿时,查找功能不起作用,返回时代码“ID不存在”中给出了Msgbox 但是,如果我使用userform在表中创建一个新行,那么在此之后,find函数就完全正常工作了。有人有什么建议吗 Private Sub Find_Click() Dim searchRange As Range Dim foundCell As Range Dim mysearch A

我想知道是否有人能帮忙

我在Excel中创建了一个
userform
,并使用一个引用号返回表中给定行的值。我目前收到的问题是,当我最初打开工作簿时,查找功能不起作用,返回时代码“ID不存在”中给出了
Msgbox

但是,如果我使用
userform
在表中创建一个新行,那么在此之后,find函数就完全正常工作了。有人有什么建议吗

Private Sub Find_Click()

Dim searchRange As Range
Dim foundCell As Range
Dim mysearch As String

mysearch = Me.Search.Value

With ThisWorkbook.Sheets("Master Data")
    Set searchRange = .Range("A2", .Range("A" & .Rows.Count).End(xlUp))
End With

Set foundCell = searchRange.Find(what:=mysearch, Lookat:=xlWhole, MatchCase:=False, SearchFormat:=False)
If Not foundCell Is Nothing Then
    Me.RsnDc = foundCell.Offset(0, 4).Value
    Me.BDM.Value = foundCell.Offset(0, 6).Value
    Me.MIns.Value = foundCell.Offset(0, 7).Value
    Me.EUs.Value = foundCell.Offset(0, 8).Value
    Me.In.Value = foundCell.Offset(0, 9).Value
    Me.Pr.Value = foundCell.Offset(0, 10).Value
    Me.Qu.Value = foundCell.Offset(0, 11).Value
    Me.ReCd.Value = foundCell.Offset(0, 12).Value
    Me.ReOrCd.Value = foundCell.Offset(0, 13).Value
    Me.Ttl.Value = foundCell.Offset(0, 5).Value
    Me.Va.Value = Me.Total.Value / 1.2
    Me.VT.Value = Me.Total.Value - Me.Value.Value
    Me.R.Value = foundCell.Offset(0, 17).Value
    Me.App.Value = foundCell.Offset(0, 18).Value
    Me.L1.Value = foundCell.Offset(0, 19).Value
    Me.L2.Value = foundCell.Offset(0, 20).Value
    Me.CY.Value = foundCell.Offset(0, 21).Value
    Me.PC.Value = foundCell.Offset(0, 22).Value
    Me.SN1.Value = Left(foundCell.Offset(0, 23).Value, 2)
    Me.SN2.Value = Mid(foundCell.Offset(0, 23).Value, 3, 2)
    Me.SN3.Value = Right(foundCell.Offset(0, 23).Value, 2)
    Me.ANCT.Value = foundCell.Offset(0, 24).Value
Else
     MsgBox "ID does not exist."
End If

End Sub

我注释掉了所有其他文本框,并从“Search.Value”中删除了“Me”,效果很好。所以它要么在“我”中,要么在你的其他文本框列表中。试着一次评论一半来缩小范围

Private Sub CommandButton1_Click()

Dim searchRange As Range
Dim foundCell As Range
Dim mysearch As String

mysearch = Search.Value

With ThisWorkbook.Sheets("Master Data")
    Set searchRange = .Range("A2", .Range("A" & .Rows.Count).End(xlUp))
End With

Set foundCell = searchRange.Find(what:=mysearch, Lookat:=xlWhole, MatchCase:=False, SearchFormat:=False)
If Not foundCell Is Nothing Then
'    Me.RsnDc = foundCell.Offset(0, 4).Value
'    Me.BDM.Value = foundCell.Offset(0, 6).Value
'    Me.MIns.Value = foundCell.Offset(0, 7).Value
'    Me.EUs.Value = foundCell.Offset(0, 8).Value
'    Me.In.Value = foundCell.Offset(0, 9).Value
'    Me.Pr.Value = foundCell.Offset(0, 10).Value
'    Me.Qu.Value = foundCell.Offset(0, 11).Value
'    Me.ReCd.Value = foundCell.Offset(0, 12).Value
'    Me.ReOrCd.Value = foundCell.Offset(0, 13).Value
'    Me.Ttl.Value = foundCell.Offset(0, 5).Value
'    Me.Va.Value = Me.Total.Value / 1.2
'    Me.VT.Value = Me.Total.Value - Me.Value.Value
'    Me.r.Value = foundCell.Offset(0, 17).Value
'    Me.App.Value = foundCell.Offset(0, 18).Value
'    Me.L1.Value = foundCell.Offset(0, 19).Value
'    Me.L2.Value = foundCell.Offset(0, 20).Value
'    Me.cy.Value = foundCell.Offset(0, 21).Value
'    Me.pc.Value = foundCell.Offset(0, 22).Value
'    Me.SN1.Value = Left(foundCell.Offset(0, 23).Value, 2)
'    Me.SN2.Value = Mid(foundCell.Offset(0, 23).Value, 3, 2)
'    Me.SN3.Value = Right(foundCell.Offset(0, 23).Value, 2)
'    Me.ANCT.Value = foundCell.Offset(0, 24).Value
Beep
MsgBox "FOUND IT!"
Else
     MsgBox "ID does not exist."
End If

End Sub

问题似乎是,在搜索范围列中,A使用公式来指定搜索条件。我现在已经将它构建到用户表单中,它似乎是一个梦想。感谢大家抽出时间。

尝试在find命令之前添加一个断点,并确保在未首先加载表单的情况下设置所有变量。我的怀疑是,既然你指的是“Me.Search.Value”,那么在你的表单中有某种东西阻止了这个设置,因此mysearch不会指任何东西。“立即和本地”窗口将在调试过程中对您有很大帮助。是我吗?搜索文本框?如果添加新行使其工作,则将搜索区域扩展一行,然后查看它是否工作。Range(“A”和.Rows.Count).End(xlUp)+1@BrandonBarney谢谢你的建议和约翰。布兰登利用你的建议,使我大大缩小了问题的范围。谢谢,没问题。