我正在尝试编写一些代码,以将一系列工作表格式化为标准化格式。为此,我要删除空白行,删除前导空格,并删除以很多行开头的“; *”。尝试查看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
答案 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
希望这会有所帮助