Novo

Forum kao aplikacija na telefonu

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

Makro za umetanje novog reda ako je vrijednost celije jednaka "nesto"

  • 5 odgovora
  • 5.382 pregleda

Najnovija ↓

Makro za umetanje novog reda ako je vrijednost celije jednaka "nesto" 18.09.2008. u 16:23 · pre 220 meseci #1
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 !
Re: Makro za umetanje novog reda ako je vrijednost celije jednaka "nesto" 20.09.2008. u 13:32 · pre 220 meseci #2
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.
Potpis
Nije to loše Rembrante, samo što ne bi dodao još malo boje?
Re: Makro za umetanje novog reda ako je vrijednost celije jednaka "nesto" 20.09.2008. u 17:53 · pre 220 meseci
izmenjeno 1 put, poslednji put Ivek33 21.09.2008. u 11:10
  1. Ivek3321.09.2008. u 11:10zapis iz teksta poruke
#3
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
Re: Makro za umetanje novog reda ako je vrijednost celije jednaka "nesto" 23.09.2008. u 11:26 · pre 220 meseci #4
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)
Re: Makro za umetanje novog reda ako je vrijednost celije jednaka "nesto" 25.09.2008. u 08:55 · pre 220 meseci
izmenjeno 1 put, poslednji put Jpeca 25.09.2008. u 09:10
  1. Jpeca25.09.2008. u 09:10zapis iz teksta poruke
#5
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
Potpis
Nije to loše Rembrante, samo što ne bi dodao još malo boje?
Re: Makro za umetanje novog reda ako je vrijednost celije jednaka "nesto" 25.09.2008. u 13:57 · pre 220 meseci
izmenjeno 3 puta, poslednji put backspin 25.09.2008. u 14:11
  1. backspin25.09.2008. u 14:11zapis iz teksta poruke
  2. backspin25.09.2008. u 14:10zapis iz teksta poruke
  3. backspin25.09.2008. u 14:10zapis iz teksta poruke
#6
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 !
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme