Piezīmes
Lai piekļūtu šai lapai, ir nepieciešama autorizācija. Varat mēģināt pierakstīties vai mainīt direktorijus.
Lai piekļūtu šai lapai, ir nepieciešama autorizācija. Varat mēģināt mainīt direktorijus.
| Funkcijas | Attiecas uz |
|---|---|
| Error IfError IsError |
|
| IsBlankOrError |
|
Konstatē kļūdas un nodrošina alternatīvu vērtību vai veic darbības. Izveidojiet pielāgotu kļūdu vai izejiet cauri kļūdai.
Piezīmes
Ja programma sadaļā Iestatījumu atjauninājumi ir izņemti, programma ir atspējojusi formulas>līmeņa kļūdu pārvaldības>līdzekli, šīs funkcijas nedarbosies pareizi.
IfError
Funkcija IfError pārbauda vērtības, līdz atrod kļūdu. Ja funkcija atklāj kļūdu, tā izvērtē un atgriež atbilstošo aizstāšanas vērtību un pārtrauc turpmāku vērtēšanu. Noklusējuma vērtību var arī nodrošināt gadījumā, ja nav atrastas kļūdas. Struktūra ir līdzīga funkcijas If struktūraiIfError: IfError pārbauda kļūdas, bet If pārbauda patiesību.
Izmantojiet IfError , lai aizstātu kļūdu ar derīgu vērtību, lai varētu turpināt pakārtotos aprēķinus. Piemēram, izmantojiet šo funkciju, ja lietotāja ievade var izraisīt dalīšanu ar nulli:
IfError( 1/x, 0 )
Šī formula atgriež 0 , ja vērtība ir x nulle, kā rezultātā 1/x rodas kļūda. Ja x nav nulle, tad tiek atgriezta 1/x.
Turpmākas apstrādes pārtraukšana
Saķēdējot formulas kopā uzvedības formulās, piemēram:
Patch( DS1, ... );
Patch( DS2, ... )
Otrā Patch funkcija DS2 tiks izmēģināta, pat ja Patch funkcija pret DS1 neizdodas. Kļūdas tvērums tiek ierobežots līdz katrai ķēdē esošajai formulai.
Izmantojiet IfError , lai veiktu darbību un turpinātu apstrādi tikai tad, ja darbība bija veiksmīga. Piemērojot IfError šo piemēru:
IfError(
Patch( DS1, ... ), Notify( "problem in the first action" ),
Patch( DS2, ... ), Notify( "problem in the second action" )
)
Ja funkcijai DS1 rodas problēma, vispirms tiek izpildīta Notify. Netiek veikta tālāka apstrāde, tostarp otrā DS2. Ja pirmā Patch izdodas, tiks veikta otrā Patch.
Ja tas tiek nodrošināts, tiek atgriezts neobligātais arguments DefaultResult, ja nav atklātas kļūdas. Bez šī argumenta tiek atgriezta argumenta pēdējā Vērtība.
Pamatojoties uz pēdējo piemēru, var pārbaudīt atgriezto vērtību no IfError , lai noteiktu, vai nav radušās problēmas:
IfError(
Patch( DS1, ... ), Notify( "problem in the first action" ); false,
Patch( DS2, ... ), Notify( "problem in the second action" ); false,
true
)
Veidu saderība
IfError Atgriež viena argumenta vērtību. Visu vērtību tipiem, kurus var atgriezt, IfError jābūt saderīgiem.
Pēdējā piemērā funkcija Patch atgriež ierakstu, kas nav saderīgs ar Būla formām, kas tiek izmantotas aizstāšanasformulām vai noklusējuma rezultātam . Kas ir labi, jo nav situācijas, kad atgrieztā vērtība no šiem Patch zvaniem tiktu atgriezta ar IfError.
Piezīmes
Kamēr darbība notiek izmaiņu procesā, visu argumentu IfError veidiem ir jābūt saderīgiem šobrīd.
Vienkāršajā iepriekš aprakstītajā piemērā:
IfError( 1/x, 0 )
Abu tipu skaitļi 1/xun 0 bija saderīgi, jo tie bija skaitļi. Ja tā nav, otrais arguments tiek piespiests, lai tas atbilstu pirmā argumenta tipam.
Excel displejs #DIV/0! ja notiek dalīšana ar nulli.
Tā vietā apsveriet IfError sekojošo:
IfError( 1/x, "#DIV/0!" )
Augstākminētā formula nedarbojas. Teksta virkne "#DIV/0!" tiek piespiesta uz pirmā argumenta tipu , IfErrorkas ir skaitlis. Rezultāts IfError ir vēl viena kļūda, jo teksta virkni nevar piespiest. Kā labojumu konvertējiet pirmo argumentu par teksta virkni, lai IfError vienmēr atgrieztu teksta virkni:
IfError( Text( 1/x ), "#DIV/0!" )
Kā redzams iepriekš, var atgriezt kļūdu, IfError ja Replacement vai DefaultResult ir kļūda.
Pirmā kļūda / Visas kļūdas
Aizvietošanas formulās informācija par atrastajām kļūdām ir pieejama ierakstā FirstError un tabulā AllErrors. AllErrors ir kļūdu informācijas ierakstu tabula, kurā FirstError ir saīsne uz šīs tabulas pirmo ierakstu. FirstError vienmēr atgriež tādu pašu vērtību kā First(AllErrors ).
Error Ieraksti ietver:
| Kolonna | Tipi | Apraksts |
|---|---|---|
| Laipns | ErrorKind uzskaitījums (skaitlis) | Kļūdas kategorija. |
| Ziņa | Teksta virkne | Ziņojums par kļūdu, piemērots rādīšanai gala lietotājam. |
| Avots | Teksta virkne | Vieta, kurā radās kļūda, kas tiek izmantota atskaišu rādīšanā. Piemēram, formulai, kas saistīta ar vadīklas rekvizītu, šī vērtība ir formā ControlName.PropertyName. |
| Novērota | Teksta virkne | Vieta, kurā kļūda tiek rādīta lietotājam, lietota atskaitēm. Piemēram, formulai, kas saistīta ar vadīklas rekvizītu, šī vērtība ir formā ControlName.PropertyName. |
| Detalizēta informācija | Ieraksts | Informācija par kļūdu. Pašlaik sīkāka informācija tiek sniegta tikai par tīkla kļūdām. Šis ieraksts ietver HttpStatusCode , kas satur HTTP statusa kodu, un HttpResponse , kas satur savienotāja vai pakalpojuma atbilde pamattekstu. |
Piemēram, ņemiet vērā šo formulu kā vadīklas Button rekvizītu OnSelect:
Set( a, 1/0 )
Šī formula rekvizītā OnSelect otrās vadīklas Pogai:
IfError( a, Notify( "Internal error: originated on " & FirstError.Source & ", surfaced on " & FirstError.Observed ) )
Formulas paraugs augšā ataino šo baneri, aktivizējot divas pogas pēc kārtas:
Parasti būs tikai viena kļūda, ar kuru FirstError var pietiekami strādāt. Taču ir scenāriji, kuros var tikt atgrieztas vairākas kļūdas. Piemēram, ja lietojat formulas saķēdēšanas operatoru vai funkciju Concurrent. Pat šādos gadījumos var pietikt ar FirstError ziņošanu, lai atklātu problēmu tā vietā, lai pārslogotu lietotāju ar vairākām kļūdām. Ja jums joprojām ir prasība strādāt ar katru kļūdu atsevišķi, varat izmantot tabulu AllErrors .
IsError
Funkcija IsError pārbauda kļūdas vērtību.
Atgrieztā vērtība ir Būla true vai false.
Lietošana IsError novērš kļūdas turpmāku apstrādi.
IsBlankOrError
Funkcija IsBlankOrError pārbauda tukšu vērtību vai kļūdas vērtību, un tā ir ekvivalenta Or( IsBlank( X ), IsError( X ) ).
Iespējojot kļūdu apstrādi esošajām programmām, apsveriet iespēju aizstāt IsBlank ar IsBlankOrError , lai saglabātu esošo programmu darbību. Pirms kļūdu apstrādes pievienošanas tika izmantota tukša vērtība, lai attēlotu gan nulles vērtības no datu bāzēm, gan kļūdu vērtības. Error apstrāde atdala šīs divas tukšas interpretācijas, kas var mainīt esošo programmu, kas turpina izmantot IsBlank, darbību.
Atgrieztā vērtība ir Būla patiess vai aplams.
Lietošana IsBlankOrError novērš kļūdas turpmāku apstrādi.
Izmantojiet šo funkciju, Error lai izveidotu pielāgotu kļūdu un ziņotu par to. Piemēram, jums var būt loģika, lai noteiktu vai konkrētā vērtība ir derīga jūsu kontekstam vai nē — tas nozīmē, ka problēma netiek automātiski pārbaudīta. Jūs varat izveidot un atgriezt savu kļūdu, komplektā ar Kind un Message, izmantojot to pašu ierakstu, kas aprakstīts iepriekš funkcijai IfError .
Kontekstā IfErrorizmantojiet funkciju, Error lai atkārtoti izmestu vai izietu cauri kļūdai. Piemēram, jūsu loģika var IfError izlemt, ka dažos gadījumos kļūdu var droši ignorēt, bet citos gadījumos kļūda ir svarīga, lai to nosūtītu. Vai IfErrorApp.OnError izmantojiet Error( FirstError ), lai izietu cauri kļūdai.
Funkcijai Error var arī nodot kļūdu tabulu, kā tas būtu atrodams tabulā AllErrors . Izmantojiet Error( AllErrors ), lai atkārtoti izmestu visas kļūdas, nevis tikai pirmo.
Tukšs ieraksts vai tukša tabula, kas nodota, Error nerada kļūdas.
Sintakse
Error( Kļūdas ieraksts )
Error( Kļūdu tabula )
- ErrorRecord - Obligāts. Errorinformācijas ieraksts, ieskaitot veidus, ziņojumus un citus laukus. Laipnība ir nepieciešama. FirstError var nodot tieši.
- ErrorTable - Obligāts. Kļūdu informācijas ierakstu tabula. AllErrors var nodot tieši.
IfError( Value1, Replacement1 [, value2, Replacement2, ... [, DefaultResult ] ] )
- Vērtības – Obligāts. Formula(-s), kurai pārbaudīt kļūdas vērtību.
- Nomaiņa- Nepieciešams. Novērtējamās formulas un atgriežamās vērtības, ja atbilstošie Vērtības argumenti atgrieza kļūdu.
- DefaultResult - neobligāts. Novērtējamās formulas, ja formula neatrod kļūdas.
IsError( Vērtība )
IsBlankOrError( Vērtība )
- Vērtība - Obligāts. Testa formula.
Piemēri
Vienkāršs IfError
| Formula | Apraksts | Rezultāts |
|---|---|---|
| IfError( 1, 2 ) | Pirmais arguments nav kļūda. Funkcijai nav citu pārbaudāmo kļūdu un nav noklusējuma atgrieztās vērtības. Šī funkcija atgriež pēdējo vērtēto vērtības argumentu. | 1 |
| IfError( 1/0, 2 ) | Pirmais arguments atgriež kļūdas vērtību (dalīšanas ar nulli dēļ). Funkcija novērtē otro argumentu un atgriež to kā rezultātu. | 2 |
| IfError( 10, 20, 30 ) | Pirmais arguments nav kļūda. Funkcijai nav citu pārbaudāmo kļūdu, taču tai ir noklusējuma atgrieztā vērtība. Funkcija atgriež DefaultResult argumentu. | 30 |
| IfError( 10, 11, 20, 21, 300 ) | Pirmais arguments 10 nav kļūda, tāpēc funkcija nevērtē šī argumenta atbilstošo aizstājēju 11. Trešais arguments 20 arī nav kļūda, tāpēc funkcija nevērtē šī argumenta atbilstošo aizstājēju 21. Piektajam argumentam 300 nav atbilstoša aizstājēja, un tas ir noklusējuma rezultāts. Funkcija atgriež šo rezultātu, jo formulā nav kļūdu. | 300 |
| IfError( 1/0, paziņot( "Bija iekšēja problēma") ) | Pirmais arguments atgriež kļūdas vērtību (dalīšanas ar nulli dēļ). Funkcija novērtē otro argumentu un parāda lietotājam ziņojumu. Atgrieztā vērtība ir IfError atgrieztā vērtība Paziņot, kas tiek piespiesta uz tādu pašu tipu kā pirmais arguments IfError (skaitlis). | 1 |
Vienkāršs IsError
| Formula | Apraksts | Rezultāts |
|---|---|---|
| IsError( 1 ) | Arguments nav kļūda. | nepatiess |
| IsError( Tukšs () ) | Arguments ir tukšs, bet ne kļūda. | nepatiess |
| IsError( 1/0 ) | Arguments ir kļūda. | patiess |
| If( IsError( 1/0 ), Notify( "Bija iekšēja problēma" ) ) | Arguments to IsError atgriež kļūdas vērtību (dalot ar nulli). Šī funkcija atgriež patiess, kas liek funkcijai If parādīt ziņojumu, izmantojot funkciju Notify. Atgrieztā If kļūdas vērtība ir Notify atgrieztā vērtība, kas piespiesta tādam pašam veidam kā pirmais arguments funkcijai If (Būla vērtība). | patiess |
Vienkāršs IsBlankOrError
| Formula | Apraksts | Rezultāts |
|---|---|---|
| IsBlankOrError( 1 ) | Arguments nav tukšs un nav kļūda. | nepatiess |
| IsBlankOrError( Tukšs () ) | Arguments ir tukšs. | patiess |
| IsBlankOrError( 1/0 ) | Arguments ir kļūda. | patiess |
Vienkāršs Error
Šajā piemērā datumi tiek validēti attiecībā cits pret citu, kā rezultātā rodas kļūda, ja rodas problēma.
If( StartDate > EndDate,
Error( { Kind: ErrorKind.Validation, Message: "Start Date must be before End Date" } ) )
Šajā piemērā dažām kļūdām ir atļauts iziet cauri, bet citas tiek apspiestas un aizstātas ar vērtību. Pirmajā gadījumā b ir kļūdas stāvoklī, jo funkcijai Value ir nederīgs arguments. Tā kā formulu rakstītājs to negaidīti izmanto, tas tiek nodots cauri, lai lietotājs to redzētu. Otrajā gadījumā ar to pašu formulu b ir vērtība 0, kā rezultātā tiek dalīts ar nulli. Šajā gadījumā formulas autors, iespējams, zina, ka šī loģika ir jutīga attiecībā uz šo loģiku, slāpē kļūdu (netiek rādīts neviens baneris) un tā vietā jāatgriež -1.
With( {a: 1, b: Value("a")},
IfError( a/b, If( FirstError.Kind <> ErrorKind.Div0, Error( FirstError ), -1 ) ) )
// returns an error with Kind = ErrorKind.InvalidArgument
With( {a: 1, b: 0} )
IfError( a/b, If( FirstError.Kind <> ErrorKind.Div0, Error( FirstError ), -1 ) ) )
// returns -1
Tabulu AllErrors var filtrēt tāpat kā jebkuru citu tabulu. Izmantojot šo Error funkciju, paredzamās kļūdas var noņemt, bet atlikušās kļūdas saglabāt un ziņot. Piemēram, ja mēs zinātu, ka dalīšana ar nulli nebūs problēma konkrētā kontekstā, šīs kļūdas varēja filtrēt, atstājot visas pārējās kļūdas neskartas ar šādu formulu:
Error( Filter( AllErrors, Kind <> ErrorKind.Div0 ) )
Pakāpeniskas darbības
Pievienojiet Text input vadīklu un nosauciet to par TextInput1, ja tai pēc noklusējuma nav šāda nosaukuma.
Pievienojiet Label vadīklu un nodēvējiet to par Label1, ja tai pēc noklusējuma nav šāda nosaukuma.
Iestatiet Etiķetes1rekvizītu Teksts uz:
IfError( Value( TextInput1.Text ), -1 )TextInput1 ievadiet 1234.
Label1 parāda vērtību 1234 , jo tā ir derīga ievade funkcijai Vērtība.
TextInput1 ievadiet ToInfinity.
Label1 parāda vērtību-1 , jo tā nav derīga ievade funkcijā Vērtība. Neaptverot funkciju Value ar IfError, etiķete nerādīs vērtību, jo kļūdas vērtība tiek uzskatīta par tukšu.