我得到运行时错误'1004'
应用程序定义或对象定义的错误
当我尝试从B19开始插入值时。
以下是代码:
Private Sub test()
If Application.CountIf(Sheets("Sheet1").Columns(2), Range("A5").Value) Then
MsgBox "Already taken, try another username"
Else
MsgBox "Done"
Sheets("Sheet1").Range("B19" & Rows.Count).End(xlUp).Offset(1, 0) = Range("A5").Value
End If
End Sub
此代码的目的是将值从A5插入到从B19开始的最后一个非空行。
答案 0 :(得分:0)
2条评论:
首先:CountIf
返回一个数字,所以如果至少有一个Count,你应该检查结果是否是> 0(不是True
)。
第二:使用Range之后的数据到达最后一行(" B19"),您需要使用.Range("B" & .Rows.Count).End(xlUp).Offset(1, 0)
。
尝试以下代码:
Private Sub test()
With Sheets("Sheet1")
If Application.CountIf(.Columns(2), .Range("A5").Value) > 0 Then
MsgBox "Already taken, try another username"
Else
If .Cells(.Rows.Count, "B").End(xlUp).Row < 19 Then ' <-- check if the last row in Column B is less than 19
.Range("B19").Value = .Range("A5").Value
Else
.Range("B" & .Rows.Count).End(xlUp).Offset(1, 0).Value = .Range("A5").Value
End If
MsgBox "Done"
End If
End With
End Sub
答案 1 :(得分:0)
Private Sub main()
With Sheets("Sheet1")
With .Range("B19:B" & WorksheetFunction.Max(.Cells(.Rows.Count, 2).End(xlUp).Row, 19))
If Application.CountIf(.Cells, .Parent.Range("A5").Value) > 0 Then
MsgBox "Already taken, try another username"
Else
.Cells(.Rows.Count + IIf(IsEmpty(.Cells(.Rows.Count)), 0, 1)).Value = .Parent.Range("A5").Value
MsgBox "Done"
End If
End With
End With
End Sub