我有一份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
答案 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