我正在从事一些VB项目,这些项目与生成新的Excel工作表和一些数据分析有关。在生成的最终工作表中,有些列包含excel默认日期(00.01.1900)
我后来发现,有一部分代码将前一张工作表中的空白单元格转换为最后一张工作表中的默认日期。这是我认为是问题的部分代码
Set rng_col = ws.Cells.Find(What:="Total Discrepancies", LookIn:=xlValues, LookAt:=xlHeaderRow, SearchOrder:=xlHeaderRow, SearchFormat:=False) 'Total Discrepancies
If Not (rng_col Is Nothing) Then
col_total = rng_col.Column
len_d = ws.Cells(1, len_col_max).End(xlToLeft).Column
len_l = ws.Cells(len_lines_max, 1).End(xlUp).Row
For cpt = 2 To len_l
For k = col_total + 1 To len_d
ws.Cells(cpt, col_total).Value = CInt(ws.Cells(cpt, col_total).Value) + CInt(ws.Cells(cpt, k).Value)
Next k
If ws.Cells(cpt, col_total).Value = 0 Then
ws.Cells(cpt, col_total).Value = ""
End If
If col_first <> 0 And col_last <> 0 Then
ws.Cells(cpt, col_first).Value = CDate(ws.Cells(cpt, col_first).Value)
ws.Cells(cpt, col_last).Value = CDate(ws.Cells(cpt, col_last).Value)
End If
Next cpt
那么我可以从此代码中更改什么(我从最后4行中猜测),这将使prvs工作表中的空白单元格在最终工作表中保持不变。
答案 0 :(得分:0)
是的,您可以添加此IF ...然后在最后两行中添加>
if ws.Cells(cpt, col_first).value <> 0 then ws.Cells(cpt, col_first).Value = CDate(ws.Cells(cpt, col_first).Value)
if ws.Cells(cpt, col_last).value <> 0 then ws.Cells(cpt, col_last).Value = CDate(ws.Cells(cpt, col_last).Value)
请记住,VBA不会转换日期,只是00.01.1900等于0(零),所以您的零被格式化为日期。