I’m using VBA to do some further formatting to a generated CSV file that’s always in the same format. I have a problem with my For Each Loop. the loop deletes an entire row if there is more than one blank row which can be determined from the first column alone.
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
At some point the value in the loop one of the calls does not have a value of “”, it’s just empty and causes it to crash. To solve this I think that changing the type of the cell to text before that compare would work but I can’t figure out how (no intellisense!!!)
So how do you convert a cell type in VBA or how else would I solve the problem?
Thanks.
Use
cell.Valueinstead of thecell.Textas it will evaluate the value of the cell regardless of the formating. Press F1 over.Valueand.Textto read more about both.Be carefull with the statement
For Each cell In Columns("A").Cellsas you will test every row in the sheet (over a million in Excel 2010) and it could make Excel to crash.Edit:
Consider also the funcion
TRIM. It removes every empty space before and after a string. If in the cell there is a white space ” “; it will look like empty for the human eye, but it has a space inside therefore is different than “”. If you want to treat it like an empty cell, then try: