Если-тогда/выбрать случай для диапазона дат, определенного в ссылке на ячейку

Прошу прощения за новый вопрос, но решения в сети не нашел. Я пытаюсь сделать простой оператор if-then для диапазонов дат в VBA. Мой код (не работает) до сих пор:

            LR = 52
            Set rngData = Range("D2:D" & LR)
            'define the data range to evaluate
            For Each rngCell In rngData
                Select Case rngCell.Value
                    Case Val(Range("'Some_dates'!O8").Value) To Val(Range("'Some_dates'!P8").Value): rngCell.Value = Range("'Some_dates'!N8").Value
                    Case Val(Range("'Some_dates'!O9").Value) To Val(Range("'Some_dates'!P9").Value): rngCell.Value = Range("'Some_dates'!N9").Value
                    Case Val(Range("'Some_dates'!O10").Value) To Val(Range("'Some_dates'!P10").Value): rngCell.Value = Range("'Some_dates'!N10").Value
                    Case Val(Range("'Some_dates'!O11").Value) To Val(Range("'Some_dates'!P11").Value): rngCell.Value = Range("'Some_dates'!N11").Value
                Case Else: rngCell.Value = "Outside date ranges"
                End Select
            Next rngCell

Вывод для всех ячеек: «Вне диапазонов дат», что означает, что для всех ячеек в rngData выбрано значение «else», что неверно.

Ячейки O8: P11 на листе Some_dates определяют четыре диапазона дат (начало — столбец O, а конец — столбец P). Это даты, которые могут выглядеть как числа или даты в зависимости от того, как вы форматируете ячейку. Столбец N на листе Some_dates имеет метки для каждого диапазона дат.

Любая помощь приветствуется!


person baha-kev    schedule 16.06.2012    source источник


Ответы (1)


Если все, что вы сравниваете, это даты, то проблема Val. Val(1/1/2012), где 01.01.2012 — «настоящая» дата Excel (или поддельная, если уж на то пошло), возвращает «1». Val возвращает начало строки до первого нечислового символа. Так что попробуйте:

Case Range("'Some_dates'!O8").Value To Range("'Some_dates'!P8").Value: rngCell.Value = Range("'Some_dates'!N8").Value

Ваш код должен работать, когда даты хранятся в общем или числовом формате, так как тогда Val возвращает целое число (строку).

person Doug Glancy    schedule 16.06.2012