Возникли проблемы с получением макрокоманды - PullRequest
0 голосов
/ 27 января 2019

Попытка переформатировать неправильно отформатированную дату в табличном диапазоне, чтобы я мог сортировать по датам. Я сталкиваюсь с ошибкой во время выполнения '13', несоответствие типов, со строкой кода "Range (" B "& y) .value".

Я знаю, что формула работает, потому что я попробовал ее в реальной таблице, и у меня есть другая формула в таблице, которая похожа и работает. Я пробовал несколько версий этой формулы, которые работают в реальной таблице, но все еще получают ошибку времени выполнения, несоответствие типов, когда я запускаю ее как макрос

'Purchase Date Formula
 Dim y As Integer
 Dim LastRowUsed As Integer

 LastRowUsed = Worksheets("AFOR").Cells(Rows.Count, "A").End(xlUp).Row
 For y = 2 To LastRowUsed

 Range("B" & y).Value = " =MID([@[purchase-date]],6,2)&" / "&MID([@[purchase-date]],9,2)&" / "&LEFT([@[purchase-date]],4)"

 Next y

PurchaseDate
24.01.2009

покупная дата

2019-01-24T13: 32: 18 + 00: 00

Попытка получить максимальный результат (PurchaseDate) из данных внизу (дата покупки).

Ответы [ 2 ]

0 голосов
/ 27 января 2019

Увидел в комментариях, что вы выяснили это, но в случае, если у кого-то еще есть такого рода проблемы, это решает три проблемы:

1 - значение в объекте диапазона можно заменить на свойство формулы

2- Следует избегать начального пробела в формуле

3- Использование кавычек в определенной формуле vba

'Purchase Date Formula
 Dim y As Integer
 Dim LastRowUsed As Integer

 LastRowUsed = Worksheets("AFOR").Cells(Rows.Count, "A").End(xlUp).Row

 For y = 2 To LastRowUsed

    Range("B" & y).Formula = "=MID([@[purchase-date]],6,2)&"" / ""&MID([@[purchase-date]],9,2)&"" / ""&LEFT([@[purchase-date]],4)"

 Next y

Пожалуйста, отметьте этот ответ, если это помогло вам.

0 голосов
/ 27 января 2019

Я не знаком с такими адресами, как [@ [Закупка-дата]] , но в моих испытаниях это привело к ошибке 2015. Поэтому я предпочитаю более традиционный подход, при котором вы могли бы просто прочитать дату и запишите это в ячейку, где вы хотите. Для большей ясности я добавил строку кода, чтобы отформатировать ее так, как вы предпочитаете. Пожалуйста, попробуйте.

Private Sub DateFromText()

    Dim R As Long
    Dim LastUsedRow As Long
    Dim Tmp As Variant

    With Worksheets("AFOR")
        LastUsedRow = .Cells(.Rows.Count, "A").End(xlUp).Row

        For R = 2 To LastUsedRow
            Tmp = Left(.Cells(R, "C").Value, 10)
            If IsDate(Tmp) Then
                With .Cells(R, "B")
                    .Value = CDate(Tmp)
                    .NumberFormat = "mm/dd/yyyy"
                End With
            End If
        Next R
    End With
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...