[ backspin @ 18.09.2008. 15:23 ] @
Pozdrav !
Nisamo naisao na nista slicno pa molim pomoc.


TRebao bih makro koji ce u ovisnosti o vrijednosti u celiji ispod nje umetnuti novi red ( radi se o office-u 2003)

Npr:

Ako je vrijednost u A4 razlicita od 3:30- umetni novi red ispod nje
Ako je vrijednost u A5 razlicita od 4:00- umetni novi red ispod nje...
Ako je vrijednost u A5 razlicita od 4:30- umetni novi red ispod nje...
i tako do A48

Hvala svima !
[ Jpeca @ 20.09.2008. 12:32 ] @
Umetanje reda obavlja se komandom
Code:
c.EntireRow.Insert 

gde je c neka ćelija
Međutim, na ovaj način umeće se red iznad ćelije c. Ako hoćeš ispod možeš da se pozicioniraš preko Offset metode na jednu ćeliju ispod posmatrane ćelije c i onda umetneš red
Code:
c.Offset(1).EntireRow.Insert

Dakle potprogram koji umeće jedan red
Code:
Sub UmetniRed(c As Range, strUslov As String)
' Ukoliko je u celiji c zadati tekst
' Umece red ispod
'
If c.Text = strUslov Then
  c.Offset(1).EntireRow.Insert
End If
End Sub

E sad, potrebno je u petlji za zadate redove pozvati ovaj potrprogram, ali ne znam kako formiraš uslov. Nisam ni razumeo da li je 3:30 tekst ili vreme (numerički podatak)? Najbolje bi bilo da postaviš kratak primer početne situacije i šta hoćeš da postigneš pa da dovršimo ovaj makro.
[ gvlaisavljevic @ 20.09.2008. 16:53 ] @
Trebalo bi prvo definisati celije A1,A2,...A48 unutar radnog lista,dodeliti im imena npr.VREME1,VREME2,....VREME48.
Code:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("sheet1")
Select Case Target.Address
 Case ws.Range("vreme1").Address
   If ws.Range("vreme1") <> "3:30"Then UbaciRed ws.Range("vreme1").Offset(1, 0)
 Case ws.Range("vreme2").Address
   If ws.Range("vreme2") <> "4:00" Then UbaciRed ws.Range("vreme2").Offset(1, 0)
End Select
End Sub

Sub UbaciRed(RG As Range)
RG.EntireRow.Insert
End Sub



Ovaj kod treba prosiriti da ima ukupno 48 „casa“.

[edit] dodat završni dio, /code

[Ovu poruku je menjao Ivek33 dana 21.09.2008. u 11:10 GMT+1]
[ backspin @ 23.09.2008. 10:26 ] @
Prvo hvala na odgovorima.
Na zalost nisam uspio ni sa jednim od ova dva primjera. :-/

http://rapidshare.com/files/147651350/UmetniRed.xls.html

na ovom linku se nalazi dokument, za probu.
Znaci, radi se o vremenima. od 0:00-0:00.
Ukoliko se u nekom polju ne pojavi neki interval (npr. u tom periodu se nije nista desavalo), zelim da se tocno na mjestu gdje bi inace bio interval pokaze prazno.
u ovaj primjer tablice stavio sam namjerno da nedostaju intervali
4:00-4:30
4:30-5:00

Znaci makro bi trebao odraditi umetanje 2 reda na A9.

(zato sam isao na referenciranje samo po jednog polja u redu i to onog prvog- ako A9 <> 4:00 umetni red ispod)
[ Jpeca @ 25.09.2008. 07:55 ] @
Da bi proverio uslov iz tvog primera najlakše je uporediti ćeliju sa ćelijom iznad ili ispod. Tako da sam izmenio kod i dodao petlju:
Code:

Sub Umetanje()
'Umetanje redova sa intervalom po pola sata
'gde nedostaju u nizu
'
'P.Jovanovic za elitesecurity.org

Dim r As Long, rstart As Long, rend As Long
Const cl As Integer = 1 ' Kolona koja se proverava
Dim c As Range          ' Tekuca celija
Dim sh As Worksheet

Set sh = ThisWorkbook.Sheets(1) ' List na koji se umecu redovi
rstart = 1 ' Pocetni red
rend = sh.Cells(65535, cl).End(xlUp).Row ' Broj poslednjeg popunjenog reda

 For r = rend To rstart + 1 Step -1 ' petlja od kraja
    Set c = sh.Cells(r, cl)
    If c.Value - c.Offset(-1).Value > 0.021 Then '0.020833 je priblizno pola sata
       c.EntireRow.Insert
       c.Offset(-1).Value = c.Value - 0.0208333 ' upis vrednosti u prazan red
       c.Offset(-1, 1).Value = c.Value
       r = r + 1
    End If
 Next r
End Sub


[Ovu poruku je menjao Jpeca dana 25.09.2008. u 09:10 GMT+1]
[ backspin @ 25.09.2008. 12:57 ] @
E ovo je vec super !!!! :)
hvala puno !

imam samo jedan mali problem...

primjer:
u dokumentu mi se recimo pokazu samo vremena
1:00-1:30
1:30-2:00
pa onda odmah u sljedecem redu
6:00-6:30
6:30-7:00....
itd sve do 22:30.

znaci u original dokumentu se neaktivnost uopce ne prikazuje, jednostavno ju se izostavi.
Tvoj makro je super odradio posao sa umetanjem vremena izmedju 2:00 i 6:00. to radi perfektno.
no, trebao bi umetnuti vremena
0:00-0:30
0:30-1:00 na pocetak (ispred 1:00) i
22:30-23:00
23:00-23:30
23:30-0:00 na kraj (iza 22:30)

to bi onda bilo ono sto trazim

evo, jos samo to i pomogli ste mi do neba !


[Ovu poruku je menjao backspin dana 25.09.2008. u 14:10 GMT+1]

[Ovu poruku je menjao backspin dana 25.09.2008. u 14:10 GMT+1]

[Ovu poruku je menjao backspin dana 25.09.2008. u 14:11 GMT+1]