AMcoder - javascript, python, java, html, php, sql

Եթե ​​ամսաթիվը մեծ է կամ հավասար է, ապա ֆունկցիան

Public DateRng As String

Private Sub DateLookup()

'Dim ColCnt As Integer

'Prompt Date to look for
  DateRng = InputBox("Insert date in format dd/mm/yy", "User date", Format(Now(), "dd/mm/yy"))
  If IsDate(DateRng) Then
    DateRng = Format(CDate(DateRng), "dd/mm/yy")
    ColumnDateCheck
'    MsgBox DateRng
  Else
    MsgBox "Wrong date format"
    Exit Sub
  End If



End Sub

Private Sub ColumnDateCheck()

    For C = 3 To 29
        If Cells(C, 2) >= DateRng Then
            'Function
            Cells(C, 5) = Cells(C, 3) + Cells(C, 4)

        End If
    Next

End Sub

Տվյալներ, որոնցում աշխատում է կոդը

Test Sheet

Կոդը կատարելիս սխալ չկա, բայց ֆունկցիան չի աշխատում այնպես, ինչպես նախատեսված էր: Այն կատարում է գործառույթը խառնաշփոթի մեջ, առանց դրա հետևում որևէ օրինաչափության: Չի կարողանում հասկանալ արդյունքը:

Նպատակը

  1. DateLookup ենթակետում InputBox-ը հուշում է ամսաթիվը
  2. Եթե ​​մուտքը վավեր է, զանգահարեք ColumnDateCheck Sub
  3. Փնտրեք B սյունակում մուտքագրված ամսաթիվը 3-ից մինչև 29-րդ տողերը: Եթե ամսաթիվը մեծ է կամ հավասար, E սյունակում ավելացրեք C և D սյունակը:
25.02.2018

  • ո՞րն է ձեր տարածաշրջանային ամսաթվի ձևաչափը: Օրինակ, եթե գործարկեք՝ Msgbox Format(now(),"short date") այն վերադարձնո՞ւմ է ամսաթիվը նույն ձևաչափով, որն օգտագործել եք ձեր կոդը: 25.02.2018
  • Անգլերեն (Միացյալ Նահանգներ) 25.02.2018
  • եթե վազում ես, եթե վազում ես՝ Msgbox Format(now(),"short date") ինքնուրույն, ի՞նչ ես ստանում: 25.02.2018
  • Ես ստանում եմ 25/2/2018 25.02.2018
  • հմմ լավ, հիմա պատասխան կգրեմ 25.02.2018
  • @ashleedawg գնահատում եմ այն ​​(: 25.02.2018
  • Փորձեք համեմատել ամսաթվերը այսպես. if Format(Cells(C, 2) ,yyyy-mm-dd)›= Format(DateRng,yyyy-mm-dd) Ապա...... և այլն: 25.02.2018
  • @M.R. - Փոխարենը ես փոփոխեցի նրա կոդը, որպեսզի այն լինի համապատասխան ձևաչափով: Բայց ծիծաղելի է, որ դուք ընտրում եք ամսաթվի այդ ձևաչափը. դա այն է, ինչին ես ձեռքով սահմանել եմ իմը բոլոր սարքերում, քանի որ դա ամենատրամաբանականն է և այն աշխատում է ձեր օրինակի նման համեմատությունների համար, քանի որ ամենախոշոր→Փոքրը կարգով է: (ճիշտ այնպես, ինչպես իրական թվերը, lol) 25.02.2018
  • @M.R. - գումարած դու ????????, դա մյուս պատճառն է, որ օգտագործում ես տրամաբանական թվերի ձևաչափեր: :) 25.02.2018
  • @M.R. - ի դեպ, մեկնաբանություններում կարող եք ցուցադրել code blocks-ը՝ ծածկագիրը `-ով շրջապատելով ... Ձևաչափման այլ խորհուրդներ այստեղ . 25.02.2018

Պատասխանները:


1

Ես չեմ օգտագործում ԱՄՆ-ի ամսաթվի ձևաչափը (ես օգտագործում եմ y/m/d), և դուք, ըստ երևույթին, չեք օգտագործում, քանի որ դուք d/m/y եք, իսկ անգլերեն/ԱՄՆ ստանդարտը m/d/y է, ուստի դա խնդրի մի մասն էր (մեր երկուսի համար):

Անկախ նրանից, թե ինչպես են բջիջները ձևաչափված Excel-ում, VBA-ն դեռ ցանկանում է ամսաթիվը հատուկ ձևով: Դրա հետ կապված մի քանի եղանակ կա. Ես ընտրեցի հեշտը. ստիպեք օգտագործողին մուտքագրել այն ամսաթիվը, թե ինչպես է Excel-ն ակնկալում:

Այսպիսով, ես ավելացրեցի մի գործառույթ, որը կսահմանի ձևաչափը (որը տարբեր կլինի ձեր, իմ և ձեր համակարգչի համար):

Խնդրի մյուս մասն այն է, որ դուք պետք է ավելի լավ հասկանաք տվյալների տեսակները: Հիմնականում, փորձում էին Date-ը պահել String փոփոխականում, որը միշտ չէ, որ աշխատում է այնպես, ինչպես սպասվում էր (ինչպես այս անգամ):

InputBox-ը վերադարձնում է տողը, այնպես որ դուք պետք է փոխարկեք այն, բայց այն փոխարկելով և այն տողում պահելով, պարզապես այն մնում է որպես տող:

Նույնը հայտարարության դեպքում. DateRng = Format(CDate(DateRng), "dd/mm/yy") քանի որ Format-ը միշտ վերադարձնում է String (նույնիսկ եթե այն «կարծես» է ամսաթվի), իսկ ձեր DateRng փոփոխականը դեռ String է:

Ինչևէ, այս փոփոխված կոդը պետք է աշխատի.

Private Sub DateLookup()
    Dim str_DateRng As String
    Dim dateRng As Date
    str_DateRng = InputBox("Enter date in format " & DateFormat, "User date", _
        Format(Now(), DateFormat))
    If IsDate(str_DateRng) Then
        dateRng = CDate(str_DateRng)
        ColumnDateCheck (dateRng)
    Else
        MsgBox "Wrong date format"
        Exit Sub
    End If
End Sub

Private Sub ColumnDateCheck(dateToFind As Date)
    Dim c As Integer
    For c = 3 To 29
        If Cells(c, 2) >= dateToFind Then
            Cells(c, 5) = Cells(c, 3) + Cells(c, 4)
        End If
    Next c
End Sub

Function DateFormat() As String
    Select Case Application.International(xlDateOrder)
        Case 0 : DateFormat = "m/d/yyyy"
        Case 1 : DateFormat = "d/m/yyyy"
        Case 2 : DateFormat = "yyyy/m/d"
    End Select
End Function
25.02.2018
  • Շնորհակալություն կիսվելու համար, որն օգնում է ինձ լուծել խնդիրը և բացատրել: Հստակ հասկացա (: 25.02.2018
  • Հաճելի է լսել. Ես նույնպես ինչ-որ բան սովորեցի (նշանակում էր պարզել ֆունկցիան, որպեսզի ամսաթվի ձևաչափումը ոչ խնդիր լինի՝ անկախ տարածաշրջանից): Ահա 6 րոպեանոց հիմնական YouTube ձեռնարկը VBA տվյալների տեսակների մասին, եթե հետաքրքրված եք: 25.02.2018

  • 2

    Փորձեք համեմատել ամսաթվերը այսպես.

       If Format(Cells(C, 2) ,"yyyy-mm-dd")>= Format(DateRng,"yyyy-mm-dd") Then......etc.
    
    25.02.2018
  • Դա չի օգնի այն փաստին, որ նա նշում է ամսաթիվը InputBox-ում ոչ ստանդարտ ձևաչափով: 25.02.2018
  • Նոր նյութեր

    Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
    JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

    Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
    Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

    Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
    Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

    Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
    Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

    C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
    C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

    Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
    Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..