Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Excel - VBA - jak ošetřit # v makru

Dobrý den.
Prosím o pomoc s následujícím skriptem.

Při zpracování tabulky končí některé řádky hodnotou #NENÍ_K_DISPOZICI v buňce. Já potřebuji tyto řádky makrem vyhledat a vymazat. Sloupec s chybovou hodnotou buňky #NENÍ_K_DISPOZICI vložím do jiného jako hodnotu a tím dostanu v buňce místo chyby #NENÍ_K_DISPOZICI text #NENÍ_K_DISPOZICI.

Problém je v tom, že # je náhradní znak pro numeriku a když chci obsah buňky otestovat, tak test končí chybou "type mismatch".

Je možné v testu nějak význam znaku # potlačit aby skript fungoval?

Sub maz_nenalezene()
     ActiveCell.Range("A1:A1").Select
    Selection.EntireRow.Delete
    ActiveCell.Select
End Sub

Sub Vymaz_nenalezene()
    ActiveCell.SpecialCells(xlLastCell).Select
    Selection.End(xlToLeft).Select
    Selection.End(xlUp).Select
    ActiveCell.Offset(1, 0).Range("A1").Select
    posledni = ActiveCell.Row - 1
    Range("E2").Select
    For beh = 1 To posledni
        If ActiveCell.Value = "#NENÍ_K_DISPOZICI" Then
          maz_nenalezene
        Else
          ActiveCell.Offset(1, 0).Range("A1").Select
        End If
    Next
End Sub
Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
no a ak ti funguje zvyšok kódu čo máš (mne sa zdá čudný), tak miesto If ActiveCell.Value = "#NENÍ_K…
robert13 05.09.2014 12:09
robert13
a dokonca stačí aj: If IsError(ActiveCell) Then
robert13 05.09.2014 12:14
robert13
Děkuji, toto je plně funkční. Funkce iserror(funkce) na to použít nešla. JE.CHYBA Hodnota odkazuje…
yorg 05.09.2014 12:54
yorg
neviem, či je jasné, že pod pojmom "funkce" som chápal zápis TEJ funkcie, ktorá je vpísaná do bunky…
robert13 05.09.2014 13:35
robert13
alebo som špatne pochopil, že #NENÍ_K_DISPOZICI nie je zachytená ako chyba??? nový
robert13 05.09.2014 13:40
robert13
Ten řádek "JE.CHYBA (iserror) Hodnota odkazuje na libovolnou chybovou hodnotu kromě #NENÍ_K_DISPOZIC… nový
yorg 05.09.2014 22:56
yorg
Sorry ale nejde mi do hlavy aby to Excel vo svojom vzorci nevyhodnotil ako chybu, keď to VBA ako chy… nový
robert13 06.09.2014 13:54
robert13
Problém je ve vyhodnocující funkci. Předpokládal jsem, že funkce IsError by měla být v české verzi J… nový
yorg 08.09.2014 08:05
yorg
Rozumiem, šlo o dve rozne funkcie: je.chyba (iserr) = nevyhodnotí ako chybu je.chybhodn (iserror) =… nový
robert13 08.09.2014 15:35
robert13
Taky díky za pomoc. poslední
yorg 09.09.2014 19:36
yorg

neviem, či je jasné, že pod pojmom "funkce" som chápal zápis TEJ funkcie, ktorá je vpísaná do bunky a vracia chybovú hodnotu!

Keďže neviem, aká funkcia ti vracia tú chybovú hodnotu, nemohol som ti ju ani priamo napísať, preto som miesto naj napísal len všeobecne "funkce"

Pretože to MUSÍ fungovať ;)

Tam malo byť NAPR: iserror(vlookup(A1;D1:F500;2;false))
a ja som musel zjednodušene napísať iserror (funkce)

rozumieme sa? ;)

Vyskúšaj, aj to sa zíde ;)

Ten řádek "JE.CHYBA (iserror) Hodnota odkazuje na libovolnou chybovou hodnotu kromě #NENÍ_K_DISPOZICI." je z nápovědy. Skutečně při tom hlášení nedojde k zachycení chyby.

A ono to skutečně chyba není i když to má podobný formát zápisu. Je to výsledek funkce SVYHLEDAT (mám český office a eng názvy funkcí bohužel neznám) v případě, že je nastaven typ 0 a v prohledávané tabulce požadovaný záznam není.

Tvé řešení s If IsError(ActiveCell) Then mi pomohlo a už to funguje jak potřebuji.

Dík.

Sorry ale nejde mi do hlavy aby to Excel vo svojom vzorci nevyhodnotil ako chybu, keď to VBA ako chybu vyhodnotí...
Preto som si to odskúšal a mne to funguje aj vo vzorci v Exceli.
Prikladám súbor s dôkazom, máš to tam ošetrené aj s funkciou IsError aj s funkciou IfError
A zhodou okolností som v predošlej mojej odpovedi, kde som upresňoval ako je myslený výraz "funkce", tiež použil funkciu Svyhledat (Vlookup).

Ty keď otvoríš tento súbor, tvoja verzia bude mať názvy funkcií už preložené do češtiny, tak uvidíš, ktoré funkcie som tam použil.

Ale dôležité je, že ti to cez VBA vyriešilo to, čo potrebuješ.

Aj tak uvítam info o tom, prečo si vyššie písal, že ti to nešlo, keď podľa priloženého súboru to ide... Len sme si nerozumeli?
Je pravda, že som možno nenavodil stav, kedy dáva hlášku NENI K DISPOZICI, lebo mne pre tento príklad vracia NEDOSTUPNY.
Pre aký prípad vracia hlášku NENI K DISPOZICI?

Problém je ve vyhodnocující funkci.
Předpokládal jsem, že funkce IsError by měla být v české verzi JE.CHYBA. Ty ve svém příkladě ale používáš pro test českou funkci JE.CHYBHODN a ta už na #NENÍ_K_DISPOZICI reaguje. JE.CHYBA ne.
Druhý problém je má nepozornost. Nevšiml jsem si že používáš jak funkci iserror, tak i iferror.

Hlášku #NENÍ_K_DISPOZICI vrací funkce SVyhledat, když požadovaný údaj ve druhé tabulce nenalezne. Viz příloha.

Zpět do poradny Odpovědět na původní otázku Nahoru