如果在某个单元格中输入的数字与另一个工作表中的列中的数字重复,则MsgBox会出错吗?

时间:2016-05-18 17:27:31

标签: excel vba

我有一个VBA脚本,它会在一个页面上输入所有新的注册号码(带有注册信息),并将信息复制并粘贴到其他工作表中进行存储。

我只需要确保新的注册号码(欢迎表上的单元格A19)不在存储注册号码的列中(注册表中的列B或2)。如果值相同,则退出sub。

BONUS:如果我能在新输入的数字之后计算出意外空间会很好,所以如果1478(空格)存在,则不会添加1478(空格)。

以下是运行它时错误13类型不匹配的脚本:

Dim r As Integer
Dim regisRange As Range
Set regisRange = Worksheets("Registration").Columns(2)
Range("A19").Value = r
For Each cell In regisRange
    If r = cell.Value Then
        MsgBox "The Registration Number is already in use."
        Exit Sub
    End If
Next cell

2 个答案:

答案 0 :(得分:0)

Private Sub morestuff()
    Dim r As Integer
    Dim regisRange As Range
    Dim rcell As Range
    Set regisRange = ThisWorkbook.Sheets("Sheet1").Columns(2)
    r = Range("A19").Value
    For Each rcell In regisRange.Cells
        If Trim(rcell.Value) = r Then
            MsgBox "The Registration Number is already in use."
            Exit Sub
        End If
    Next rcell
End Sub

这应该有效:)

有很多错误。工作表引用不正确,没有命名对象,以及不正确的单元格引用。

我显然改变了一些东西,使其在我的工作簿中工作,替换值以满足您的需求

enter image description here

答案 1 :(得分:0)

如果我建议改为CountIf()

Dim r$
r = Range("A19").Value

numberOfDuplicates = WorksheetFunction.CountIf(Range("E:E"), "*" & r & "*")
If numberOfDuplicates > 0 Then
    MsgBox "The registration number is already in use"
End If

这样可以避免遍历整个列,或者为每个x"做一次"这样可以节省时间。

可能需要调整一下,可能就像r = Trim(Range("A19").Value)一样。另外,请确保添加Worksheet引用。否则,这应该适合你。