2013-08-08 4 views
0

한 달에 속한 모든 날짜를 검색하고 싶습니다. 사용자가 월을 선택합니다. 모든 날짜를 검색 할 수 없으며 입력 한 마지막 날짜 만 가져옵니다. 찾기 기능을 사용하고 있으며 특정 조건을 제공 할 수 없습니다. Excel VBA에서 함수 찾기

mois = InputBox("Choisissez le mois (Entrer la valeur Numérique)!!! (1 pour Janvier, 2 pour Fév ....)", "Titre") 
    If mois > 0 & mois < 12 Then 
    ' Search for matching date 
    Set cellsearch = Range("G1:G" & NbrLinesDate).Find(What:=mois_chercher) 

    If cellsearch Is Nothing Then 
     If mois < 0 Then 
     ElseIf mois > 12 Then 
     End If 
    Else 
    ligne = cellsearch.Row 
    Date_to_search = Range("G" & ligne).Value 
End If 
End If 
    MsgBox Date_to_search       '' Checkpoint_1 
    JourTest = Day(Date_to_search) 
    JourTest = Trim(JourTest) 
    MsgBox JourTest         '' Checkpoint_2 

Mois

사용자 제공 월 값을 저장하는 변수이다. 이 코드에서는 이번 달에 속하는 날짜를 검색하는 데이 변수 mois를 사용하지 않습니다. 나는 그것을 성취 할 수 없다.

Date_de_Survenance 
30/01/2013 
31/01/2013 
31/01/2013 
04/02/2013 
05/02/2013 
07/02/2013 
11/02/2013 
13/02/2013 
13/02/2013 
13/02/2013 
15/02/2013 
20/02/2013 
+0

http://www.siddharthrout.com/2011/07/14/find-and-findnext-in-excel -vba/ –

+0

정확한 코드를 볼 수 있습니까? –

+0

완료. 편집을 마쳤습니다. – Ameya

답변

1

이 예제를 참조하십시오. 입력을 위해 Inputbox을 사용하지 않고 데모 목적으로 하드 코딩 된 값을 사용합니다.

Excel 데이터가 이렇게 보입니다.

enter image description here

단순히 모듈에이 코드를 붙여 실행합니다.

코드

' 
' Excel Constants for Months for Autofilter 
' 
' xlFilterAllDatesInPeriodJanuary = 21 
' xlFilterAllDatesInPeriodFebruray = 22 
' xlFilterAllDatesInPeriodMarch = 23 
' xlFilterAllDatesInPeriodApril = 24 
' xlFilterAllDatesInPeriodMay = 25 
' xlFilterAllDatesInPeriodJune = 26 
' xlFilterAllDatesInPeriodJuly = 27 
' xlFilterAllDatesInPeriodAugust = 28 
' xlFilterAllDatesInPeriodSeptember = 29 
' xlFilterAllDatesInPeriodOctober = 30 
' xlFilterAllDatesInPeriodNovember = 31 
' xlFilterAllDatesInPeriodDecember = 32 


Sub Sample() 
    Dim ws As Worksheet 
    Dim lRow As Long, lMnth As Long, constmonth As Long 

    '~~> Feb 
    lMnth = 2 
    constmonth = lMnth + 20 '~~> (See the commented section for constants) 

    '~~> Change this to the relevant sheet 
    Set ws = ThisWorkbook.Sheets("Sheet1") 

    With ws 
     lRow = .Range("A" & .Rows.Count).End(xlUp).Row 

     '~~> Remove any filters 
     .AutoFilterMode = False 

     With .Range("A1:A" & lRow) 
      .AutoFilter Field:=1, Criteria1:= _ 
      constmonth, Operator:=xlFilterDynamic 
     End With 
    End With 
End Sub 

출력

enter image description here

+0

변수가 어디에 사용됩니까? – Ameya

+0

아! 그것을 무시하십시오. 나는 그것에'.Range ("A1 : A"& lRow)'를 저장할 계획을 가지고있었습니다. 위의 게시물을 수정하겠습니다. –

+0

도움 주셔서 감사합니다. 그것은 해결되었습니다. – Ameya