Wpis z mikrobloga

Hej, potrzebuję pomocy z VBA. Mógłby ktoś spojrzeć dlaczego nie działa mi instrukcja on error goto w tym programie? Program wyżej zrobiłam podobnie i wszystko jest ok, tylko program trochę krótszy i mniej rozbudowany. Może tylko jedna taka instrukcja może być we wszystkich programach pisanych w danym arkuszu, ale to by było bez sensu. A może nie działa deklarowanie tej zmiennej o określonej długości znaków i dlatego nie wychwytuje błędu? I przy okazji pytanie - da się wymusić określony typ danych wprowadzany przez użytkownika poprzez InputBox? Tak, żeby mi nie wpisywał samych liczb, kiedy go pytam o miasto czy adres.

#vba #programowanie #excel

  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Jainapl: on error wykona się jedynie podczas wystąpienia błędu podczas wykonania programu. Na pewno przyjęcie danej do zmiennej string samo z siebie nie wygeneruje błędu, nawet jeśli jest to string o stałej długości (przyjęcie mniejszej ilości znaków ma gdzieś i nie jest to błąd - większej - zapewne obetnie nadmiarowe i dalej nie będzie to błąd).
Jeśli już to nip można zweryfikować odpowiednim algorytmem kontrolnym.

Poza tym współczuję, dłubać bazę
  • Odpowiedz
@Lipka91: W różnych miejscach próbowałam. Innego błędu raczej nie ma, bo bez tego działa jak powinno. Zdaje się, że chyba @stefanf ma rację i nie wykrywa tego jako błędu. Chyba nic z tym nie zrobię, bo nie mam pomysłu jak inaczej można by zrobić, żeby wywalało błąd, jak ktoś wpisze inną liczbę znaków niż 13 albo litery zamiast liczb i odwrotnie przy nazwie miasta na przykład. Ot, takie proste
  • Odpowiedz
@Jainapl:

if Len(nip2)<>13 Then goto anuluj
ogólnie tak się nie pisze w normalnych językach, goto jest antywzorcem, coś jak comic sans wśród fontów - wyklęta komenda. Spróbuj przerobić to tak aby sprawdzać długość i jeśli się zgadza iść dalej w pętlach if-else.
  • Odpowiedz