Forumi


Povratak   PC Ekspert Forum > Računala > Software > Web dizajn, programiranje i ostalo
Ime
Lozinka

Odgovori
 
Uređivanje
Staro 05.03.2018., 07:54   #1
dredger
Premium
 
Datum registracije: Jul 2008
Lokacija: Pula
Postovi: 31
Excel VBA

Imam jednu tablicu u Excel iz koje želim izvući podatke u drugi sheet.

Treba proći cijelu tablicu, naći određeni pojam (koji se ponavlja) i u odnosu na njegovu poziciju kopirati pet ćelija (offset nekoliko redova i kolona) u jedan red na novom sheetu.

Pokušao sam naći na netu neko slično rješenje ali kad ga krenem modificirati sve pokvarim. 🤔

Znam osnove programiranja ali ne puno o VBA.

Any idea?

Poslano sa mog EVA-L09 koristeći Tapatalk
dredger je offline   Reply With Quote
Staro 05.03.2018., 14:33   #2
Nikky
Moderator
 
Nikky's Avatar
 
Datum registracije: Sep 2006
Lokacija: St
Postovi: 22,692
Nije to teško iskukićati, najveća gnjavaža je složiti search / pronalaženje "naći određeni pojam",
nekakvom kontrolom potvrditi da je TO ono šta se traži a onda ide copy u drugi sheet,
trebaš baš napisati rutinu, koristiti varijable, samim funkcijama u ćelijama je kompliciranije ...
Nikky je offline   Reply With Quote
Oglasni prostor
Oglas
 
Oglas
Staro 06.03.2018., 14:20   #3
mradovan
Registered User
Moj komp
 
mradovan's Avatar
 
Datum registracije: Jun 2017
Lokacija: Pula
Postovi: 110
Priloži uzorak - ćemo pogledati
mradovan je offline   Reply With Quote
Staro 06.03.2018., 14:52   #4
dredger
Premium
 
Datum registracije: Jul 2008
Lokacija: Pula
Postovi: 31
Pošaljem primjer kad dođem doma.

Znam da se to da lako srediti, samo treba znati. 😁
U principu jesam nešto napravio ali dobijem krive rezultate. 🤔

Poslano sa mog EVA-L09 koristeći Tapatalk
dredger je offline   Reply With Quote
Staro 07.03.2018., 11:26   #5
dredger
Premium
 
Datum registracije: Jul 2008
Lokacija: Pula
Postovi: 31
Citiraj:
Autor mradovan Pregled postova
Priloži uzorak - ćemo pogledati
Evo u prilogu Excel file, na sheet 2 su podaci koje bi za svaku transakciju sa sheet 1 htio izvući.
Attached Files
File Type: zip proba.zip‎ (24.6 kB, 647 views)
dredger je offline   Reply With Quote
Staro 07.03.2018., 12:11   #6
mradovan
Registered User
Moj komp
 
mradovan's Avatar
 
Datum registracije: Jun 2017
Lokacija: Pula
Postovi: 110
Evo - u prilogu.
Provjeri si da li je napravilo kako treba, ja nisam.
Računa da su sva potrebna polja jednako udaljena od početka transakcije.
Attached Files
File Type: zip proba1.zip‎ (37.4 kB, 638 views)
mradovan je offline   Reply With Quote
Staro 07.03.2018., 16:01   #7
dredger
Premium
 
Datum registracije: Jul 2008
Lokacija: Pula
Postovi: 31
Citiraj:
Autor mradovan Pregled postova
Evo - u prilogu.
Provjeri si da li je napravilo kako treba, ja nisam.
Računa da su sva potrebna polja jednako udaljena od početka transakcije.
Ha, hvala, to je to! Sad izgleda jednostavno. :-)
dredger je offline   Reply With Quote
Staro 07.03.2018., 20:06   #8
mradovan
Registered User
Moj komp
 
mradovan's Avatar
 
Datum registracije: Jun 2017
Lokacija: Pula
Postovi: 110
mradovan je offline   Reply With Quote
Staro 09.03.2018., 20:45   #9
dredger
Premium
 
Datum registracije: Jul 2008
Lokacija: Pula
Postovi: 31
Citiraj:
Autor mradovan Pregled postova
Krenuo sam malo podešavati svoju proceduru i prvi zadatak bio je pretvoriti iznos rate (koji je u originalu string) u broj koristeći ovo:

Code:
s2.Cells(r2, 5) = Val(Left(s1.Cells(r1 + 6, 2), Len(s1.Cells(r1 + 6, 2)) - 4)) ' iznos rate
"Skoro" da radi dobro, međutim ne radi, zaokružuje mi originalni iznos na jedinice!
Zašto kroz formulu radi dobro a ovdje ne?
dredger je offline   Reply With Quote
Staro 09.03.2018., 21:18   #10
mradovan
Registered User
Moj komp
 
mradovan's Avatar
 
Datum registracije: Jun 2017
Lokacija: Pula
Postovi: 110
Citiraj:
Autor dredger Pregled postova
"Skoro" da radi dobro, međutim ne radi, zaokružuje mi originalni iznos na jedinice!
Zašto kroz formulu radi dobro a ovdje ne?
Val radi samo sa točkom (kao u Americi), mi upotrebljavamo zarez...
Koristi radije CDbl umjesto Val, jer uzima u obzir regionalne postavke.
mradovan je offline   Reply With Quote
Oglasni prostor
Oglas
 
Oglas
Staro 10.03.2018., 16:39   #11
dredger
Premium
 
Datum registracije: Jul 2008
Lokacija: Pula
Postovi: 31
Citiraj:
Autor mradovan Pregled postova
Val radi samo sa točkom (kao u Americi), mi upotrebljavamo zarez...
Koristi radije CDbl umjesto Val, jer uzima u obzir regionalne postavke.
Thanks again!
dredger je offline   Reply With Quote
Staro 11.08.2020., 17:59   #12
stribor919
Premium
 
Datum registracije: Aug 2014
Lokacija: vukovar
Postovi: 107
Da ne dizem novu temu, molim pomoc u vezi Excel makroa.

Macro treba na polje A1 (Ivan Ivic) ucitati sliku s hdd-a C:\slike\Ivan Ivic.jpg u comment (u novijem Excelu se zove Note) u velicini kao originalna slika, s dimenzijama commenta isto kao i slika.
Nakon toga se spusta jedno polje nize (A2) gdje pise Pero Peric i ucitava sliku C:\slike\Pero Peric.jpg itd., sve dok ne dodje do polja na kojem ne pise nista (A7) i tu staje.

Ukratko, zelim svakom polju u koloni A koje sadrzi ime i prezime dodati u comment pripadajucu sliku istog naziva iz mape C:\slike\, s tim da slika bude iste velicine kao original, a comment (Note) bude iste velicine kao slika.

Imam ovaj kod, samo sto moram rucno dodati sliku, slika nije iste velicine/omjera i nije ostra kao original (vjerojatno zato sto nije ista velicina).


Sub Pic()
'
' Pic Macro
'
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = False 'Only one file
.InitialFileName = CurDir 'directory to open the window
.Filters.Clear 'Cancel the filter
.Filters.Add Description:="Images", Extensions:="*.jpg", Position:=1
.Title = "Choose image"

If .Show = -1 Then TheFile = .SelectedItems(1) Else TheFile = 0
End With
'No file selected
If TheFile = 0 Then
MsgBox ("No image selected")
Exit Sub
End If
Selection.ClearComments
Selection.AddComment
Selection.Comment.Visible = True
Selection.Comment.Shape.Fill.UserPicture TheFile
Selection.Comment.Shape.Select True
Selection.ShapeRange.ScaleWidth 1, msoFalse, msoScaleFromTopLeft
Selection.ShapeRange.ScaleHeight 1, msoFalse, msoScaleFromTopLeft
Selection.ShapeRange.LockAspectRatio = True
ActiveCell.Comment.Visible = True
End Sub


- Trebalo bi za svaku celiju sadrzaj kopirati u CLIPBOARD i onda ucitati sliku s lokacije C:\slike\CLIPBOARD.jpg u originalnoj velicini.
Hvala unaprijed

Zadnje izmijenjeno od: stribor919. 11.08.2020. u 19:51.
stribor919 je offline   Reply With Quote
Staro 22.08.2020., 14:43   #13
stribor919
Premium
 
Datum registracije: Aug 2014
Lokacija: vukovar
Postovi: 107
Evo, rijesio sam problem 90%. Jedino ne mogu dobiti da mi je slika u originalnoj velicini pa sam automatski podesio sve slike, odredio dimenzije u excelu koje mi odgovaraju i to je to. Ako netko moze pomoci da ipak dobijem slike originalne velicine bio bih zahvalan.
Evo kod:

Sub PicFromCellNameColumnA()
Dim rngList As Range
Dim c As Range
Dim cmt As Comment
Dim strPic As String
On Error Resume Next
Range("A1").Select
Set rngList = Range(Selection, Selection.End(xlDown))
strPic = "C:\slike\"
For Each c In rngList
With c.Offset(0, 0)
Set cmt = c.Comment
If cmt Is Nothing Then
Set cmt = .AddComment
End If
With cmt
.Text Text:=""
.Shape.Fill.UserPicture strPic & c.Value & ".jpg"
.Shape.Select True
.Shape.width = 137
.Shape.height = 200
.Shape.LockAspectRatio = True
.Visible = False
End With
End With
Next c
End Sub
stribor919 je offline   Reply With Quote
Staro 07.09.2020., 13:06   #14
Roberto
Premium
Moj komp
 
Roberto's Avatar
 
Datum registracije: Feb 2006
Lokacija: Zagreb
Postovi: 2,543
krivi post :/
__________________
i9-10850K / asrock z490 taichi / 64gb DDR4/ 1gb ssd / 4 tb wd hdd / Gigabyte 6600xt /
Roberto je offline   Reply With Quote
Staro 13.09.2022., 13:31   #15
Slađa
Registered User
 
Datum registracije: Sep 2022
Lokacija: Zagreb
Postovi: 5
Upadam ovdje s pitanjem da ne dizem novu temu:
Trebam pomoc oko oznacavanja checkboxeva na nekom sheetu. Vba kod koji imam mi oznaci sve checkboxeve na tom sheetu, a meni treba odredjeni broj ovisno o vrijednosti u jednoj celiji. Npr. U celiji B2 je vrijednost 15 i trebao bi mi oznaciti samo prvih 15 checkboxeva na tom sheetu, a ne sve. Ima netko ideju? Hvala
Slađa je offline   Reply With Quote
Staro 13.09.2022., 13:40   #16
Ivo_Strojnica
PRO
Moj komp
 
Ivo_Strojnica's Avatar
 
Datum registracije: Apr 2010
Lokacija: Zagreb
Postovi: 4,233
pa obični counter napraviš i ideš po redu:
Sad je samo pitanje da li ideš A1, A2, A3.....B1,B2,B3 ili A1, B1, C1.....
__________________
"Who is your daddy and what does he do?"
Ivo_Strojnica je offline   Reply With Quote
Staro 13.09.2022., 13:55   #17
mradovan
Registered User
Moj komp
 
mradovan's Avatar
 
Datum registracije: Jun 2017
Lokacija: Pula
Postovi: 110
Citiraj:
Autor Slađa Pregled postova
Upadam ovdje s pitanjem da ne dizem novu temu:
Trebam pomoc oko oznacavanja checkboxeva na nekom sheetu. Vba kod koji imam mi oznaci sve checkboxeve na tom sheetu, a meni treba odredjeni broj ovisno o vrijednosti u jednoj celiji. Npr. U celiji B2 je vrijednost 15 i trebao bi mi oznaciti samo prvih 15 checkboxeva na tom sheetu, a ne sve. Ima netko ideju? Hvala
Priloži uzorak - ćemo pogledati
mradovan je offline   Reply With Quote
Staro 13.09.2022., 15:25   #18
Slađa
Registered User
 
Datum registracije: Sep 2022
Lokacija: Zagreb
Postovi: 5
Znaci, imam nekih 300 checkboxeva u excelu. Kod svake neke analize, moram poklikati drugi broj checkboxeva. Za pocetak sam napravila jedan checkbox koji ih oznaci sve da ne moram klikati 300 puta ako je za tu analizu potreban broj 300.
I to mi radi ako treba oznaciti sve.
Medutim, dogodi se da sljedeci put moram kliknuti samo prvih 30, a ostalih 270 ne.
Koliko ih moram kliknuti, govori mi vrijednost u celiji E16.

Moj kod je bio :

Sub SelectAll Click()
Dim xCheckBox As CheckBox

For Each xCheckBox In Application.ActiveSheet.CheckBoxes
If xCheckBox.Name <> Application.ActiveSheet.CheckBoxes (“Check Box 471”.Name Then
xCheckBox.Vakue= Application.ActiveSheet.CheckBoxes (Check Box 481”). Value
End If
Next
End Sub

Mislila sam da moram uglaviti funkciji for i=1 To Range (“E16”)
Samo kako nisam strucnjak u tome… ne znam kako da uglavim da kad kliknem na celiju Select All, da ih oznaci samo onoliko kolika je vrijednost u celiji E16, npr 15.

Zadnje izmijenjeno od: Slađa. 13.09.2022. u 15:31.
Slađa je offline   Reply With Quote
Staro 13.09.2022., 16:14   #19
mradovan
Registered User
Moj komp
 
mradovan's Avatar
 
Datum registracije: Jun 2017
Lokacija: Pula
Postovi: 110
Citiraj:
Autor Slađa Pregled postova
Znaci, imam nekih 300 checkboxeva u excelu. Kod svake neke analize, moram poklikati drugi broj checkboxeva. Za pocetak sam napravila jedan checkbox koji ih oznaci sve da ne moram klikati 300 puta ako je za tu analizu potreban broj 300.
I to mi radi ako treba oznaciti sve.
Medutim, dogodi se da sljedeci put moram kliknuti samo prvih 30, a ostalih 270 ne.
Koliko ih moram kliknuti, govori mi vrijednost u celiji E16.

Moj kod je bio :

Sub SelectAll Click()
Dim xCheckBox As CheckBox

For Each xCheckBox In Application.ActiveSheet.CheckBoxes
If xCheckBox.Name <> Application.ActiveSheet.CheckBoxes (“Check Box 471”.Name Then
xCheckBox.Vakue= Application.ActiveSheet.CheckBoxes (Check Box 481”). Value
End If
Next
End Sub

Mislila sam da moram uglaviti funkciji for i=1 To Range (“E16”)
Samo kako nisam strucnjak u tome… ne znam kako da uglavim da kad kliknem na celiju Select All, da ih oznaci samo onoliko kolika je vrijednost u celiji E16, npr 15.
Ako ne znaš kako se Check Boxes zovu, možeš na relativno neelegantan ali jednostavan način ubaciti counter koji prestaje označavati Check Boxove kad vrijednost pređe onu specificiranu u E16.

Code:
Sub SelectSome Click()
  Dim xCheckBox As CheckBox

  Dim i as Integer
  i = 0

  For Each xCheckBox In Application.ActiveSheet.CheckBoxes
    If (i < Range("E16").Value) Then
      xCheckBox.Value = True			
    End If
    i = i + 1
  Next
End Sub
mradovan je offline   Reply With Quote
Staro 13.09.2022., 16:17   #20
mradovan
Registered User
Moj komp
 
mradovan's Avatar
 
Datum registracije: Jun 2017
Lokacija: Pula
Postovi: 110
Citiraj:
Autor Slađa Pregled postova
Znaci, imam nekih 300 checkboxeva u excelu. Kod svake neke analize, moram poklikati drugi broj checkboxeva. Za pocetak sam napravila jedan checkbox koji ih oznaci sve da ne moram klikati 300 puta ako je za tu analizu potreban broj 300.
I to mi radi ako treba oznaciti sve.
Medutim, dogodi se da sljedeci put moram kliknuti samo prvih 30, a ostalih 270 ne.
Koliko ih moram kliknuti, govori mi vrijednost u celiji E16.

Moj kod je bio :

Sub SelectAll Click()
Dim xCheckBox As CheckBox

For Each xCheckBox In Application.ActiveSheet.CheckBoxes
If xCheckBox.Name <> Application.ActiveSheet.CheckBoxes (“Check Box 471”.Name Then
xCheckBox.Vakue= Application.ActiveSheet.CheckBoxes (Check Box 481”). Value
End If
Next
End Sub

Mislila sam da moram uglaviti funkciji for i=1 To Range (“E16”)
Samo kako nisam strucnjak u tome… ne znam kako da uglavim da kad kliknem na celiju Select All, da ih oznaci samo onoliko kolika je vrijednost u celiji E16, npr 15.
A ako znaš kako se zovu, onda možeš for/next petlju po imenu:

Code:
Private Sub selectSome_Click()
  Dim i As Integer

  Application.ActiveSheet.CheckBoxes.Value = False

  For i = 1 To Range("E16").Value
    Application.ActiveSheet.CheckBoxes("Check Box " & i).Value = True
  Next i

End Sub
mradovan je offline   Reply With Quote
Staro 14.09.2022., 10:33   #21
Slađa
Registered User
 
Datum registracije: Sep 2022
Lokacija: Zagreb
Postovi: 5
Super, hvala, radi mi ovaj gornji prvi kod gdje nisam navela kako se Checkboxevi zovu. HVala!
Sad jedino mi jos fali ako ih sve oznaci na tom jednom Checkboxu da ih drugim klikom i odznaci. Znaci,jednim checkboxom ih mogu oznaciti (to sad radi ovim kodom) i odznaciti.
Slađa je offline   Reply With Quote
Staro 14.09.2022., 14:45   #22
mradovan
Registered User
Moj komp
 
mradovan's Avatar
 
Datum registracije: Jun 2017
Lokacija: Pula
Postovi: 110
Citiraj:
Autor Slađa Pregled postova
Super, hvala, radi mi ovaj gornji prvi kod gdje nisam navela kako se Checkboxevi zovu. HVala!
Sad jedino mi jos fali ako ih sve oznaci na tom jednom Checkboxu da ih drugim klikom i odznaci. Znaci,jednim checkboxom ih mogu oznaciti (to sad radi ovim kodom) i odznaciti.
Ako sam dobro razumio, to možeš postići pomoću statične varijable:

Code:
Private Sub selectSome_Click()

  Dim xCheckBox As CheckBox

  Dim i As Integer
  i = 0
  
  Static switch As Boolean
  switch = Not switch

  Application.ActiveSheet.CheckBoxes.Value = False

  If (switch) Then
    For Each xCheckBox In Application.ActiveSheet.CheckBoxes
      If (i < Range("E16").Value) Then
        xCheckBox.Value = True
      End If
      i = i + 1
    Next
  End If
  
End Sub
mradovan je offline   Reply With Quote
Staro 15.09.2022., 12:21   #23
Slađa
Registered User
 
Datum registracije: Sep 2022
Lokacija: Zagreb
Postovi: 5
Hvala vam puno!
Radi
Slađa je offline   Reply With Quote
Staro 15.09.2022., 12:50   #24
mradovan
Registered User
Moj komp
 
mradovan's Avatar
 
Datum registracije: Jun 2017
Lokacija: Pula
Postovi: 110
mradovan je offline   Reply With Quote
Oglasni prostor
Oglas
 
Oglas
Odgovori


Uređivanje

Pravila postanja
Vi ne možete otvarati nove teme
Vi ne možete pisati odgovore
Vi ne možete uploadati priloge
Vi ne možete uređivati svoje poruke

BB code je Uključeno
Smajlići su Uključeno
[IMG] kod je Uključeno
HTML je Isključeno

Idi na