Novo

Forum kao aplikacija na telefonu

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

  • 8 odgovora
  • 3.415 pregleda

Najnovija ↓

VBA (Macro) greška 1004 14.03.2016. u 14:57 · pre 129 meseci #1
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.
Re: VBA (Macro) greška 1004 14.03.2016. u 15:11 · pre 129 meseci #2
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.
Re: VBA (Macro) greška 1004 16.03.2016. u 07:53 · pre 129 meseci #3
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.
Re: VBA (Macro) greška 1004 16.03.2016. u 09:23 · pre 129 meseci #4
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

Re: VBA (Macro) greška 1004 16.03.2016. u 10:03 · pre 129 meseci #5
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:="..."

Potpis
Nije to loše Rembrante, samo što ne bi dodao još malo boje?
Re: VBA (Macro) greška 1004 16.03.2016. u 17:37 · pre 129 meseci
izmenjeno 1 put, poslednji put pcpopovic 16.03.2016. u 17:48
  1. pcpopovic16.03.2016. u 17:48zapis iz teksta poruke
#6
@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?
Re: VBA (Macro) greška 1004 16.03.2016. u 17:44 · pre 129 meseci #7
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.
Re: VBA (Macro) greška 1004 16.03.2016. u 20:11 · pre 129 meseci #8
@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!
Re: VBA (Macro) greška 1004 18.03.2016. u 17:08 · pre 129 meseci #9
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.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme