Excel复制空白而不是零

时间:2015-09-04 20:51:24

标签: vba excel-vba excel

我正在处理一个工作表,该数据库将数据保存到单独的工作表中,作为以前条目的一种数据库。一切都很好,但突然间它开始把空白放入数据库电子表格而不是零。它之前没有这样做,我不确定是什么引发了行为的改变。我关注的一点代码是:

Workbooks(DatabaseName).Worksheets(WorksheetName).Cells(n.Row, i) = Workbooks(WorkBookName).Worksheets(WorksheetName).Cells(k, l).Value

使用立即查看器,我可以看到.Cells(k,l).Value返回的值是"空白"而不是零,即使Cell(k,l)包含零。为了解决这个问题,我尝试设置整数变量:

CellValue = Workbooks(WorkBookName).Worksheets(WorksheetName).Cells(k, l).Value
DBValue = Workbooks(DatabaseName).Worksheets(WorksheetName).Cells(n.Row, i).Value
If CellValue <> DBValue Then
   Workbooks(DatabaseName).Worksheets(WorksheetName).Cells(n.Row, i) = CellValue
End If

这会返回类型不匹配,因为.Cells(k,l).Value仍在返回&#34;空白&#34;不是&#34; 0&#34;。

令我感到困惑的是,这已经被一些人使用了很长一段时间(事实上已经好几年了),直到本周才开始将空白换成零。我可以改变什么来使这项工作?

编辑:我重新检查了在尝试强制整数类型的方法后得到的类型不匹配,并且在1200行整数之后,有三个单元格包含导致类型不匹配的字符串,而不是空白单元格正如我之前想的那样。我将代码更改为仅使用整数方法,直到它到达那些字符串,并且我不再收到类型不匹配错误。令人沮丧的是,它仍然将空白记录为零。

编辑2:问题解决了!当excel评估声明时:

If Cells(k, l).Value <> Cells(n.Row, i).Value Then

当(k,l)是&#34; 0&#34;并且(n.Row,i)是空白的,它回来说两个人是平等的并且跳过&#34;然后&#34;将零写入to(n.Row,i)的语句。 我通过改为

解决了这个问题
If Cells(k, l).Value <> Cells(n.Row, i).Value Then
....
ElseIf Cells(k,l).Value = 0 Then
....

1 个答案:

答案 0 :(得分:0)

这些单元格是数字格式还是字符串格式?看看这个:

www.techrepublic.com/blog/microsoft-office/three-ways-to-hide-zero-values-in-an-excel-sheet/