2013-01-02 3 views
0

질문의 기본 성을 용서해주십시오. 그러나 나는 이것이 찾을 수없는 단순하고 순진한 해결책이 있어야한다고 생각합니다.Excel 매크로, 날짜가 과거인지 확인하는 방법?

기본 시나리오는 백업 성공률을 추적하기위한 기업 솔루션으로 사용하는 Excel 통합 문서를 가지고 있으므로 결과적으로 첫 번째 열에 날짜가 포함 된 여러 시트가 있고 일부 작은 매크로 날짜가 과거인지 아닌지에 따라 계산을 수행합니다. (주로이 시트를보고 비어있는 행을 원하지 않는 관리자를 위해 매크로가 적절한 행을 숨기거나 표시하도록합니다.)

어제까지 새해 복 많이 받으 셨습니다. 매크로는 날짜 비교가 아닌 문자열 비교를 수행하기 때문에 가정합니다. (01/01/2013은 문자열로 볼 때 12/31/2012보다 작습니다.)

매크로는 기본적으로 VBA의 날짜를 비교할 기본 방법이 있는지 또는 사람 날짜의 날짜를 변환해야하는지 먼저 yyyy/mm/dd 형식으로 입력 한 다음 내 논리를 수행하십시오. (그렇게 할 필요가 있다면 기본적인 방법은 어떨까요? Excel 및 VBA를 가능한 한 자주 피하려고합니다. 따라서 VBA에 관한 한 코딩 기술이 극히 제한적입니다.)

A2은 스프레드 시트의 새 버전을 사용하여 처음 시작한 셀이며 A454은 올해 말까지 스프레드 시트를 연장하는 데 마지막으로 귀찮은 날짜입니다.

Sub ShowAll() 

Dim cell As Range 
For Each cell In Range("A2:A454") 
cell.EntireRow.Hidden = False 
Next 

End Sub 

Sub RevealPast() 

Dim cell As Range 
For Each cell In Range("A2:A454") 
If cell.Value < Date Then 
cell.EntireRow.Hidden = False 
End If 
Next 


End Sub 

Sub HideFuture() 

Dim cell As Range 
For Each cell In Range("A2:A454") 
If cell.Value >= Date Then 
cell.EntireRow.Hidden = True 
End If 
Next 

End Sub 

답변

7

cDate 기능을 사용해보십시오. 귀하의 예제에서

If CDate("02/01/2013") > Date (or Now() if you want today's date) Then 
    ... 

그래서, :의 라인을 따라

뭔가 내가 제대로 질문을 이해하고 희망이 도움이 희망

If cDate(cell.Value) >= Date Then 

...

+0

같은 문제가 떠오르는 것처럼 보입니다. CDate는 올해의 1 월 날짜가 작년 12 월의 날짜보다 여전히 적은 형식으로 날짜를 변환하는 것으로 보입니다. – HopelessN00b

+0

... 조금 더 설명하고 날짜로 변환하는 셀에 무엇을 가지고 있는지 보여줄 수 있습니까? 일단'cDate'를 사용하면 날짜 비교를하고 있기 때문에 올해의 1 월은 그 이전의 어떤 날짜보다도 커질 것입니다 ... –

+0

아, 제 사과는 결국 효과가 있습니다. 그냥 사용 했어요. 바르게. – HopelessN00b

1

내가 아는 이것은 당신이 물었던 것과는 다르지만, 언젠가 누군가에게 도움이 될 수 있습니다. 이 경우 시간 날짜 (2014년 3월 5일 오전 8시 0분 0초)에 추가하고 당신은 당신이 할 수있는 날짜와 비교하고 싶습니다 :

'X 당신이

을 비교하려면 날짜 인
x = CDate(x) 'formatting the date using the CDate function 

x= Format(x, "MM/DD/YYYY") 'formatting the date by dropping the hour 

x= CDate(x) 'formatting the date again 


If x <= Date Then 
    ...