VBA Userform:搜索现有编号并选择行

时间:2018-04-04 07:52:45

标签: excel vba

我有一份excel表,其中包含有关客户的数据。 我创建了一个userform,它允许我输入所有信息并保存。

现在我希望userform检查A列(客户nº),如果userform的客户nº已经在那里,我希望它选择该行作为活动行/单元格。 如果没有,我希望活动单元格成为A列中的第一个空单元格。

到目前为止我已经尝试了很多(For,if& elseif,...)但似乎没有任何效果。

任何人都可以帮助我吗?非常感谢和美好的一天

编辑:这是我最近的尝试:

For i = 3 To 300000
wert = "A" & i
If Range(wert).Value = custno Then
ActiveCell = wert

ElseIf wert = "" Then
ActiveCell = Range(wert).Offset(1, 0)
End If
Next

2 个答案:

答案 0 :(得分:2)

使用此

Dim f As Range
With Range("A1", Cells(Rows.Count, 1).End(xlUp)) ' reference all column A cells from row 1 down to last not empty one
    Set f = .Find(what:=Me.custno, LookIn:=xlValues, lookat:=xlWhole) ' try finding 'custno'
    If f Is Nothing Then 'if unsuccessful
        .Cells(1, 1).End(xlDown).Offset(1).Activate ' activate the first not empty cell
    Else 'else
        f.Activate ' activate found cell
    End If
End With

答案 1 :(得分:0)

测试以下代码:

编辑(即使它不是优化的解决方案):

Sub myTest()
        lastRow = Cells(Rows.Count, 1).End(xlUp).Row
        found = 0
        i = 1
        Do While found = 0 And i <= lastRow
            If Cells(i, 1).Value = custno Then
                'Activate the cell
                Cells(i, 1).Activate
                found = 1
            End If
            i = i + 1
        Loop

        If found = 0 Then
            ' Get The first empty cell in column A
            On Error Resume Next
            firstEmptyCell = Range("A1:A" & Rows.Count).Cells.SpecialCells(xlCellTypeBlanks).Row
            If firstEmptyCell = vbNullString Then
                n = Cells(Rows.Count, 1).End(xlUp).Row + 1
            Else
                n = firstEmptyCell
            End If
            ' If not found Activate The Last empty cell in column A
            Cells(n, 1).Activate
        End If
End Sub