[ anon70939 @ 06.11.2014. 17:50 ] @
Nasao sam neki nacin koji funkcionise, sa nekom intersect i target funkcijom, ali to mi funkcionise samo ako rucno unesem bas u tu celiju rezultat.

Meni treba sledece:

Imam kolonu A i B.

Kolona A je prazna, kolona B je neka formula koja vlookup-om po kriterijumu iz kolone A trazi neki rezultat sa nekog drugog sheet-a.
Kada unesem u neku celiju u koloni A neku vrednost, a rezultat u koloni B bude 0, tada treba da dobijem poruku u msgbox "Šifra ne postoji, molim proverite ponovo".

Ako mora neka petlja koja bi mozda usporila unos, nije mi bitno da bude cela kolona. Moze recimo od B2 do B100.

Guglam vec sat vremena, ne nalazim nikakvo resenje
[ anon70939 @ 07.11.2014. 06:44 ] @
Resih nekako sa ovim
Code:

Private Sub Worksheet_Change()
Dim celija As Integer
Dim i As Integer
 i = 2
 celija = Cells(i, 3)
Do Until Cells(i, 1).Value = ""
   If (celija = 0) Then
           MsgBox "Šifra ne postoji u bazi. Proverite još jednom!"
  Else
  End If
      
    i = i + 1
    Loop
End Sub


Verujem da postoji neko pismenije rešenje, ali i ovo za sada funkcioniše



edit:
Sad me zeza nešto, ne znam šta treba da stoji gore u zagradicama :)

Dobijam poruku
Citat:
Compile error:
Procedure declaration does not match description of event or procedure having the same name


editedit
Ovo mi konacno radi super
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim celija As String
Dim i As Integer
i = 2
 
Do Until Cells(i, 1).Value = ""
   celija = Cells(i, 8).Value
   If (celija = "0") Then
MsgBox "Šifra ne postoji u bazi. Proverite još jednom!"
Else
End If
      
i = i + 1
Loop
End Sub


Al se ispricah lepo sam sa sobom :D:D

[Ovu poruku je menjao CoyoteKG dana 07.11.2014. u 08:59 GMT+1]
[ djoka_l @ 07.11.2014. 08:18 ] @
Ala si zakomplikovao.

Procedura Worksheet_Change već dobija range koji je promenjen. Ne moraš da kontrolišeš celu kolonu, nego samo promenjenu vrednost

Code:

Sub Worksheet_Change(ByVal Target As Range)

    If Target.Column = 2 Then
        If Target.Value = 0 Then MsgBox "Ne postoji šifra koju ste uneli!"
    End If
End Sub
[ anon70939 @ 07.11.2014. 09:36 ] @
To mi deluje kao sjajno resenje, ali mi ne funkcionise

Sa Target.column, navodim kolonu u kojoj se desila promena?

U tvom slucaju bila bi kolona B?

A u mom slucaju bih morao da promenim code u
Code:

Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Column = 8 Then
        If Target.Value = 0 Then MsgBox "Ne postoji šifra koju ste uneli!"
    End If
End Sub


Ne dobijam nista.

Evo da bude jasnije.

Kada unosim sifre u kolonu A, pomocu vlookup funkcije mi sa nekog drugog sheet-a unosi rezultate u kolonu H.
Ako ja rezultat 0, onda treba da dobijem poruku.



U pocetku kad sam guglao, prvo sto sam dobijao jeste ta target funkcija.
Ali to se svodilo, ako rucno bas u toj koloni promenim celiju na 0, onda dobijem msgbox.
Problem je sto nulu ne unosim rucno, nego nju dobijam formulom u totalno drugoj koloni
[ djoka_l @ 07.11.2014. 10:20 ] @
Target nije funkcija nego argument procedure Worksheet_Change tipa Range.

Sada je jasnije, ovo radi:

Code:

Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
     If Cells(Target.Row, 8).Value = 0 Then MsgBox "Ne postoji šifra koju ste uneli!"
End If

End Sub


Dakle, samo kada se promeni vrednost u koloni A (Target.Column=1), ispitati da li se ćelija u istom redu (Target.Row), u koloni H (8) promenila na 0.
[ Jpeca @ 07.11.2014. 10:25 ] @
Target je adresa ćelije koja se menja, dakle u tvom slučaju kolona 1
Da proveriš vrednost u osmoj koloni koristiš

Target.Offset (ColumnOffset:=7)

Code:

Private Sub Worksheet_Change(ByVal Target As Range)
' Poruka ako je nakon unosa u prvoj koloni vrednost u osmoj koloni 0
'
    If Target.Column = 1 Then
        If Target.Offset(ColumnOffset:=7).Value = 0 Then MsgBox "Ne postoji šifra koju ste uneli!"
    End If
End Sub


Inače za proveru šifara već postiji Data Validation opcija u Excelu. Postaviš validaciju u prvoj koloni na List, =sifre (imenovan opseg sa listom šifara) i poruku koju hoćeš
[ djoka_l @ 07.11.2014. 10:32 ] @
Jpeca je bio samo malo sporiji

Ono što još možeš da proveriš je da li je Target.Count > 1, tj. ako promeniš više od jedne ćelije (recimo obrišeš vrednosti cele kolone) da se ne validira dalje vrednost u H koloni...
[ anon70939 @ 07.11.2014. 12:25 ] @
Sjajno resenje! :)

Sad mi je mnogo smesno ono sto sam ja napravio sa svojim nikakvim znanjem.