使用find.range获取列中的第一行

时间:2017-11-08 10:00:53

标签: excel vba excel-vba

为简单起见,我想说我有以下数据: - A列包含飞机上可用的座位列表(未占用的座位) 图1A,1B,1C,1D,1E,1F,2A,2B,2C等

当一个可用座位分配给乘客时,我想找到该座位并将其从列表中删除。

我的代码适用于不是A列中的第一个座位的每个座位,让我们说乘客想要座位1A,即我是小区(1,1)或范围(“A1”)使用find.range我得到第2行,因此它可以继续供其他乘客使用,实际上它不应该。

我在这里做错了什么?

Private Sub RemoveFromListSeatAllocated(seat As String)
Dim sht As Worksheet
Dim rng, As Range

Set sht = Sheets("This sheet")
Set rng = Range("A1:A192")

'FIND SEAT IN LIST OF SEATS AVAILABLE
With sht.rng
  Set where = .Find(what:=seat, LookIn:=xlValues)
End With

Set rng = Range("A" & where.Row)

'DELETE SEAT FOUND AND SHIFT UP 
sht.rng.Delete Shift:=xlUp

End Sub

1 个答案:

答案 0 :(得分:2)

“我在这里做错了什么?” 您没有使用Option Explicit,因此代码质量在不能编译的级别上变低:

Dim rng, As Range - 这应该是编译错误,不需要逗号

With sht.rng - 编译错误

Set where = .Find(what:=seat, LookIn:=xlValues) - 什么是where - 编译错误

建议 - 在模块顶部写Option Explicit,然后选择“Debug> Compile”并查看您获得的错误。尝试使用它们,直到你能够编译。