ввод даты для UDF - PullRequest
       0

ввод даты для UDF

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

Итак, я создал UDF, который соответствует индексу.Это работает отлично, но когда я изменяю одну из моих переменных на дату, я сталкиваюсь с проблемами.Я просто не могу набрать "oct-18", oct-18 или 01-10-2018.Я должен сослаться на ячейку с датой, я предполагаю, что это так, как она связана с кодом даты 43374 для 18 октября.Я хотел бы иметь оба варианта:

1) Где я могу сослаться на ячейку 2) Где я могу просто ввести дату, такую ​​как oct-18

любая помощь или указание того, что кбыло бы здорово

ниже UDF, который я написал:

Function flatrate(Xa, Aa)
Application.Volatile
Dim lngRowMatch       As Long
Dim lngColMatch       As Long
Dim matrix            As Range

Set matrix = Sheets("flat rates").Range("flat_rates")
With matrix
  lngRowMatch = Application.WorksheetFunction.Match(Xa, .Columns(1), 0)
  lngColMatch = Application.WorksheetFunction.Match(Aa, .Rows(1), 0)
  flatrate = .Cells(lngRowMatch, lngColMatch)
End With
Exit Function
End Function

Ответы [ 2 ]

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

Строка, которая выглядит как дата, все еще не является истинной датой.Попробуйте добавить преобразование даты в функцию.

Function flatrate(Xa as variant, Aa as variant)

    Application.Volatile
    Dim lngRowMatch       As variant
    Dim lngColMatch       As variant

    if isdate(Xa) then _
        Xa = cdate(Xa)    '<~~ force date conversion here

    With workSheets("flat rates").Range("flat_rates")
      lngRowMatch = Application.Match(Xa, .Columns(1), 0)
      lngColMatch = Application.Match(Aa, .Rows(1), 0)
      if iserror(lngRowMatch) or iserror(lngColMatch) then
          flatrate = cverr(xlerrna)
      else
          flatrate = .Cells(lngRowMatch, lngColMatch)
      end if
    End With

End Function
0 голосов
/ 08 октября 2018

Попробуйте сослаться на .Cells(lngRowMatch, lngColMatch).value2, чтобы получить действительное значение ячейки, которое не конвертируется автоматически в Excel.

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