VBA将列中的所有单元格转换为input文本

我正在使用VBA来进一步格式化生成的CSV文件,这些文件始终采用相同的格式。 我的For Each Loop有问题。 如果有多于一个空白行,可以从第一列单独确定,则循环会删除整行。

Dim rowCount As Integer For Each cell In Columns("A").Cells rowCount = rowCount + 1 ' ' Delete blank row ' If cell = "" And cell.Offset(1, 0) = "" Then Rows(rowCount + 1).EntireRow.Delete spaceCount = 0 End If Next 

在某个时候,循环中某个调用的值没有“”的值,它只是空的,导致它崩溃。 为了解决这个问题,我认为在比较之前将单元格的types改为文本是行得通的,但是我无法弄清楚(没有智能感知!!!)

那么如何在VBA中转换单元格types,还有其他方法可以解决问题呢?

谢谢。

使用cell.Value而不是cell.Text因为它会评估单元格的值,而不pipe格式如何。 按F1键.Value.Text阅读更多关于两者。

请仔细阅读For Each cell In Columns("A").Cells ,您将testing表单中的每一行(超过一百万个Excel 2010),这可能会导致Excel崩溃。

编辑:

还要考虑TRIM的function。 它删除string前后的每个空白空间。 如果在单元格中有一个空格“”; 它对于人眼来说看起来像是空的,但它内部有一个空间,因此不同于“”。 如果你想像一个空单元格对待它,那么试试:

 If Trim(cell.value) = "" then 

正如@andy( https://stackoverflow.com/users/1248931/andy-holaday )在评论中所说, For Each肯定是要走的路。 这甚至允许在行之间有空格。

示例代码:

 Sub ListFirstCol() Worksheets("Sheet1").Activate Range("A1").Activate For Each cell In Application.Intersect(Range("A:A"), Worksheets("Sheet1").UsedRange) MsgBox (cell) Next End Sub 

谢谢安迪!