如何在工作表代码中找到一个范围内的值

时间:2019-04-19 19:10:01

标签: excel vba

我需要在同一工作簿的一系列值中找到用户在一个单元格中输入的值。在工作表中,用户选择一个值,然后我需要编写代码以在范围内找到该值或提供错误消息。我被指示将其放在工作表代码中。

我尝试指定条件值的工作表,但这似乎没有什么不同,因为我仍然遇到相同的错误。

    Range("Dcust").Offset(2, 0).End(xlDown).End(xlToRight).ClearContents
Dim shuttleNum As Range
Set shuttleNum = Range("Dsched").Offset(2, 0).End(xlDown).End(xlToRight)

    Set driverSheet = ActiveWorkbook.Sheets("Driver")
Dim DSnumView As Integer

DSnumView = driverSheet.Range("DSnumView").Value



'''''Here is where I get the error'''
If shuttleNum.Columns(2).Find(DSnumView, lookat:=xlWhole) Is Nothing Then
        MsgBox "You are not scheduled to drive this shuttle", vbCritical, "Error"
        Exit Sub
Else
    Dim ctable As Range
    Set ctable = Range("CTableStart").Offset(1,0).End(xlDown).Range("CTableStart").Offset(0, 3)
End If

1 个答案:

答案 0 :(得分:0)

这行代码:

Range("Dsched").Offset(2, 0).End(xlDown).End(xlToRight)

返回一个单元格。

因此,shuttleNum基本上设置为单个单元格,因此:shuttleNum.Columns(2)会给您一个错误,因为该范围内只有一列。

如果我正确理解您要做什么,那么以下帮助应该有所帮助。

让我们假设您有一些从单元格A1开始的数据,但是您不知道它的结尾。例如:

enter image description here

要获取包含数据的范围(在本例中为A1:C5),您需要执行以下操作:

Dim sht As Worksheet
Dim rng As Range
Set sht = ThisWorkbook.Worksheets("Worksheet Name")
Set rng = sht.Range("A1")
Set rng = sht.Range(rng, rng.End(xlToRight)) 'A1:C1
Set rng = sht.Range(rng, rng.End(xlDown)) 'A1:C5

或者,您可以将最后两个步骤合并为一个:

Set rng = sht.Range(rng, rng.End(xlToRight).End(xlDown))