Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

Makro - ako je vrednost neke celije u koloni 0, ispisati msgbox poruku

  • 7 odgovora
  • 3.397 pregleda

Najnovija ↓

Makro - ako je vrednost neke celije u koloni 0, ispisati msgbox poruku 06.11.2014. u 18:50 · pre 145 meseci #1
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
Re: Makro - ako je vrednost neke celije u koloni 0, ispisati msgbox poruku 07.11.2014. u 07:44 · pre 145 meseci
izmenjeno 1 put, poslednji put CoyoteKG 07.11.2014. u 08:59
  1. CoyoteKG07.11.2014. u 08:59zapis iz teksta poruke
#2
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
Re: Makro - ako je vrednost neke celije u koloni 0, ispisati msgbox poruku 07.11.2014. u 09:18 · pre 145 meseci #3
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
Re: Makro - ako je vrednost neke celije u koloni 0, ispisati msgbox poruku 07.11.2014. u 10:36 · pre 145 meseci #4
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
Re: Makro - ako je vrednost neke celije u koloni 0, ispisati msgbox poruku 07.11.2014. u 11:20 · pre 145 meseci #5
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.
Sviđa mi se1
Re: Makro - ako je vrednost neke celije u koloni 0, ispisati msgbox poruku 07.11.2014. u 11:25 · pre 145 meseci #6
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š
Potpis
Nije to loše Rembrante, samo što ne bi dodao još malo boje?
Sviđa mi se1
Re: Makro - ako je vrednost neke celije u koloni 0, ispisati msgbox poruku 07.11.2014. u 11:32 · pre 145 meseci #7
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...
Sviđa mi se1
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme