Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[VBA Excel] - Sprawdzanie formatu z komórkach

Raynee 04 Maj 2016 11:33 1020 4
  • #1 04 Maj 2016 11:33
    Raynee
    Poziom 4  

    Witam ponownie moi mili :)

    Mam problem z modyfikacją makra włączającego kalendarz.
    Makro sprawdza każdą komórkę czy występuje w niej określony format, przez co przelicza cały arkusz non stop, uniemożliwia mi to edytowanie arkusza.
    Bardzo was proszę o pomoc we "wpleceniu" zakresu do makra.

    Poniżej makro, określiłam zakres, w którym powinno odbywać się spr formatu, ale przez moją niekompetencję nie potrafię zmodyfikować tak żeby działało...

    Code:
    Sub Worksheet_SelectionChange(ByVal Target As Range)
    
         'check cells for desired format to trigger the calendarfrm.show routine
         'otherwise exit the sub
       
        Dim DateFormats, DF
       Dim zakres As Range
        Set zakres = Range("ai8", "ak8")

        DateFormats = Array("dd/mm/yyyy", "dd.mm.yyyy")
        For Each DF In DateFormats
            If DF = Target.NumberFormat Then
                If CalendarFrm.HelpLabel.Caption <> "" Then
                    CalendarFrm.Height = 191 + CalendarFrm.HelpLabel.Height
                Else: CalendarFrm.Height = 191
                    CalendarFrm.Show
                End If
            End If
        Next
       
    If Range("AI8").Value > Range("AK8").Value Then MsgBox "Data końcowa wcześniejsza niż początkowa!", vbCritical, "Zmień datę"
    Application.ScreenUpdating = False


    Calculate
       

    End Sub


    Będę wdzięczna za pomoc :)

    0 4
  • #2 04 Maj 2016 18:44
    adamas_nt
    Moderator Programowanie

    Co to makro ma robić? Na moje oko wystarczy sprawdzić te dwie komórki przy Change (zmienna 'Target' przekazuje adres) i porównać daty. Dlaczego sprawdzasz formaty przed, a nie po? A jeśli ktoś wpisze tekst zamiast liczby?

    0
  • #3 04 Maj 2016 19:08
    Raynee
    Poziom 4  

    Obecnie dla każdej komórki w skoroszycie, która ma format "dd/mm/yyyy", "dd.mm.yyyy" otwiera kalendarz. Chciałabym to zmodyfikować, żeby ograniczało się tylko do dwoch komórek, bbez sprawdzania formatu.
    Czyli po klilknięciu na komórkę uruchamia się kalendrz, gdzie wybierasz daty :)
    Porównanie komórek następuje po wyborze daty. To akurat wydaje się logiczne.

    0
  • #4 04 Maj 2016 19:18
    adamas_nt
    Moderator Programowanie

    Czyli powinno wystarczyć:

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod

    0
  • #5 04 Maj 2016 20:29
    Raynee
    Poziom 4  

    Działa ;) Dziękuję.

    Wydaje mi się, że błąd tkwił w poleceniu Calculate - dopiero po jego usunięciu jest ok :)

    0