2017-04-20 28 views
0

我想知道是否有人可以請求幫助。查找功能無法工作,直到表格修改

我在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 
+0

嘗試在查找命令之前添加一個斷點,並確保所有變量都在沒有首先加載窗體的情況下進行設置。我懷疑是因爲你指的是「Me.Search.Value」,你的表單中有一些東西阻止了這個設置,因此mysearch不會指向任何東西。直接和當地人窗口將對你調試這個有很大的幫助。 –

+0

是我。搜索一個文本框?如果添加一個新行使其起作用,那麼將您的搜索區域擴大一行,看看它是否有效。 - .Range(「A」&.Rows.Count).End(xlUp)+1) –

+0

@BrandonBarney感謝您的建議和John。布蘭登使用你的建議使我能夠大大縮小問題的範圍。謝謝 – MBrann

回答

0

我註釋掉了所有其他的文本框,並從「Search.Value」中刪除了「我」,它工作正常。因此,它可能位於「我」或其他文本框列表中的某處。嘗試將它們評出一半以縮小範圍。

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 
0

該問題似乎是在搜索範圍列A中使用公式來規定搜索條件。我現在已經將它建成了用戶表單,它似乎是一個夢想。謝謝你的時間。