Microsoft Office Excel
uređuje Dragan Grbić

Bookmark and Share
Matična strana sajta
  Novo na sajtu
  Mapa sajta
  Beleške
  Kontakt
  Pretraga MSKB

 Blog Praktikuma
  RSS feed
  P@W @Tw

  Izvezi stranicu u PDF
 
Office Praktikum

Još o Excelu
 


Skoro svakodnevno slušamo
  Radio Paradise:
  eklektični muzički online radio bez reklama!
 

 
       

Sponzori sajta

SBB CS 1.6 game server: 82.117.200.1
 
Connectivity by SBB

 


 

Informacije

NOVOSTI

I još dva nova priloga o Excelu
Novi prilozi o Wordu
Novi i prilozi u temi "razno o Officeu"
Novi članci o novostima u Officeu 2010!

SADRŽAJI ZA PREUZIMANJE

Lokalizacija Total Commandera 7.51Obe jezičke školjke za popularni program na srpskom sad funkcionišu u bilo kojoj varijanti Windowsa!
RNDalica.ExcelDodatak za Excel 2007/2010 za generisanje slučajnih podataka!
YuConv.ExcelDodatak za Excel 2007/2010 za konverziju pisama!
YuConvNetDodatak za Word 2007/2010 za konverziju pisama i kodnih rasporeda!

SKREĆEMO PAŽNJU

Kako pretraživati MSKB
a pronaći ćete i još mnogo novih sadržaja...

KONTAKT

Da li znate za pravila koja važe pri kontaktu sa nama? Molimo vas da se obavestite o tome!
 
POZIVAMO VAS

i prenesite svoja iskustva. Najbolji prilozi će biti objavljeni.

  (C) 2000-2010 Praktikum na Webu
 

Restrikcija unosa teksta

Nivo:  NIVO 3 - klinite za objašnjenje


Excel je, naravno, prevashodno krckalica brojeva, pa su alatke za kontrolisani unos numeričkih vrednosti dobro razvijene. Međutim, šta raditi kada treba ograničiti unos tekstualnog sadržaja? Alatka za validaciju unosa tada nije baš od pomoći...

Pre nekog vremena, na SezamProu je postavljeno pitanje o mogućnostima restrikcije unosa na radni list u Excelu. Opšte pitanje uvek završava i opštim odgovorom: postoji bar nekoliko mehanizama kontrole unosa sadržaja, što zavisi od organizacije podataka, mogućnosti standardnih alata i vaših posebnih potreba. Sistem Data Validation je u velikoj većini slučajeva sasvim dovoljan mehanizam zaštite pri unosu numeričkih sadržaja; tu se mogu definisati i razne opcije ponašanja pri uočenoj grešci kriterijuma.

Međutim, ta alatka iskazuje slabost kada je reč o unosu tekstualnih sadržaja: jedina predviđena kontrola unosa je dužina teksta. Moguće je i postavljanje formule u opciji Custom, ali ponekad nije lako napraviti formulu koja će ograditi skup dozvoljenih ili nepoželjnih unosa. U konkretnom slučaju jednog kolege, pribegli smo sasvim uobičajenom rešenju, kojeg se neki početnici pomalo plaše, ali bez razloga - izvedena je procedura događaja na radnom listu koja proverava upravo uneti tekst, a potom reaguje na nepoželjni unos.

Kasnije sam malo razvio taj postupak na proizvoljni opseg "prostora zabrane" i na niz "zabranjenih" stringova. Sledeći makro unesite u VBE u modul radnog lista (dupli klik na željeni radni list u oknu Project).

Private Sub Worksheet_Change(ByVal Target As Range)

On Error Resume Next

' elementi zabrane
' prostor u kome funkcioniše zabrana
Set prostor = Range("A1:A5, C1:C5")
' stringovi koji čine zabranu
zabrana = Array("PON", "UTO", "SRE", "ČET", "PET")

Set presek = Application.Intersect(prostor, Target)
unos = UCase(Target.Value)

' ispitivanje zabrane
For Each teskt In zabrana
  If Not (presek Is Nothing) And unos = teskt Then
    MsgBox "NE MOŽE " & unos
    Target.Select
    Target.Value = ""
    Exit For
  End If
Next

End Sub

Izvedeni scenario je sledeći: klauzula Set Prostor okuplja opsege ćelija u kojima važi zabrana (obojite te ćelije drugom bojom, da vam bude lakše). Niz konstanti zabrana sadrži proizvoljni broj stringova čiji unos želite da sprečite. U primeru sam zamislio da unosite prva tri slova imena dana, a ako je to jedan od pet radnih dana, to će se smatrati pogrešnim. Taj sadržaj je napisan velikim slovima kako bi se u pitalici eliminisale razlike u načinu unosa na radni list (funkcija UCase rešava pitanje drugog člana klauzule If).

Vama preostaje samo da definišete elemente zabrane po svom nahođenju, a procedura događaja će odsad brinuti gde da šta unesete. Naravno, ovo jezgro se može razviti tako da se istovremeno ili posebno ispitaju i dozvole pri unosu teksta, pa dobijamo tek neznatno drugačiji kod, recimo poput ovog:

Private Sub Worksheet_Change(ByVal Target As Range)

On Error Resume Next

' elementi dozvole
' prostor u kome funkcioniše dozvola
Set prostor = Range("A1:A5,C1:C5,F1:F5")
' stringovi koji čine dozvolu
dozvola = Array("PON", "UTO", "SRE", "ČET", "PET")

Set presek = Application.Intersect(dozvola, Target)
unos = UCase(Target.Value)

' ispitivanje dozvole
For Each teskt In dozvola
  If presek Is Nothing And unos = teskt Then
    MsgBox "NE MOŽE " & unos
    Target.Select
    Target.Value = ""
    Exit For
  End If
Next

End Sub

 

  (C) 2000-2010 Praktikum na Webu

PC 86


 
 

Vrh stranice  Prethodna stranica  Naslovna strana  Mapa sajta  Pretraga

AFORIZAM ZA DANAS OVIH DANA SLUŠAMO...

Copyright © Praktikum na Webu, 2000-2010; Valinor Design; sva prava pridržana.