【问题标题】:Comparing text in multiple cells using vba使用vba比较多个单元格中的文本
【发布时间】:2017-11-20 07:58:58
【问题描述】:

假设我想将这五个单元格一起比较(其中“行”是一个整数),如果它们都包含这些确切的词“不适用”,我希望输出中的单元格也是“不适用”我尝试将 .Text 替换为 .Value 但它也不起作用。总是有一个运行时错误“13”

Private Sub CommandButton1_Click()
Dim DocNo As Integer
Dim line As Integer

DocNo = (InputBox("Please input document number of record you would like to view"))
line = 1

'Checks the first cell of the results sheet until the number in first cell = the DocNo
'if "DocNo" = the number in the cell, Line is set to its respective y coordinate

Do
    line = line + 1
Loop While (DocNo <> Worksheets("Results").Cells(line, 1))
If (Worksheets("Results").Cells(line, 5).Text) And 
   (Worksheets("Results").Cells(line, 57).Text) And 
   (Worksheets("Results").Cells(line, 59).Text) And 
   (Worksheets("Results").Cells(line, 32).Text) And 
   (Worksheets("Results").Cells(line, 40).Text)  = "Not Applicable" Then
   Worksheets("Output").Cells(26, 3) = "Not Applicable"
End If

End Sub

如果这是一些愚蠢的错误,请原谅我,我才开始使用 VBA 几天

【问题讨论】:

  • 投票关闭它,因为所描述的错误是由于(少数)错别字,而不是算法本身。 @Ledavidiado:如果您遇到更多麻烦,请随时提出新问题或编辑此问题以反映问题所在。

标签: vba excel


【解决方案1】:

很遗憾,您将不得不以不同的方式编写它。

假设你有 5 个单元格中的文本,A1、B1、C1、D1 和 E1 要简化,你可以这样做

IF Range("A1").Value = "Not Applicable" And Range("B1").Value = "Not Applicable" ...

如果我没记错的话,Excel 有一个本机工作表函数做同样的事情 - Exact(range, text)

【讨论】:

    【解决方案2】:

    一点点格式化有很长的路要走。确保使用适当的代码缩进,如下所示。

    您的代码有两个主要问题:

    • 您有一行“DocNo”不是评论的一部分,因此不是有效代码。
    • 您在 If 块中弄乱了 End If

    此代码更正了这些问题:

    Private Sub CommandButton1_Click()
        Dim DocNo As Integer, line As Integer
    
        DocNo = InputBox("Please input document number of record you would like to view")
    
        line = 1
    
        ' Checks the first cell of the results sheet until the number in first cell = the DocNo
        ' if "DocNo" = the number in the cell, Line is set to its respective y coordinate
         Do
            line = line + 1
        Loop While (DocNo <> Worksheets("Results").Cells(line, 1))
    
        If (Worksheets("Results").Cells(line, 5).Text) And _
            (Worksheets("Results").Cells(line, 57).Text) And _
            (Worksheets("Results").Cells(line, 59).Text) And _
            (Worksheets("Results").Cells(line, 32).Text) And _
            (Worksheets("Results").Cells(line, 40).Text)  = "Not Applicable" Then
            Worksheets("Output").Cells(26, 3) = "Not Applicable"
        End If
    End Sub
    

    【讨论】:

      【解决方案3】:

      尝试以下方法:

       If ((Worksheets("Results").Cells(line, 5).Text)  = "Not Applicable") And 
       (Worksheets("Results").Cells(line, 57).Text)   = "Not Applicable") And 
       (Worksheets("Results").Cells(line, 59).Text)   = "Not Applicable") And 
       (Worksheets("Results").Cells(line, 32).Text)   = "Not Applicable") And 
       (Worksheets("Results").Cells(line, 40).Text)  = "Not Applicable") Then
          Worksheets("Output").Cells(26, 3) = "Not Applicable"
      End If
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-03-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-28
        • 1970-01-01
        • 2023-03-14
        • 1970-01-01
        相关资源
        最近更新 更多