[ cira7 @ 24.09.2009. 21:14 ] @
Pozdrav, imam jedan mali problemčić, a nisam za sada uspeo da nadjem neko valjano rešenje. Naime napravio sam makro koji mi kopira odredjene podatke iz jedne tabele u drugu i sve to lepo radi ali ima i viška koji mi smeta. Znači kopiram odredjeni Range, konkretno od a4:a20, ali mi nije uvek potrebno da kopiram sve ćelije jer nisu uvek sve popunjene. Kako da preskočim kopiranje praznih ćelija, tj. da mi u drugom Sheet-u budu podaci popunjeni redom bez praznih polja izmedju. Ono što sam za sada napravio izgleda ovako. Unapred hvala !!!

Code:
Sub unesi()

   Application.ScreenUpdating = False
   ActiveWorkbook.Sheets("podaci").Select
   
   Range("A3").Select
   Do
   If IsEmpty(ActiveCell) = False Then
       ActiveCell.Offset(1, 0).Select
   End If
   Loop Until IsEmpty(ActiveCell) = True
     
    
   Sheets("unos").Select
   Range("A4:A20").Copy
   Sheets("podaci").Select
   ActiveCell.Offset(0, 0).PasteSpecial (xlPasteValues)

   Sheets("unos").Select
   Range("B4:B20").Copy
   Sheets("podaci").Select
   ActiveCell.Offset(0, 1).PasteSpecial (xlPasteValues)
   
   Sheets("unos").Select
   Range("B1").Copy
   Sheets("podaci").Select
   ActiveCell.Offset(0, 1).PasteSpecial (xlPasteValues)

   Sheets("unos").Select
   Range("B2").Copy
   Sheets("podaci").Select
   ActiveCell.Offset(0, 1).PasteSpecial (xlPasteValues)
   
   Sheets("unos").Select
   Range("D2").Copy
   Sheets("podaci").Select
   ActiveCell.Offset(0, 1).PasteSpecial (xlPasteValues)
   
      
   Sheets("unos").Select
   Application.CutCopyMode = False
   
End Sub
[ neptuncokg @ 24.09.2009. 23:15 ] @
Nisam siguran da cu ti mnogo pomoci, ali evo predloga. Ja resvam problem kopiranja u prvi slobodan-prazan red tako sto dodam sledeci kod posle selektovanja sheeta u koji se kopiraju podaci:
r = Range("F9999").End(xlUp).Offset(1, 0).Row ' cuva se pocetni broj reda
ActiveSheet.Cells(r, 6).Select

To bi u tvom slucaju bilo otprolike ovako, za jedno kopiranje:

Sheets("unos").Select
Range("B1").Copy
Sheets("podaci").Select
r = Range("F9999").End(xlUp).Offset(1, 0).Row ' cuva se pocetni broj reda
ActiveSheet.Cells(r, 6).Select
ActiveCell.Offset(0, 1).PasteSpecial (xlPasteValues)

Ovo "F9999" znaci da hoces da kopiras podatak iz B1(unos) u prvi slobodan red kolone F(podaci), uz pretpostavku da imas ukupno 9999 redova. Ako imas vise, stavi taj broj, ali je maksimalno 65536.

Ovo "(r,6)" oznacava da je kolona F sesta po redu. Za G ces staviti-7, itd.

To kod mene radi odlicno, ali ne znam kako ces se snaci za kopiranje vise celija odjednom. Verovatno ovaj moj primer treba da se preradi. Pozdrav.
[ Jpeca @ 25.09.2009. 08:41 ] @
Pretpostavljam da kopiraš vrednosti (ne formule). U tom slučaju može se napraviti jednostavan kod koji jednostavno prepisuje ćeliju po ćeliju ukoliko nije prazna.
Code:
Sub CopyValuesWithoutBlank(rngSource As Range, clDest As Range)
' rngSource je kolona sa vrednostima koje se kopiraju
' Kopiraju se samo neprazne celije pocevsi od clDest
' P. Jovanovic za elitesecurity.org

Dim cl As Variant
For Each cl In rngSource
  If Len(cl.Text) > 0 Then        ' da li je blanko
     clDest.Value = cl.Value
   Set clDest = clDest.Offset(1)  ' sledeci red
  End If
Next cl
End Sub


Pozivane ove rutine npr:

Code:
Sub Test()
Dim Source As Range
Dim Dest As Range

  Set Source = ActiveSheet.Range("A1:A20")
  Set Dest = ActiveSheet.Range("F1")
  CopyValuesWithoutBlank Source, Dest
End Sub


Za velike opsege imalo bi smisla efikasnije rešenje koje bi radilo Copy sa kombinacijom opsega, ali je ono komplikovanije za realizaciju
[ timmy @ 25.09.2009. 10:12 ] @
A mozda bi i dovoljno bilo da iskopirane podatke (sa sve praznim redovima) samo sortiras
cime ce prazni redovi doci na kraj pa ih mozes ignorisati. Naravno, u slucaju da time ne
narusavas strukturu ciljne tabele.

Pozdrav
[ 3okc @ 25.09.2009. 10:31 ] @
Ako više odgovara rešenje pomoću formula, prostudiraj prikačeni fajl u ovom postu.

Možda jeste komplikovano ali može da bude trajno rešenje.

Za instant rešenje, lično, poslužio bih se Excelovim alatima.
Konkretno, Go To > Special > Blanks
i onda Delete Entire Row.
[ cira7 @ 25.09.2009. 20:40 ] @
Hvala svima na savetima, pokušaću od svega po malo da isprobam, pa ću okačiti optimalno rešenje, da mogu i drugi da vide ako im bude nešto tako trebalo. Pozdrav
[ cira7 @ 26.09.2009. 23:53 ] @
Evo ljudi napravio sam nešto što mi za sada radi posao. Pošto je kod dugačak, prikačiću dokument, pa možda nekome zatreba. Naime imam radnike koji mi rade povremeno i u različitom broju i ovo koristim za njihovu evidenciju. Ako neko zna prostije da napravi, naravno neću se ljutiti. Pozdrav