2014-10-17 2 views
1

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

Есть 2 колонки, о которых идет речь, первый «А» - это идентификатор службы, второй - «В». Я хочу, чтобы «B» была сегодняшней датой, а «A» начиналась с 1 и подсчитывала, когда я добавляю новый запрос завтра, я хочу, чтобы «A» снова начинался с 1.

Вот код для столбца «А», когда создается новая запись «А», но когда меняется дата, она не начинается с нуля. Любые идеи?

'Service ID 
'check row above 
'if "Date" then out put "1" 
'if yesterday then out put "1" 
'if today then ouput + 1 

If (Sheet1.Cells(Rows.Count, "B").End(xlUp).Value) = "Date" Then 
serviceorder = "1" 

ElseIf (Sheet1.Cells(Rows.Count, "B").End(xlUp).Value) < Date Then 
serviceorder = "1" 

ElseIf (Sheet1.Cells(Rows.Count, "B").End(xlUp).Value) = Date Then 
serviceorder = (Sheet1.Cells(Rows.Count, "A").End(xlUp).Value) + 1 

Else 
End If 

Заранее спасибо.

ответ

0

Почему бы не просто сделать колонку A a COUNTIF формулой, чтобы показать количество раз, когда дата в соответствующем столбце B-ячейки отображается во всем столбце B? Таким образом, при изменении даты, он будет автоматически сброс 1 и каждый новый раз, когда запрос вводится в тот же день, что идентификатор будет увеличиваться на 1. Формула VBA будет:

With Sheet1.Cells(Rows.Count, "A").End(xlUp).Offset(1) 
    .Formula = "=COUNTIF(B:B,B" & .Row & ")" 

    'Uncomment this next line if you want column A to contain values instead of formulas 
    'If you do uncomment it, make sure you have already put the date in the B column for this entry 
    '.Value = .Value 
End With 
+0

Это работает благодаря – Michael

-1

Я думаю, что вообще проблема в ваших функциях - Sheet1.Cells(Rows.Count, "B").End(xlUp). Rows.Count означает, что, как говорится, количество строк в вашем листе и равно 1048576. По-моему, вы берете последнюю ячейку столбца, а End(xlUp) не улучшатся. Думаю, Sheet1.Cells(1, "B").End(xlUp) должен работать лучше. Извините, если я ошибаюсь, потому что не могу воспроизвести ваш сценарий здесь.

Смежные вопросы