我怀疑.end(xlDown)
行事有点怪异。
Dim rfound As Range
Set rfound = Columns("B:B").Find(What:=Me.ComboBox1.Value, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext)
If ComboBox1.Value <> "" And WorksheetFunction.CountIf(Range("B:B"), _
ComboBox1.Value) > 0 And rfound.Offset(0, 1).Value <> "" Then
rfound.Offset(0, 1).End(xlDown).Offset(1, 0).Value = TextBox1.Value
在CommandButton1_click
,代码将在B列中搜索任何匹配的标准,然后OffSet
到右边的单元格提供我的条件全部满足。 然而,它提示我的消息Run-time error '1004': Application defined or object-defined error
。
我不知道哪里出了问题。 为了说明:
您当前的代码
- 据推测认为
B2
作为rfound
(注:这将是更好的测试,如果rfound
存在后Find
以'如果不rfound是Nothing然后) - 然后
C2
是rfound.Offset(0, 1)
-
rfound.Offset(0, 1).End(xlDown)
找到在列C中的最后一个单元的所有其他细胞是空白 -
rfound.Offset(0, 1).End(xlDown).Offset(1, 0)
试图在最后一行下面的单元格一列中输入一个值-没有做不到的。
从下仰望代替,即而不是
Then rfound.Offset(0, 1).End(xlDown).Offset(1, 0).Value = TextBox1.Value
使用
Then Cells(Rows.Count, rfound.Offset(0, 1).Column).End(xlUp).Offset(1, 0) = TextBox1.Value
我的三个仙...
美丽不编写复杂的代码,但打破它在简单易懂线,使其更容易理解的代码做什么。 此外,它可以帮助如果发生错误,调试它...
- 你已经知道你要写信给上校ç何必让它更复杂更通过
Offset
- 如果测试
rfound
存在的brettdj建议 - 使用
xlUp
找到了最后一排。
看到这个例子。 ( 另 )
Sub Sample()
Dim rfound As Range
Dim lRow As Long
With ThisWorkbook.Sheets("Sheet1")
Set rfound = .Columns(2).Find(What:=Me.ComboBox1.Value, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext)
If Not rfound Is Nothing Then
If ComboBox1.Value <> "" And _
WorksheetFunction.CountIf(.Range("B:B"), ComboBox1.Value) > 0 And _
rfound.Offset(, 1).Value <> "" Then
'~~> Find the next available row in Col C
lRow = .Range("C" & .Rows.Count).End(xlUp).Row + 1
'~~> Directly write to the cell
.Cells(lRow, 3).Value = TextBox1.Value
End If
Else
MsgBox "Not Found"
End If
End If
End Sub