2

我对 VBA 和编程非常陌生。我正在尝试以下操作:

  • 单击命令按钮 btnUpdateEntry 以启动输入框
  • 在 A 列的“输出”工作表中搜索输入框的值
  • 转到找到值的第一个位置
  • 如果未找到值,则显示消息

    Private Sub btnUpdateEntry_Click()
    
        Dim StringToFind As String
    
        StringToFind = Application.InputBox("Enter string to find", "Find string")
    
        Worksheets("output").Activate
        ActiveSheet.Range("A:A").Select
    
            Set cell = Selection.Find(What:="StringToFind", After:=ActiveCell, _
                LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByRows, _
                SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
    
        If cell Is Nothing Then
            Worksheets("input").Activate
            MsgBox "String not found"
        End If
    
    End Sub
    
4

2 回答 2

1

去掉Find语句中的双引号:

    Set cell = Selection.Find(What:=StringToFind, After:=ActiveCell, _
        LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByRows, _
        SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)

将它括在引号中意味着将其解释为文字字符串,而不是变量中保存的变量值,StringToFind.

可能还有其他错误。我没有进一步测试你的代码。如果您需要亲自前往牢房,您可以使用

Application.GoTo cell

或者你可以使用

cell.Activate

于 2013-06-24T16:34:36.513 回答
1

如果唯一的目标是激活该单元格并查看它,那么您所要做的就是:

    Selection.Find(what:="yourvalue").Activate

因此,不要设置单元格 = 选择的值,而是使用上面的行

于 2013-06-24T16:36:50.680 回答