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

Makro w excelu. Dlaczego suma nie zostaje obliczona?

Facetjanusz 17 Lut 2011 13:07 12739 66
  • #61
    marek003
    Poziom 40  
    Pytałem się wcześniej "czy z hasłem? ".

    Musisz dodać/zmienić kody wyłączające i włączające ochronę (dodać hasło).

    Code:
    Worksheets("DANE").Unprotect Password:="123"


    Code:
    Worksheets("DANE").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:="123"
  • #62
    Facetjanusz
    Poziom 15  
    SORRY - wszystko OK.
    Dałem się nabrać na propozycję podania hasła podczas chronienia arkusza - po prostu nie pomyślałem że można nie używać hasła ! A więc zdjąłem hasło i wszystko hula. Stokrotne dzięki - obecnie dopracowuję drugi skoroszyt - Kartotekę osobową , ponieważ było tam parę niedociągnięć .
  • #63
    Facetjanusz
    Poziom 15  
    Wydaje mi się, że błędy w Excelu powodujące wywalanie programu spowodowane były jednocześnie uruchomione 2 pliki Ewidencje i Kartoteka - bowiem mogło się zdarzyć ,że jednocześnie dokonywały zapisu co 2 minuty. Pewnie tak nie powinno być - ale teraz mam uruchomiony jeden skoroszyt (Ewidencja) i nie wywala Excela.
    Jednak co jakiś czas w momencie uruchamiania przycisku "Wprowadzanie danych" Wyskakuje błąd po którym odzyskuję zapisany plik z autoodzyskiwania.
    Może masz jakiś pomysł jaki powód może być ?. Aha , taki sam błąd wyskoczył kiedy dłużej nie było nic wprowadzane.,
    Pozdr
  • #64
    marek003
    Poziom 40  
    Ten błąd (przy włączeniu przycisku) dotyczy zapewne inicjalizacji okna.
    We wczesnych wersjach - które sygnalizowałeś - aby ominąć podobny błąd musiałem skierować makro na arkusz DANE przy "zerowaniu" danych.

    Sporóbuj więc poprawić kod inicjalizacji (w VBA dwukliknij w obszar okienka i popraw):

    Code:
    Private Sub UserForm_Initialize()
    

    Arkusz_Nazwa = ActiveSheet.Name
    Wiersz_ost = Worksheets(Arkusz_Nazwa).Range("a2").End(xlDown).Row + 1
    Lista_ost = Worksheets("SLOWNIK").Range("b" & Rows.Count).End(xlUp).Row

    ZRODLO = "'SLOWNIK'!C3:C" & Lista_ost
    MIESIAC = "'SLOWNIK'!I3:I14"

    With Okienko1
        .TextBox3.Value = Wiersz_ost - 5
        .TextBox4.Value = "0,00"
        .TextBox5.Value = "0,00"
        .ComboBox1.RowSource = ZRODLO
        .ComboBox2.RowSource = MIESIAC
        .ComboBox2.Value = Arkusz_Nazwa
    End With



    For i = 1 To 12
        Worksheets("DANE").Cells(i + 2, 4).Value = 0
        Worksheets("DANE").Cells(i + 2, 12).Value = 0
    Next i
        TextBox1.SetFocus
    End Sub


    na

    Code:
    Private Sub UserForm_Initialize()
    

    Application.ScreenUpdating = False

    Arkusz_Nazwa = ActiveSheet.Name
    Wiersz_ost = Worksheets(Arkusz_Nazwa).Range("a2").End(xlDown).Row + 1
    Lista_ost = Worksheets("SLOWNIK").Range("b" & Rows.Count).End(xlUp).Row

    ZRODLO = "'SLOWNIK'!C3:C" & Lista_ost
    MIESIAC = "'SLOWNIK'!I3:I14"

    With Okienko1
        .TextBox3.Value = Wiersz_ost - 5
        .TextBox4.Value = "0,00"
        .TextBox5.Value = "0,00"
        .ComboBox1.RowSource = ZRODLO
        .ComboBox2.RowSource = MIESIAC
        .ComboBox2.Value = Arkusz_Nazwa
    End With

    Worksheets("DANE").Activate

    For i = 1 To 12
        Worksheets("DANE").Cells(i + 2, 4).Value = 0
        Worksheets("DANE").Cells(i + 2, 12).Value = 0
    Next i

    Worksheets(Arkusz_Nazwa).Activate
    Application.ScreenUpdating = True
       
        TextBox1.SetFocus
    End Sub


    Dodałem przed pętlą FOR Worksheets("DANE").Activate
    i za pętlą (za Next i ) przełączenie na główny arkusz Worksheets(Arkusz_Nazwa).Activate

    Dodatkowo na początku procedury inicjalizacji okna wyłączyłem odświeżanie Application.ScreenUpdating = False i pod koniec włączyłem odświeżanie Application.ScreenUpdating = True.

    Mam nadzieje że to pomoże na błąd w momencie wciśnięcia przycisku.

    Natomiast błąd który pojawia się jak nic nikt nie robi również wskazuje na
    Code:
    Okienko1.Show
    (żółte zaznaczenie) czy to może inny błąd?

    Jeżeli dalej będzie błąd przy "nic nie robieniu" załóż nowy topik dotyczący tego błędu przy włączonym makrze (tym topikiem wszyscy się znudzili i nie chce im się czytać by się zagłębić w problem a on właściwie nie jest związany z głównym tematem). Opisz problem i załącz "skriny" komunikatów błędów i przykładowy plik. Bo przyznam że na chwilę obecną nie mam pojęcia co go powoduje a może inni (którzy teraz tu nie zaglądają) mają jakieś sugestie.
  • #65
    Facetjanusz
    Poziom 15  
    Dzięki Marku za podpowiedź - zastosuję się do Twoich wskazówek.
    Jeszcze raz dziękuję za tak dogłębne zainteresowanie się moim tematem i moimi problemami w Excelu.
  • #66
    Aldrin
    Poziom 22  
    marek003 napisał:
    Natomiast błąd który pojawia się jak nic nikt nie robi również wskazuje na
    Code:
    Okienko1.Show
    (żółte zaznaczenie) czy to może inny błąd?

    Jeżeli dalej będzie błąd przy "nic nie robieniu" załóż nowy topik dotyczący tego błędu przy włączonym makrze (tym topikiem wszyscy się znudzili i nie chce im się czytać by się zagłębić w problem

    Dobry pomysł, bo nie trzeba się przekopywać przez wszystkie etapy pośrednie.
    To, ze występuje błąd to jeszcze zbyt mało. Jaki jest komunikat tego blędu? Dobrze też byłoby opisać (jeśli się da) kiedy taki błąd można wywołać, bo daje to nadzieję na powtarzalność i korektę błędu.
  • #67
    Facetjanusz
    Poziom 15  
    Dzięki za pomoc