【问题标题】:Checking if the value of a cell is a specific string检查单元格的值是否为特定字符串
【发布时间】:2020-02-02 19:12:11
【问题描述】:

这个让我发疯。

我想检查一个单元格的值是否为“是”,但不管我怎么做,VBA 一直说类型不匹配。

真的可以在这里使用一些帮助。

这是我的代码:

Dim rowcntr As Variant
Dim rowcntr2 As Variant
Dim i As Integer
For i = 1 To rowcntr
    rowcntr2 = WorksheetFunction.CountA(Sheet3.Range("A:A"))
    If sheet10.Range("R1").Offset(i, 14).Find("Yes", sheet10.Range("R1"), xlValues, xlWhole, xlByColumns, xlNext, True) Is Nothing Then
        i = i + 1
    Else
        Sheet3.Range("A1").Offset(rowcntr2, 0) = sheet10.Range("R1").Offset(i, 0)
        Sheet3.Range("A1").Offset(rowcntr2, 1) = sheet10.Range("R1").Offset(i, 1)
        Sheet3.Range("A1").Offset(rowcntr2, 2) = sheet10.Range("R1").Offset(i, 2)
        Sheet3.Range("A1").Offset(rowcntr2, 3) = sheet10.Range("R1").Offset(i, 3)
        Sheet3.Range("A1").Offset(rowcntr2, 4) = sheet10.Range("R1").Offset(i, 5)
    End If
Next i

【问题讨论】:

  • 你能解释一下你到底想做什么吗?一个危险信号 - 您正在使用 i = i + 1 在循环内修改 i。也不确定您是否需要Range.Find
  • 另外,rowcntr 没有分配给它的值。
  • 看起来你使用它们的方式,rowcntrrowcntr2 也应该是Long
  • 哪一行会报错?那个rowcntr 行? (这应该在您的问题中,而不是在 cmets 中)。
  • 您可以使用过滤器而不是逐行循环。从您的解释看来,您根本不需要Find

标签: excel vba


【解决方案1】:

自己整理出来的……

Dim rowcntr As Variant

Dim rowcntr2 As Variant

Dim i As Integer

Dim j As Variant

rowcntr = WorksheetFunction.CountIf(sheet10.Range("AF:AF"), "<>" & "")

For i = 1 To rowcntr

    rowcntr2 = WorksheetFunction.CountA(Sheet3.Range("A:A"))

    j = CStr(sheet10.Range("R1").Offset(i, 14))

    If j = "Yes" Then

        Sheet3.Range("A1").Offset(rowcntr2, 0) = sheet10.Range("R1").Offset(i, 0)

        Sheet3.Range("A1").Offset(rowcntr2, 1) = sheet10.Range("R1").Offset(i, 1)

        Sheet3.Range("A1").Offset(rowcntr2, 2) = sheet10.Range("R1").Offset(i, 2)

        Sheet3.Range("A1").Offset(rowcntr2, 3) = sheet10.Range("R1").Offset(i, 3)

        Sheet3.Range("A1").Offset(rowcntr2, 4) = sheet10.Range("R1").Offset(i, 5)

    Else

        i = i + 1

    End If

Next i

【讨论】:

  • 您自己解决了这个问题真是太好了,但请看一下评论部分中的一些 cmets,因为它们对您未来的工作很有价值。
  • 是的,先生!刚刚发现 i = i + 1 让我很头疼。刚刚删除它。谢谢大家!有史以来最好的网站和最好的人 ^^
猜你喜欢
  • 1970-01-01
  • 2018-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-23
相关资源
最近更新 更多