vba - Excel VBA 替换问号

标签 vba excel

我编写了 VBA 代码来查找和替换工作簿中所有工作表中的问号。但是它不起作用,任何人都可以帮我看看我哪里出了问题吗?

Sub ReplaceQM()

    Dim lRow As Long
    Dim lCol As Long

    totalSheet = ThisWorkbook.Sheets.Count

    MsgBox totalSheet
    For x = 1 To totalSheet


        lRow = ThisWorkbook.Sheets(x).Cells(Rows.Count, 1).End(xlUp).Row
        lCol = ThisWorkbook.Sheets(x).Cells(1, Columns.Count).End(xlToLeft).Column


        For Z = 1 To lRow
            For i = 1 To lCol

                getPos = InStr(1, ThisWorkbook.Sheets(x).Cells(Z, i).Value, "~?")

                If getPos > 0 Then

                    ThisWorkbook.Sheets(x).Cells(Z, i).Value = Replace(ThisWorkbook.Sheets(x).Cells(Z, i).Value, "~?", " ")

                End If

            Next i
        Next Z
    Next x
End Sub   

最佳答案

您最好使用 Excel 的范围内替换功能:

For Each ws In ThisWorkbook
  ws.UsedRange.Cells.Replace what:="~?", Replacement:=" ", LookAt:=False, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Next ws

关于vba - Excel VBA 替换问号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40335527/

相关文章:

VBA循环通过工作表运行代码不循环或循环但不运行代码

excel - NPOI 有时只能从电子表格中读取 10 行

vba - Case vba 跳过正确的大小写

R:将大量行的数据框写入Excel

excel - 如何用vba删除一个txt文件的内容?

vba - 如何关闭用户窗体并在 VBA 中打开另一个用户窗体

vba - Excel 不会自动适应 45º 文本

excel - VBA:如果值在列表中,则删除行,遍历列表

vba - 将 IE 自动化代码更改为 XML 时出错

vba - 创建在保存前更新字段的宏