0

我有一个看起来像这样的电子表格:

Group   | Name   | Title
-----------------------------------
X         WS       -
X         DH       -
X         M        -
X         DH       -
X         WS       -

除了添加正确的标题外,我还想遍历 name 中的所有单元格并用它们的全名替换其中的首字母。我的脚本无法准确比较字符串并进入 if 语句

Sub enterNameAndTitle()

    lastCell = InputBox("Last cell")
    rInitials = InputBox("Initials")
    rFullName = InputBox("Full Name")
    rTitle = InputBox("Title")

    Dim cell As Range

    For Each cell In Range("b2:b" & lastCell).Cells

        MsgBox (cell.Text & " : " & rInitials)

        If StrComp(UCase(cell.Value), UCase(rInitials)) = 0 Then
            cell.Value = rFullName
            ActiveSheet.Cells(cell.Row, cell.Column + 1).Value = rTitle
        End If

    Next cell

End Sub

所以我首先收集数据,然后遍历所有值。有谁知道我做错了什么?为什么它不能准确地比较字符串?

4

2 回答 2

0

问题是不同类型之一,似乎对我有用的唯一方法是使用 CStr() 将两个变量重新转换为 String 类型

Sub enterNameAndTitle()

    Dim lastCell As String
    lastCell = InputBox("Last cell")

    'Cast to string
    Dim rInitials As String

    rInitials = CStr(InputBox("Initials"))
    Dim rFullName As String
    rFullName = InputBox("Full Name")
    Dim rTitle As String
    rTitle = InputBox("Title")

    Dim cell As Range

    For Each cell In Range("b2:b" & lastCell).Cells

        Dim cellText As String

        'Cast to string
        cellText = CStr(cell.Text)

        If (Trim(UCase(cell.Value)) = Trim(UCase(rInitials))) Then
            MsgBox ("test1")
            cell.Value = rFullName
            ActiveSheet.Cells(cell.Row, cell.Column + 1).Value = rTitle
        End If

    Next cell

End Sub
于 2013-05-21T21:10:41.960 回答
0

我没有发现任何问题,但有两件事我会尝试

一种是使用 TRIM 来确保字符串没有前导或尾随空格

第二个是将if更改为 if(ucase(trim(cell.value))=ucase(trim(rInitials)))

于 2013-05-21T19:28:18.643 回答