Выберите Range в Excel и замените Nulls - PullRequest
0 голосов
/ 06 сентября 2018

Я работаю над книгой, которая импортирует данные из 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. Однако, когда я запускаю его на другом листе, я получаю сообщение об ошибке и макрос завершает работу.

Спасибо.

1 Ответ

0 голосов
/ 08 сентября 2018

Вот полный код:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...