Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

potrebna VBA funkcija

[es] :: Office :: Excel :: potrebna VBA funkcija

[ Pregleda: 1236 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Blue82
dipl. ecc.

Član broj: 165981
Poruke: 838
*.dynamic.sbb.rs.



+322 Profil

icon potrebna VBA funkcija10.06.2017. u 09:15 - pre 82 meseci
Obrisati (za administratore)

[Ovu poruku je menjao Blue82 dana 10.06.2017. u 10:30 GMT+1]
Prikačeni fajlovi
 
Odgovor na temu

Jpeca
Predrag Jovanović
poslovni analitičar
Gowi
Pančevo

Moderator
Član broj: 25683
Poruke: 2267
89.216.49.*

Sajt: www.gowi.rs


+109 Profil

icon Re: potrebna VBA funkcija12.06.2017. u 08:36 - pre 82 meseci
Ako je potrebno da se nađe sadražaj prva ćelije koja sadraži tekst možeš da koristiš HLOOKUP. Za prvi red:
Code:
=HLOOKUP("*";A2:D2;1;FALSE) 

* traži bilo kakav tekst tako da će se preskočiti prazne ćelije kao i one koje sadrže numeričke podatke(ili datume)



Nije to loše Rembrante, samo što ne bi dodao još malo boje?
 
Odgovor na temu

Blue82
dipl. ecc.

Član broj: 165981
Poruke: 838
*.dynamic.sbb.rs.



+322 Profil

icon Re: potrebna VBA funkcija13.06.2017. u 21:07 - pre 82 meseci
Resio sam ovo iznad, cim sam postavio post, valjda kako sam stisnuo enter tako mi se ukazala jednostavnost resenja. Pokusah obrisati, a Vi ste mi odgovorili verovatno na poruku koja se ovde ne vidi a Vi vidite sve izmene poruke pa sada izgleda glupo. No da ne zjapi ovako prazna tema pitao bih nesto novo.

Code:

Sub Button3_Click()
    
    Call KopirajIzDrugogExcelFajla("C:\Users\Mladen\Desktop\a.xls", "Sheet1", "Start")
    Call KonvertujTekstUDatum("D")
    Call KonvertujTekstUDatum("E")
    
End Sub



Private Sub KopirajIzDrugogExcelFajla(putanjaDoFajla As String, NazivSheetaKojiKOpiram As String, NazivSheetaUKojiKopiram As String)
'ovaj sub otvori neki drugi fajl, ocita odredjeni sheet i kopira u odredjeni sheet ovog fajla tj ovog Excela koji koristim
'primer KopirajIzDrugogExcelFajla("C:\Users\Mladen\Desktop\Automatizacija predloga za placanje.xlsm","Sheet1","Sheet1")
    
    Dim wkb1 As Workbook  'Workbook Excela koji koristim
    Dim sht1 As Worksheet 'Sheet Excel fajla koji koristim
    Dim wkb2 As Workbook  'Workbook drugog Excel fajla
    Dim sht2 As Worksheet 'Sheet drugog Excel fajla

    Application.ScreenUpdating = False

    Set wkb1 = ThisWorkbook
    Set wkb2 = Workbooks.Open(putanjaDoFajla)
    Set sht1 = wkb1.Sheets(NazivSheetaUKojiKopiram)
    Set sht2 = wkb2.Sheets(NazivSheetaKojiKOpiram)

    sht2.Cells.Copy
    sht1.Range("A1").PasteSpecial xlPasteAll
    Application.CutCopyMode = False
    wkb2.Close True
    Application.ScreenUpdating = True
    
    'izvrsio sam kopiranje, zatim brisem poslednji red posto je tu zbir koji mi ne treba
    PoslednjiRow = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
    Rows(PoslednjiRow).Delete
End Sub

Private Sub KonvertujTekstUDatum(nazivKolone As String)
'ovaj sub konvertuje sve datume u odredjenoj koloni koji se nalaze u formatu TEXT u format DATUM
'nazivKolone - unosi se slovo kolone u kojoj se konverzija vrsi. npr. KonvertujTekstUDatum("C")
    Sheets("Start").Select
    Dim brRedova As Long, r As Range
    N = Cells(Rows.Count, nazivKolone).End(xlUp).Row
    For i = 2 To N
        Set r = Cells(i, nazivKolone)
        r.Value = CDate(r.Value)
    Next i
End Sub



Program pocinje klikom na Button 3. Kopira podatke iz nekog drugog fajla iz Sheet1 i smesta ih u Sheet "Start" u ovom Workbook-u.
Zatim se pokrece sub KonvertujTekstUDatum koji datume koji pisu u D i E koloni kao string, prevodi u formu datuma.
E tu se desava nesto sto ne umem da objasnim zasto.

Button 3, klikom na koji sve pocinje nalazi se u nekom drugom sheet-u.
Program kopira u Sheet "Start" podatke i kada se startuje Sub KonvertujTekstUDatum, iako u prvoj liniji kazem Sheets("Start").Select, program ostane u sheet-u u kome se nalazi Button 3 i pokusava u njemu da promeni datume koji se tu ni ne nalaze.

Mogu problem da resim komandom Worksheets("Start").Activate ali mi nije jasno zasto mi je ona uopste potrebna, tj zasto ne radi code iznad?
Primera radi ako kazem sledeci code, program ce bez problema otici u Sheet1 i kopirati podatke a zatim ce otici u sheet2 i tu ce paste podatke. Zasto po toj logici ne radi i moj primer iz pitanja?
Code:

Sheets("Sheet1").Select
Range(i & ":" & i).Copy
    
Sheets("Sheet2").Select
Range(pasteKolona & ":" & pasteKolona).PasteSpecial xlPasteValues
 
Odgovor na temu

Jpeca
Predrag Jovanović
poslovni analitičar
Gowi
Pančevo

Moderator
Član broj: 25683
Poruke: 2267
89.216.49.*

Sajt: www.gowi.rs


+109 Profil

icon Re: potrebna VBA funkcija14.06.2017. u 08:32 - pre 82 meseci
Shvatio sam da si rešio prvi problem, ali nisi napisao kako, pa reko bolje da odgovorim - možda će neko imati sličan problem - nego da obrišem. Ja forum shvatam kao mesta gde ćemo dati odgovore na neka uobičajena pitanja, a ne samo rešenje za pojedinačne probleme.

Što se tiče problema sa kodom nisam imao tvoj primer, ali sam postavio tvoj kod KonvertujTekstUDatum i sa Sheet1 klikom na dugme Test pozvao proceduru Test koja poziva KonvertujUDatum.
Sve prođe bez problema - prebaci se u list Start i odradi konverziju u zadatoj koloni.

Ne znam gde ti se nalazi kod u Worksheet ili Modulu? Uglavnom možeš da postaviš Breakpoint na liniji
Code:
Sheets("Start").Select 

I onda klik na dugme i kad se zustavi na breakpoint izvršavaš liniju po liniju (F8), a u Immediate window proveravaš koji list je aktivan



Ono što se meni čini kao eventualni problem je
Code:
PoslednjiRow = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row

ActiveSheet je onaj gde je dugme - valjda bi trebalo sht1?

Inače što se tiče komandi Acitvate i Select u principu ih izbegavaj u kodu jer se njima menja prikaz tokom izvšrenja - jednostavno koristiš Set sht1 = ... i onda sh1.Cellls .... kao što si uradio u kodu KopirajIzDrugogExcelFajla





[Ovu poruku je menjao Jpeca dana 14.06.2017. u 12:05 GMT+1]
Nije to loše Rembrante, samo što ne bi dodao još malo boje?
Prikačeni fajlovi
 
Odgovor na temu

Blue82
dipl. ecc.

Član broj: 165981
Poruke: 838
*.dynamic.sbb.rs.



+322 Profil

icon Re: potrebna VBA funkcija14.06.2017. u 18:38 - pre 82 meseci
Imas zaista ostro oko...

Problem je bio ovde:
Code:

PoslednjiRow = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row


Tu ga je ActiveSheet vratio na pogresan sheet.
Hvala puno!
 
Odgovor na temu

[es] :: Office :: Excel :: potrebna VBA funkcija

[ Pregleda: 1236 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.