我正在研究一个工作簿,该工作簿从Access到Excel导入数据,并且需要弄清楚当单元格为空时如何用默认日期值替换某些列中的值。我有24列,彼此之间没有顺序排列,但其中包含日期值,但是有空白。我试图使用select
范围代码来选择范围并替换值,但是遇到范围不连续的问题。我当时想我可以使用几乎总是填写的另一列来标识范围计数的末尾,并继续执行我开始时使用的空替换,但我不知道该怎么做。有没有办法轻松地做到这一点?这是我现在正在使用的代码:
Sub replace_blanks()
Dim cellvar As Range
For Each cellvar In Selection.Cells
If cellvar.Value = vbNullString Then
cellvar.Value = "1/1/1900"
End If
Next cellvar
End Sub
和
Sub AfterImport()
Range("B1", Range("B1").End(xlDown)).Select
End Sub
更新:
Sub AfterImport()
Dim cellvar As Range
Dim AccessData As Worksheet
Dim lngLastRow As Long
Set AccessData = Worksheets("AccessData")
With AccessData
lngLastRow = .Cells(.Rows.Count, "D").End(xlUp).Row
Range("B1", "B" & lngLastRow).Select
For Each cellvar In Selection.Cells
If cellvar.Value = vbNullString Then
cellvar.Value = "1/1/1900"
End If
Next cellvar
End With
注意:当活动工作表是AccessData工作表时,代码的最后一部分有效。但是,当我在另一张纸上运行它时,出现错误,宏退出。
谢谢。
答案 0 :(得分:0)
这是完整的代码:
Sub AfterImport()
Dim cellvar As Range
Dim AccessData As Worksheet
Dim lngLastRow As Long
Set AccessData = Worksheets("AccessData")
With AccessData
lngLastRow = .Cells(.Rows.Count, "D").End(xlUp).Row
End With
worksheets("AccessData").Activate
Range("B1", "B" & lngLastRow).Select
For Each cellvar In Selection.Cells
If cellvar.Value = vbNullString Then
cellvar.Value = "1/1/1900"
End If
Next cellvar
End Sub