Wątek przeniesiony 2021-09-16 09:55 z Inne języki programowania przez cerrato.

Makro w VBA nie działa

0

Excel 2003. Procedura wywoływana z innej procedury (Leksem) nie zawsze działa. Poza tym nie działa jak trzeba, a wydaje mi się, że nie ma błędów.

Arkusz3
Leksemy - Rozbija zdania z drugiej kolumny na słowa i wypisuje je po prawej stronie, wrzuca każde słowo do DodajDoSlownika

WielkośćKlastra - liczy ilość zdań z danego hiperonimu (pierwsza kolumna) i wypisuje ją obok jego nazwy

DodajDoSlownika - Jeśli w słowniku nie ma danego słowa, to dodaje je na ostatnie miejsce w kolumnie AI, w kolumnie AH wpisuje numer słowa, a w AJ - 1

SlownikBrakSlowa - sprawdza kolumnę AI, czy jest tam podane słowo. Jeśli nie - false, zwiększa o jeden ilość wystąpień słowa w AJ.

1, AI - ilość słów w słowniku

http://dl.dropbox.com/u/60026233/Zeszyt1%20-%20Kopia.xls

1
  1. W pierwszej linijce Module1 dopisz sobie "Option Explicit".
  2. Podeklaruj zmienne.
  3. Nie wiem czy wiesz, ale domyślnie VBA przekazuje parametry ByRef, nie ByVal. Akurat tutaj nie zmieniasz zawartości zmiennej wewnątrz funkcji, ale tak wspominam, bo można mieć przykrą niespodziankę.
    (To powyższe to oczywiście niby nie wymagane, ale ja osobiście mam alergię na taki kod. Poza tym prościej debugować, gdy wiadomo, że chociaż w tym zakresie nie ma konfliktów.)

Excel 2003. Procedura wywoływana z innej procedury (Leksem) nie zawsze działa. Poza tym nie działa jak trzeba, a wydaje mi się, że nie ma błędów.

  1. Co to znaczy, nie zawsze działa? Nie odpala się? Breakpointy stawiałeś sobie? Nie ma bata, żeby się nie odpalała. Choć fakt, że nie wiem jak ty to odpalasz - ja przez F5. Co to znaczy "z innej procedury"? Nie widzę w tym szablonie innej procedury, która wywoływałaby Leksemy.
  2. Co to znaczy "nie działa jak trzeba"? Opisz to błędne działanie, przecież nie będę ci pisać testów, żeby się dowiedzieć :/
0

Na forum o VBA podpowiedzieli mi, żebym pododawał spacje na końcach grup l eksemów - miałem taki kod, który ostatniego słowa nie dodawał do słownika. Teraz działa, ale dlaczego to w ogóle się czasami włączało? :) Dzięki za info.

1 użytkowników online, w tym zalogowanych: 0, gości: 1