【问题标题】:VBA Replace() in a loop with type mismatch errorVBA Replace() 在循环中出现类型不匹配错误
【发布时间】:2018-04-13 17:06:48
【问题描述】:

我对 VBA 很陌生,我只是想用“0”替换列“N”和“O”中的任何字符“NA”、“ZZ”、“Z”。以下是带有if 语句的循环,但由于某种原因,我一直在获取

类型不匹配的运行时 13 错误

谁能帮我解决这个错误?

谢谢!

Dim v as String
sym = Array("NA", "ZZ", "Z")

  If Worksheets("Sheet1").Columns("N") Then
   For Each a In sym
    v = Replace(v, a, "0")
   Next a

 ElseIf Worksheets("Sheet1").Columns("O") Then
   For Each a In sym
     v = Replace(v, a, "0")
   Next a

 End If

【问题讨论】:

  • 你对If Worksheets("Sheet1").Columns("N") Then的意图是什么
  • @ScottCraner 要定义 N 列。我只想替换数组 sym 中出现在 N 和 O 列中的字符。也许有更有效的方法可以做到这一点?
  • Worksheets("Sheet1").Columns("N") 不返回布尔值。
  • 而v是一个空字符串,所以无论你循环多少次它都将是一个空字符串。

标签: vba excel loops for-loop


【解决方案1】:

你可以这样做。最好指定various parameters

sym = Array("NA", "ZZ", "Z")

With Worksheets("Sheet1").Range("N:O")
    For Each a In sym
        .Cells.Replace what:=a, replacement:=0
   Next a
End With

【讨论】:

  • 如果您定义Range("N:O") 是否意味着选择从 N 到 O 的列。如果我只在 N 和 O 列中执行操作,不包括介于两者之间的操作,该怎么办?不应该是Range("N,O") 吗?
  • 嗯? N 和 O 之间没有列。
  • 天啊...太阳烤着我的大脑...哈哈 XD...谢谢提醒。
  • 没关系,我非常有信心的一件事是我的字母表。
  • 它在上面的链接中——下面有一个例子。遇到困难就回来。
【解决方案2】:

你不需要遍历单元格,试试:

Sub lydias()
    With Sheets("Sheet1").Range("N:O")
        .Replace What:="NA", replacement:="0"
        .Replace What:="ZZ", replacement:="0"
        .Replace What:="Z", replacement:="0"
    End With
End Sub

【讨论】:

    【解决方案3】:

    试试这个:

    Sub test()
    
    Dim sym As Variant
    sym = Array("NA", "ZZ", "Z")
    
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("Sheet1")
    
    Dim colums_range As Range
    
    With ws
    Set colums_range = Union(.Columns("N").SpecialCells(xlCellTypeConstants), .Columns("O").SpecialCells(xlCellTypeConstants))
    End With
    
       For Each element In sym
    
        colums_range.Replace What:=CStr(element), Replacement:="0", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False, _
        ReplaceFormat:=False
    
       Next element
    
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-25
      • 1970-01-01
      • 1970-01-01
      • 2017-01-27
      • 2021-02-19
      • 1970-01-01
      相关资源
      最近更新 更多