Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 查找并高亮显示宏并确认_Vba_Excel_Highlight - Fatal编程技术网

Vba 查找并高亮显示宏并确认

Vba 查找并高亮显示宏并确认,vba,excel,highlight,Vba,Excel,Highlight,我下面有一个宏,它非常适合查找数字并确认它是否正确(然后突出显示)。首先它会询问您要找的号码,然后输入号码并点击OK。然后,如果它找到了号码,那么你将有机会说“是”或“否”或“取消”(以防它们是你正在寻找的多个号码,而不是正确的号码)。如果单击“是”,它将突出显示单元格 问题是: 如果要查找的号码不在工作表上,则宏将出错 如果你点击“否”,我希望它寻找下一个号码,如果他们没有下一个号码,那么就退出。(此按钮也可以称为“下一步”,因为它更准确地描述了情况 任何帮助都将不胜感激!谢谢 Sub fin

我下面有一个宏,它非常适合查找数字并确认它是否正确(然后突出显示)。首先它会询问您要找的号码,然后输入号码并点击OK。然后,如果它找到了号码,那么你将有机会说“是”或“否”或“取消”(以防它们是你正在寻找的多个号码,而不是正确的号码)。如果单击“是”,它将突出显示单元格

问题是:

  • 如果要查找的号码不在工作表上,则宏将出错
  • 如果你点击“否”,我希望它寻找下一个号码,如果他们没有下一个号码,那么就退出。(此按钮也可以称为“下一步”,因为它更准确地描述了情况
  • 任何帮助都将不胜感激!谢谢

    Sub find_highlight()
        Dim w As Variant
        Dim FoundCell As Range
        Dim ans As String
    
        Do
            w = InputBox("What to find?")
    
            Cells.Find(What:=(w), After:=ActiveCell, LookIn:=xlFormulas, _
                LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
                MatchCase:=False).Activate
    
            Select Case MsgBox("Is this the number?", vbYesNoCancel)
    
                Case vbNo
    
                Case vbYes
                    With Selection.Interior
                        .ColorIndex = 6
                        .Pattern = xlSolid
                        .PatternColorIndex = xlAutomatic
                    End With
    
                Case vbCancel
                    Exit Do
    
            End Select
        Loop
    End Sub
    

    你真的应该把这篇文章分成多篇。请每篇文章出一个问题

    至于您看到的错误:您必须检查错误条件

    Sub find_highlight()
        Dim w As Variant
        Dim FoundCell As Range
        Dim ans As String
    
        Do
            w = InputBox("What to find?")
    
            On Error Resume Next
            thisRng1 = ActiveCell.Address
            Cells.Find(What:=(w), After:=ActiveCell, LookIn:=xlFormulas, _
                LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
                MatchCase:=False).Activate
            thisRng2 = ActiveCell.Address
            If thisRng1 = thisRng2 Then
                MsgBox "Value Not Found"
            End If
            On Error GoTo 0
    
            Select Case MsgBox("Is this the number?", vbYesNoCancel)
    
                Case vbNo
    
                Case vbYes
                    With Selection.Interior
                        .ColorIndex = 6
                        .Pattern = xlSolid
                        .PatternColorIndex = xlAutomatic
                    End With
    
                Case vbCancel
                Exit Do
    
            End Select
        Loop
    End Sub
    

    你真的应该把这篇文章分成多篇。请每篇文章出一个问题

    至于您看到的错误:您必须检查错误条件

    Sub find_highlight()
        Dim w As Variant
        Dim FoundCell As Range
        Dim ans As String
    
        Do
            w = InputBox("What to find?")
    
            On Error Resume Next
            thisRng1 = ActiveCell.Address
            Cells.Find(What:=(w), After:=ActiveCell, LookIn:=xlFormulas, _
                LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
                MatchCase:=False).Activate
            thisRng2 = ActiveCell.Address
            If thisRng1 = thisRng2 Then
                MsgBox "Value Not Found"
            End If
            On Error GoTo 0
    
            Select Case MsgBox("Is this the number?", vbYesNoCancel)
    
                Case vbNo
    
                Case vbYes
                    With Selection.Interior
                        .ColorIndex = 6
                        .Pattern = xlSolid
                        .PatternColorIndex = xlAutomatic
                    End With
    
                Case vbCancel
                Exit Do
    
            End Select
        Loop
    End Sub
    
    以下代码:

    • 允许用户通过不提供要搜索的值来退出过程
    • 查找“值”而不是“公式”(只是因为我怀疑您希望搜索公式的结果,而不是公式本身-即,如果您的公式
      =5+4
      ,则如果用户正在搜索
      9
      ,而不是他们正在搜索
      4
      ,则您希望匹配它)
    • 在执行测试以确保匹配发生之前,不要尝试
      激活
      ,以避免在未发生匹配时尝试激活匹配发生的单元格时出现的错误
    • 如果用户经常说“否”而返回到第一个匹配项,则退出对值的搜索

    以下代码:

    • 允许用户通过不提供要搜索的值来退出过程
    • 查找“值”而不是“公式”(只是因为我怀疑您希望搜索公式的结果,而不是公式本身-即,如果您的公式
      =5+4
      ,则如果用户正在搜索
      9
      ,而不是他们正在搜索
      4
      ,则您希望匹配它)
    • 在执行测试以确保匹配发生之前,不要尝试
      激活
      ,以避免在未发生匹配时尝试激活匹配发生的单元格时出现的错误
    • 如果用户经常说“否”而返回到第一个匹配项,则退出对值的搜索


    MSDN是一个很好的资源!当它回答您的问题时,请看它,它向您展示了如何检查在查找中是否未找到任何内容以及如何查找。下一步:“注意:如果查找内容与任何内容不匹配(因为nothing.Activate无效),您的Activate语句将失败,但这是另一天的问题。”我想今天又是另一天了!哈哈(很抱歉,今天上午没有时间再次帮助您-将不得不将其留给其他人。)MSDN是一个很好的资源!在它回答您的问题时,请查看此内容,向您展示如何检查查找中是否未找到任何内容以及如何查找。下一步:“注意:如果查找内容与任何内容不匹配,则您的激活语句将失败(因为Nothing.Activate无效),但这是另一天的问题。“我想今天又是另一天了!哈哈(对不起,今天早上没有时间再帮你了,只能留给别人了。)很好的调用,我没有对代码进行太多的测试,因为它开始出现一系列奇怪的行为。改为
    thisRng1=ActiveCell.Address
    ,这应该包括在内。我知道你使用更好的编程原则的目的,也许我以后会深入研究。很好的调用,我没有对代码进行太多的测试,因为它开始出现在一系列奇怪的行为中她那一大堆奇怪的行为。改为
    thisRng1=ActiveCell.Address
    ,应该涵盖了这一点。我知道你在使用更好的编程原理,也许我以后会深入研究这一点。