2015-05-11 2 views
1

Звучит достаточно просто: просто сохраните дату в переменной, взятой из ячейки. Это все, что мне действительно нужно. Но я продолжаю получать ошибку «Object required».Excel (2010) VBA: введите дату как переменную и сохраните ее

У меня есть переменная, называемая ячейкой, а информация, которая мне нужна, - это смещение двух и трех столбцов влево (так что -2 и -3 с использованием смещения). Я попытался использовать строковую переменную и преобразовать ее в CDate(), я попытался использовать целое число и сохранил его там, я пробовал datevalue. Я в недоумении. Вот последняя версия моего кода ...

Function daysBetween(percent, quarters, cell As Range) As Boolean 
'this function returns true if the date is past the allotted time for the group 

cell.Select 
Dim target As String 
Dim issue As String 
Dim targetCell As Range 
Dim issueCell As Range 
Set targetCell = ActiveCell.Value 
Set targetCell = targetCell.Offset(0, -2) 
Set issueCell = ActiveCell.Value 
Set issueCell = issueCell.Offset(0, -3) 
Set issue = DateValue(issueCell).Value 
Set target = DateValue(targerCell).Value 
If ((target - issue - (Date - target))/(target - issue)) > (percent * quarters) Then 
    daysBetween = True 
End If 
End Function 

Спасибо, я сожалею о том, как грязный это ... Я учу себя VBA, я не знаю, что я делаю 75 % времени :)

ответ

2

уронить Набор s из значений:

Function daysBetween(percent, quarters, cell As Range) As Boolean 
'this function returns true if the date is past the allotted time for the group 

cell.Select 
Dim target As String 
Dim issue As String 
Dim targetCell As Range 
Dim issueCell As Range 
Set targetCell = ActiveCell 
Set targetCell = targetCell.Offset(0, -2) 
Set issueCell = ActiveCell 
Set issueCell = issueCell.Offset(0, -3) 
issue = DateValue(issueCell).Value 
target = DateValue(targerCell).Value 
If ((target - issue - (Date - target))/(target - issue)) > (percent * quarters) Then 
    daysBetween = True 
End If 
End Function 
+0

Я наконец-то увидел что-то об этом по другому вопросу (я уже пару часов просидел через Интернет). Теперь он компилируется ... но он также дает мне «Ошибка времени выполнения 91: объектная переменная или с переменной блока не установлена» ... :( – seadoggie01

+0

@ seadoggie01 Используйте другое имя переменной для переменной диапазона и ее значение. –

+0

I не совсем понимаю, извините ... вы можете объяснить немного больше? @ ученик gary – seadoggie01

0

Я использую Excel 2016 MSO (16.0.8730.2175) 64-бит и вот (сокращенная версия) код, который я использую:

Dim worksheet_ As Worksheet 
Set worksheet_ = Worksheets("NotTheNameOfMyWorksheet") 

Dim columnNumber As Integer 
Dim rowNumber As Integer 

columnNumber = 1 
rowNumber = 314 

Dim cellValue As Variant 
cellValue = worksheet_.Cells(rowNumber, columnNumber).Value 

Dim date_ As Date 
date_ = CDate(cellValue)