Novo

Forum kao aplikacija na telefonu

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

  • 13 odgovora
  • 3.892 pregleda

Najnovija ↓

macro za insert rows 02.07.2014. u 15:51 · pre 150 meseci #1
Poz
Imam jedno pitanje da li je moguće da preko
macroa insertujem novi red ispod ćelije B11 a da sadrži
isti broj čelija kao i red B11 do čelije G11
i drugo pitanje kako da kad završim upis to snimim u bazu
ali da sve stavke budu snimljene jedne ispod druge u bazi
znam za snimanje čelija u drugi list jedne stavke i tu macro radi odlično
ali kako da i ostale stavke budu jedna ispod druge a da
pored svake stavke bude datum i broj računa
Unaprijed hvala prilog baza
Potpis
Jasmin
Re: macro za insert rows 02.07.2014. u 17:18 · pre 150 meseci #2
Za ovakve situacije najbolje da smislis kako bi se to rucno najlakse odradilo i onda snimis kod. Obicno je potrebno i malo "doterivanja" snimljenog koda ali je to dobro za početak

Ovo bi bio kod za dodavanje reda
Code:
Sub NoviRed()
'
' Dodaje red iznad UKUPNO
' Format se kopira od prvog reda B11:G11
'
' P.Jovanovic za elitesecurity.org

' Kreiranje kopije
    Range("B11:G11").Copy
' Pozicioniranje na Ukupno
    Range("B11").End(xlDown).Select
' Dodavanje reda
    Selection.Insert Shift:=xlDown
' Brisanje sadrzaja
    Selection.Resize(RowSize:=1, ColumnSize:=5).ClearContents
End Sub



Za snimanje jedne ispod druge stavke vidi http://www.elitesecurity.org/t246081-0#1480006
Potpis
Nije to loše Rembrante, samo što ne bi dodao još malo boje?
Re: macro za insert rows 02.07.2014. u 21:51 · pre 150 meseci
izmenjeno 3 puta, poslednji put jaskojsako 02.07.2014. u 22:12
  1. jaskojsako02.07.2014. u 22:12zapis iz teksta poruke
  2. jaskojsako02.07.2014. u 22:11zapis iz teksta poruke
  3. jaskojsako02.07.2014. u 22:11zapis iz teksta poruke
#3
Hvala na odgovoru,ovo može poslužiti,ja sa lista kasa uzimam datum broj računa,i stavke računa
znam za prvu stavku da upiše to je ovaj kod
....................................................................................................................
Dim xy As String 'deklarisanje promenljive xy
xy = Sheets("bazaizlaz").Range("A1000").End(xlUp).Row + 1 'prvi prazan red za unos

Dim spec As Worksheet, nal As Worksheet 'delariranje sheetova
Set spec = Sheets("bazaizlaz")
Set nal = Sheets("kasa")

Application.ScreenUpdating = False

With spec
.Range("A" & xy).Value = nal.Range("c5").Value 'datum
.Range("B" & xy).Value = nal.Range("f6").Value 'broj fakture
.Range("C" & xy).Value = nal.Range("b9").Value 'fikalni račun
.Range("D" & xy).Value = nal.Range("b11").Value 'šifra artikla
.Range("E" & xy).Value = nal.Range("c11").Value 'naziv
.Range("F" & xy).Value = nal.Range("d11").Value 'jed.mj
.Range("G" & xy).Value = nal.Range("e11").Value 'broj fakture
.Range("H" & xy).Value = nal.Range("f11").Value 'cijena

Range("A1").Select
....................................................................................................

ali kako da i sljedeće stavke ako imaju da upiše jednu ispod druge na listu baza.


Hvala
Potpis
Jasmin
Re: macro za insert rows 03.07.2014. u 09:42 · pre 150 meseci #4
Ako si pogledao primer video si da tamo ima for petlja
Code:
For rw = 3 To rwEnd
...
Next rw


U tvom slučaju pošto prepisujemo sve stavke sa lista kasa početni red je 11, a krajnji red možemo da odredimo kao što sam već naveo za umetanje redova, pa -1
Code:
rwEnd = Range("B11").End(xlDown).Row -1

U petlji xy uvećavaš za 1 (Bilo bi razumljivije da si xy nazvao rBaza, rwBaza ili slično ovako xy implicija dve koordinate a ima samo jedna?). Meni je lično razumljivije korišćeje Cells(row, column) notacije umesto Range u VBA kodu ali može i Range kao što si naveo. Uglavnom tvoj kod bi otprilike dobio oblik

Code:
...
rwEnd = Range("B11").End(xlDown).Row -1
For rw = 11 To rwEnd
 With spec
  .Range("A" & xy).Value = nal.Range("c5").Value 'datum
  .Range("B" & xy).Value = nal.Range("f6").Value 'broj fakture
  .Range("C" & xy).Value = nal.Range("b9").Value 'fikalni račun
  .Range("D" & xy).Value = nal.Range("b"&rw).Value 'šifra artikla
  .Range("E" & xy).Value = nal.Range("c"&rw).Value 'naziv
  .Range("F" & xy).Value = nal.Range("d"&rw).Value 'jed.mj
  .Range("G" & xy).Value = nal.Range("e"&rw).Value 'broj fakture
  .Range("H" & xy).Value = nal.Range("f"&rw).Value 'cijena
  End With
  xy = xy +1
next rw 
...
Potpis
Nije to loše Rembrante, samo što ne bi dodao još malo boje?
Re: macro za insert rows 03.07.2014. u 10:40 · pre 150 meseci #5
Poz,svaka čast to bi bilo to
ako možeš još samo kako da izbrišemo dodate redove ako ih ima do čelije B11.
Hvala
Potpis
Jasmin
Re: macro za insert rows 03.07.2014. u 13:15 · pre 150 meseci #6
Pošto se ozbiljnije baviš VBA više bih voleo da naučiš, nego da ti dam gotovo rešenje

Napravi primer sa jednim redom kog treba obrisati.

Snimi makro koji briše taj red.

Izmeni makro tako da umesto broja reda staviš promenljivu rw.

Sad razmisli kako ćeš da odrediš početni i krajnji red oblasti koju brišeš. Koliko sam razumeo početni red koji se briše je 12 a krajni odrediš kao i ranije od ukupno jedan red gore
Code:
rwEnd = Range("B11").End(xlDown).Row -1

Sad napravi petlju
Code:
For rw = 12 to rwEnd
  ... Kod za brisi red rw
Next rw


Razmili šta će se desiti kad nemaš redova za brisanje. Proveri koliki je rwEnd u tom slučaju. Napravi primer bez reda za brisanje i onda u Immediate window otkucaj
?Range("B11").End(xlDown).Row -1
Napravi primer sa nekoliko redova za brisanje pa proveri koliki je rwEnd na isti način

Ako budeš imao nekih problema postavi kod ovde pa da komentarišemo
Potpis
Nije to loše Rembrante, samo što ne bi dodao još malo boje?
Re: macro za insert rows 03.07.2014. u 13:51 · pre 150 meseci
izmenjeno 1 put, poslednji put jaskojsako 03.07.2014. u 14:02
  1. jaskojsako03.07.2014. u 14:02zapis iz teksta poruke
#7
Poz hvala na javljanju
probao sam sa ovim kodom i prijavljuje mi grešku

Private Sub CommandButton36_Click()
rwEnd = Range("B11").End(xlDown).Row - 1
For rw = 12 To rwEnd
rw = EntireRow.Delete
Next rw
End Sub
Ako može da ovo ti završiš a ja ću da proanaliziram kod.
Hvala

Kada sa ovim kodom Rows(rw).EntireRow.Delete zamjenim ovaj kod
rw = EntireRow.Delete
odradi za dva reda koja su insertovana a poslije blokada
kako da odredim zadnji red koji je insertovan i da od njega počne da briše do reda b11
Hvala
Potpis
Jasmin
Re: macro za insert rows 03.07.2014. u 14:34 · pre 150 meseci
izmenjeno 1 put, poslednji put Jpeca 03.07.2014. u 15:10
  1. Jpeca03.07.2014. u 15:10zapis iz teksta poruke
#8
Nisam baš siguran da ti treba brisanje celog reda - EntireRow.Delete?

Greška je zato što vraćaš rezultat toga u rw koji je brojač u petlji
Trebalo bi nešto ovako
Code:
Range("B"&rw).EntireRow.Delete


Odnosno ako ne brišeš ceo red nego samo oblast B:G u odgovarajućem redu
Code:
Range("B" & rw).Resize(ColumnSize:=6).Delete Shift:=xlUp
Potpis
Nije to loše Rembrante, samo što ne bi dodao još malo boje?
Re: macro za insert rows 03.07.2014. u 14:52 · pre 150 meseci #9
U pravu si ne brišem ceo red nego samo raspon b:g
i kad sam zamjenio tvoj kod
Range("B" & rw).Resize(Columns:=6).Delete Shift:=xlUp

na mjesto koda Rows(rw).EntireRow.Delete
prijavljuje ovdje grešku Resize(Columns:=6)

Poz

Potpis
Jasmin
Re: macro za insert rows 03.07.2014. u 15:11 · pre 150 meseci #10
Izmeno sam parametar za Resize se zove ColumnSize a ne Columns (ima primer iznad)
Potpis
Nije to loše Rembrante, samo što ne bi dodao još malo boje?
Re: macro za insert rows 03.07.2014. u 18:41 · pre 150 meseci #11
poz
ne ide druže ako možeš na ovom mom primjeru baze
da ugradiš macro bio biti zahvalan
Potpis
Jasmin
Re: macro za insert rows 07.07.2014. u 15:59 · pre 150 meseci #12
Lakše i korisnije bi bilo da si postavio primer sa svojim pokušajem, pa da vidimo u čemu je problem.

U prilogu je tvoj primer sa dodatnim makroima NoviRed i BrisiVisak
Potpis
Nije to loše Rembrante, samo što ne bi dodao još malo boje?
Sviđa mi se1
Re: macro za insert rows 09.07.2014. u 00:16 · pre 149 meseci #14
Poz opet
Vidio si kako sam preko dugmeta odradio ubacivanje
artikala ali samo za jedan red,imaš li ideju kako da
odradim da pronađe prvi prazan red za drugi unos artikla
znaći pritisnem artiklal 1 unesem količinu i da sljedeći artikal bude ispod drugog
ali koji god artikal da izaberem.
Hvala
Potpis
Jasmin
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme