[ pcpopovic @ 14.03.2016. 13:57 ] @
Koristim Makro (VBA kod) za datume:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim cl As Range
Application.ScreenUpdating = False
Set Rng = ThisWorkbook.Worksheets("Promet").Range("B4:B203")
For Each cl In Rng
If cl.Text <> "" And cl.Formula <> cl.Text Then
cl.Formula = cl.Text
End If
Next cl
Application.ScreenUpdating = True
End Sub


U delu (liniji):

If cl.Text <> "" And cl.Formula <> cl.Text Then ’ Obojeno je žutom bojom

mi javlja grešku (1004).

Formula (funkcija) na koju se odnosi ovaj kod je =IF(C4<>"";TODAY();"")
Šta se dešava?

Da li je ovo moguće? Primetio sam da se ovo javlja kad zaključam radni list.
[ pcpopovic @ 14.03.2016. 14:11 ] @
Da. Definitivno se javlja kada je radni list na koga se odnosi ovaj Macro zaključan (zaštićen) i kada hoče da se zapamti ("Save"), nešto (neka promena) što je u vezi tog Macro-a.
Kada List nije zaklučan ova greška se ne javlja.
[ pcpopovic @ 16.03.2016. 06:53 ] @
Ako nema pomoći... Da li može pomoć za ovo:

Private Sub CommandButton1_Click()
’ Kada pritnem dugme da mi se sve ćelije na Sheet-u "Promet" u opsegu ćelija (Range) B2:B10,
’ koje imaju broj veći od 0 i
’ koje imaju funkciju (formulu) - pretvore u statičnu vrednost (Value)
End Sub


I da li da Makro napišem u određenom "Sheet"-u ili u "ThisWorkbook"-u?

Dugme znam napraviti i znam mu dodeliti Makro.
[ Ivek33 @ 16.03.2016. 08:23 ] @
Citat:
pcpopovic
’ koje imaju broj veći od 0 i
’ koje imaju funkciju (formulu) - pretvore u statičnu vrednost (Value)
Ne vidim razloga da konvertiraš samo određene ćelije >0
No probaj ovaj VBA macro u Sheet module
Code:
Private Sub Worksheet_Calculate()
    Dim A As Range, r As Range
    Set A = Range("A1:A10")
    For Each r In A
        If r.HasFormula And r.Value > 0 Then
            r.Value = r.Value
        End If
    Next r
End Sub

Ako hoćeš da se formule konvertiraju na tvoj zahtjev tada izbriši prefix Private i postavi Sub Worksheet_Calculate pa ga pokreni preko buttona

[ Jpeca @ 16.03.2016. 09:03 ] @
Prvo pitanje - već je bio odgovor na forumu http://www.elitesecurity.org/t334370-0#2033786. Na žalost ja ne mogu da pristupim linku koji se tu navodi.

Uglavnom ako je problem sa izmenom na protektovanom listu, rešenje je da se u makrou izvši otključavanje lista pre koda i zaključavanje (opet) na kraju
Code:
' Otključavanje lista 
ThisWorkbook.Worksheets("Promet").Unprotect Password:="..."

'Tvoj makro 

' Ponovno zaključavanje
ThisWorkbook.Worksheets("Promet").Protect Password:="..."

[ pcpopovic @ 16.03.2016. 16:37 ] @
@Ivek33
To je to.

Code:
Private Sub Worksheet_Calculate()
Dim A As Range, r As Range
Set A = Range("A1:A10")
For Each r In A
If r.HasFormula And r.Value > 0 Then
r.Value = r.Value
End If
Next r
End Sub

Samo jedna dopuna mog pitanja. Pošto imam određeni uslov, ato je: u kom trenutku, da se formula pretvori u "Value". Gde i šta napisati da se procedura izvrši tek kada ćelija (recimo u koloni "H" i - naravno, u istom redu) ne bude prazna ili bude veća ili manja od nule?


[Ovu poruku je menjao pcpopovic dana 16.03.2016. u 17:48 GMT+1]
[ pcpopovic @ 16.03.2016. 16:44 ] @
Citat:
Jpeca:
Prvo pitanje - već je bio odgovor na forumu http://www.elitesecurity.org/t334370-0#2033786. Na žalost ja ne mogu da pristupim linku koji se tu navodi.

Uglavnom ako je problem sa izmenom na protektovanom listu, rešenje je da se u makrou izvši otključavanje lista pre koda i zaključavanje (opet) na kraju
Code:
' Otključavanje lista 
ThisWorkbook.Worksheets("Promet").Unprotect Password:="..."

'Tvoj makro 

' Ponovno zaključavanje
ThisWorkbook.Worksheets("Promet").Protect Password:="..."



Ne uspevam. Kod mi ima grešku kada napišem ili mi VBA deli kod na dva dela. Može li kompletan zapis. Evo Ti šaljem moj kod:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim cl As Range
Application.ScreenUpdating = False
Set Rng = ThisWorkbook.Worksheets("Promet").Range("B4:B203")
For Each cl In Rng
If cl.Text <> "" And cl.Formula <> cl.Text Then
cl.Formula = cl.Text
End If
Next cl
Application.ScreenUpdating = True
End Sub

Kako ovde ubaciti "Unprotect" i "Protect"? Hvala i pozdrav.
[ pcpopovic @ 16.03.2016. 19:11 ] @
@Jpeca
Uspeo sam. Nema više greške "1004".

@Ivek33
Ovo sam namestio da radi sa "Dugmetom". Samo je ostalo ono pitanje (od malopre). Kako to namestiti (automatizovati) da radi bez kontrole "Dugmeta" (u pozadini), ali uz poseban uslov ispunjenosti određene ćelije?

Pozdrav i Hvala!
[ pcpopovic @ 18.03.2016. 16:08 ] @
Kako da sledeći primer koda:

Private Sub Worksheet_Calculate()
Dim A As Range, r As Range
Set A = Range("A1:A10")
For Each r In A
If r.HasFormula And r.Value > 0 Then
r.Value = r.Value
End If
Next r
End Sub


napišem tako da mi se funkcija u ćeliji A1 pretvori u podatak (value) - ne u, bilo kom, momentu kad postane "<> 0", nego kad (recimo) ćelija C1, koja je formatirana kao broj, bude - "ne prazna ("<> "")" ili "<> 0"? Pozdrav.