Excel Range.Value="&引用;类型不匹配
我正在尝试编写一些代码,将一系列工作表格式化为标准格式。要做到这一点,我想删除空行、前导空格,并删除许多行开头的“*”。在尝试查看aRow.Value=“是否表示行中没有文本时,始终返回类型不匹配错误 我在网上尝试过许多不同的解决方案,但似乎都不管用Excel Range.Value="&引用;类型不匹配,excel,vba,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 Th
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
行表示Excel中的整行,而不是单元格。 不能将字符串值(“”)分配给行 在本例中,您需要检查第一个单元格是否等于某个值。 不要选中
aRow.Value=
而使用aRow.Cells(1.Value)
检测到要删除的行后,使用
aRow.Clear()
清除所有行内容。欢迎使用SO。我想你可以更换电话线
用于ws.UsedRange.Rows中的每个aRow
据此:
For Each aRow In ws.UsedRange.Columns(1).Cells
这样,您将在第一列的每个单元格中循环
要删除整行,可以使用
aRow.EntireRow.delete
希望这有帮助我试图格式化的所有数据都在第一列中。这是否意味着我应该引用特定的单元格,而不是在整个代码中使用aRow?是的。如果您知道单元格,请使用cell.Clear()。单元格值可以有不同的类型(数字、字符串),因此调用Clear()函数应该更安全。它还删除了格式化。我仍然有点困惑。你建议我把cell.clear函数放在哪里?更新了答案。当我尝试进行替换时,我得到一个错误,上面写着“对象不支持此属性或方法”。你知道为什么吗?它对我非常有效,所以可能你在错误的位置使用了它。你的代码现在怎么样了?你能用新的代码更新你的问题吗?我刚才输入了一个错误,但是现在aRow.EntireRow.Delete语句给了我一个错误。对象“Range”的方法“Delete”失败。EntireRow。Delete对我来说太完美了。您的代码现在看起来如何?可能是因为您已经删除了该行,然后它失败了,因为它仍然与非实际范围相关联,因为代码的结构不同。调试它。用F8一步一步地执行发生的事情。第三个
If
语句检查单元格值是否以开头*代码>如果没有,它将删除该行。因此,实际上,您正在删除所有行(包括带有“
和”
),但列中第一个单元格以开头的行除外*代码>。在这种情况下,您不需要前两个“如果”。