Исправить код VBA, который преобразует пустые ячейки в даты - PullRequest
0 голосов
/ 08 июля 2019

Я работаю над некоторыми проектами 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, чтобы остаться неизменным на последнем листе.

1 Ответ

0 голосов
/ 08 июля 2019

Да, вы можете добавить это ЕСЛИ ... Затем в последних 2 строках:

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 (нулю), поэтому ваши нули отформатированы как даты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...