Range.Value =“”类型不匹配

时间:2019-08-01 12:51:40

标签: excel vba

我正在尝试编写一些代码,以将一系列工作表格式化为标准化格式。为此,我要删除空白行,删除前导空格,并删除以很多行开头的“; *”。尝试查看aRow.Value =“”,这意味着该行中没有文本时,总是返回类型不匹配错误。

我尝试了许多来自互联网的解决方案,但是似乎都没有用。

Sub Format()
    Dim ws As Worksheet
    Dim aRow As Range
    Dim r As Integer
    Dim cel As String

    For Each ws In ThisWorkbook.Worksheets
        For Each aRow In ws.UsedRange.Rows
            If ws.Name = "Sheet1" Then
                Exit For
            End If
            If aRow.Value = "" Then
                aRow.Delete
            End If
            If aRow.Value = " " Then
                aRow.Delete
            End If
            If Left(aRow.Value2, 2) = ";*" Then
                aRow.Value = Right(aRow.Value2, Len(aRow.Value2) - 2)
            Else
                aRow.Delete
            End If
            cel = "A" & aRow.Row
            aRow.Value = Application.WorksheetFunction.Trim(Range(cel).Value)
            If aRow.Value = Empty Then
                aRow.Delete
            End If
        Next
    Next
End Sub

2 个答案:

答案 0 :(得分:1)

行表示Excel中的整行,而不是单元格。 您不能将字符串值(“”)分配给行。

在您的情况下,您要检查第一个单元格是否等于某个值。 不用检查aRow.Value=,请使用aRow.Cells(1).Value

一旦检测到要删除的行,请使用aRow.Clear()清除所有行内容。

答案 1 :(得分:0)

欢迎来到SO。我认为您可以替换行

HTTPURLResponse

由此:

For Each aRow In ws.UsedRange.Rows

那样,您将遍历第一列的每个单元格。

要删除整行,则可以使用For Each aRow In ws.UsedRange.Columns(1).Cells

希望这会有所帮助