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 - kod VBA błąd Type mismatch

KhaiGor 01 Lut 2013 13:28 4566 14
  • #1 01 Lut 2013 13:28
    KhaiGor
    Poziom 8  

    Witam, dopiero zaczynam swoją przygodę z VBA i jak każdy popełniam błędy których nie potrafię rozwiązać. W przypadku mojego makra:

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    konkretniej w linijce: ActiveCell.Offset(0,5)=...
    Wyskakuje mi błąd type mismatch '13, sprawdzałem już czy czasem w bazie danych nie ma gdzieś zamiast przecinka kropki ale to się wszystko zgadza. W załączniku przesyłam dla zainteresowanych cały zeszyt excela 2003 w którym zawarte jest to makro. Proszę bardzo o pomoc, gdyż tak jak mówię, dopiero zaczynam i naprawdę chcę się uczyć:)

    0 14
  • #2 01 Lut 2013 13:40
    mickpr
    Poziom 39  

    Szukaj wcześniej.
    Wszystkie zmienne covXX użyte w tej linijce zwracają błąd (ERROR 2036).

    0
  • #3 01 Lut 2013 13:43
    KhaiGor
    Poziom 8  

    a mógłbyś sprawdzić dlaczego, patrzyłem za tym ale na serio nie mam pojęcia gdzie może być błąd..

    0
  • #4 01 Lut 2013 13:46
    mickpr
    Poziom 39  

    Źle wywołujesz funkcję COVAR. Powinna być coś w ten deseń (przykładowo)

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    ty masz tak:
    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0
  • #5 01 Lut 2013 13:50
    KhaiGor
    Poziom 8  

    teraz mi wywala, Sub or Function not Defined, oczywiście jak zmieniłem na to jak powinno być.

    0
  • #6 01 Lut 2013 13:51
    mickpr
    Poziom 39  

    A co to jest w takim razie?

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    ???

    0
  • #7 01 Lut 2013 13:56
    KhaiGor
    Poziom 8  

    Ogólnie powiem tak, muszę zrobić makro z kowariancjami, znajomy mi podesłał taką treść tej linijki i powiedział, ze tak powinno być, w momencie jak mi wywalało to mi mówi, że On już nie wie.

    0
  • #8 01 Lut 2013 14:04
    mickpr
    Poziom 39  

    Zamiast

    Kod: vb
    Zaloguj się, aby zobaczyć kod
    wpisz
    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0
  • #9 01 Lut 2013 14:06
    marcinj12
    Poziom 40  

    mickpr napisał:
    Źle wywołujesz funkcję COVAR. Powinna być coś w ten deseń (przykładowo)
    Oj, kolega coś chyba dzisiaj niewyspany ;))) Covar to jakaś funkcja statystyczna funkcja w Excelu i wywołanie Application.Covar jest akceptowalne, przynajmniej w wersji 2007 (nigdzie nie widzę Cover), choć można też ją wywołać Application.WorksheetFunction.Covar(...), to Excel zrozumie też Application.Covar.

    Do autora postu - dziwna sprawa, że ja u siebie ten plik odpalam i makro wykonuje się całe bez błędu :) Czy u Ciebie na dokładnie tych danych i dokładnie tym pliku występuje błąd? Jeżeli tak, to w VBA wstaw breakpointa obok linijki, która wyrzuca błąd, i wciśnij F5.
    Kiedy wykonywanie kodu się zatrzyma, przejedź myszą nad zmiennymi i zobacz, czy wszystkie przyjmują jakieś sensowne wartości...
    Tak z ciekawości - to jak tą formę wywołujesz??

    0
  • #10 01 Lut 2013 14:09
    KhaiGor
    Poziom 8  

    w momencie jak najeżdżam myszą nad tymi zmiennymi covxx wyskakuje mi np cov11=error 2036 i tak, pracuję cały czas na tych samych danych i tym samym arkuszu.
    o ile dobrze zrozumiałem to póki co przez makro-> uruchom :)
    korzystam z Excela 2003 więc zmieniłem trochę kod teraz i wstawiłem "WorksheetFunction" ale wyskakuje mi błąd, że:

    Cytat:
    pobranie właściwości Covar klasy worksheetfunction nie jest możliwe

    0
  • #11 01 Lut 2013 14:16
    marcinj12
    Poziom 40  

    Jaki to Excel? Czy funkcję kowariancji masz w ogóle dostępną, jak ją wpisujesz w arkuszu (ona chyba wymaga doinstalowania dodatku przy instalacji Excela)

    0
  • #12 01 Lut 2013 14:19
    KhaiGor
    Poziom 8  

    tak, funkcja kowariancja jest dostępna u mnie w arkuszu, gdybym chciał z palca to zrobić, jest to wersja 2003 Professional

    0
  • #13 01 Lut 2013 14:50
    marcinj12
    Poziom 40  

    Dla potomnych ;) - błędne okazały się argumenty funkcji COVAR(), które nie mogą być kolumnami, a muszą być z zakresu Range(...)
    PS. Jak deklarujesz takie coś:

    Kod: vb
    Zaloguj się, aby zobaczyć kod
    to wbrew pozorom nie deklarujesz wszystkich zmiennych jako Double. Jedynie ostatnia zmienna (u4) będzie typu Double, pozostałe będą typu Variant.
    Musiałbyś każdą z nich deklarować osobno.
    PS2. Jeżeli zmienna jest typu Variant, a nie masz wymuszonego sprawdzania typów, to nie musisz ich deklarować wprost pisząc:
    Kod: vb
    Zaloguj się, aby zobaczyć kod
    - zmienna bez określonego typu domyślnie przyjmuje typ Variant.

    mickpr napisał:
    Nigdy jej nie używałem, ale miło się dowiedzieć :)
    Ja też nie :) Wyszło w praniu :) Szczerze mówiąc - dość nietypowy przypadek - chyba większości funkcji obojętne, czy deklaruje się im argument jako Range() czy Column(), ale jak widać - nie wszystkim :)

    0
  • Pomocny post
    #14 01 Lut 2013 14:53
    mickpr
    Poziom 39  

    marcinj12 napisał:
    Oj, kolega coś chyba dzisiaj niewyspany

    Nie spałem dziś dobrze.. :) To fakt.
    marcinj12 napisał:
    Dla potomnych :wink: - błędne okazały się argumenty funkcji COVAR(), które nie mogą być kolumnami, a muszą być z zakresu Range

    Nigdy jej nie używałem, ale miło się dowiedzieć :)

    0
  • #15 01 Lut 2013 15:17
    KhaiGor
    Poziom 8  

    Człowiek się uczy całe życie! :) a przynajmniej dzięki temu się wszyscy czegoś nowego dowiemy:) dzięki wielkie chłopaki! :)

    0