Kako postaviti upit u bazu podataka MS Access 2019
Naučite kako postaviti upite u Access bazi podataka uz jednostavne korake i savjete za učinkovito filtriranje i sortiranje podataka.
Kako vaše Excel makronaredbe postaju sve robusnije i složenije, možda ćete otkriti da gube performanse. Kada se govori o makronaredbama, riječ performanse obično je sinonim za brzinu . Brzina je koliko brzo vaše VBA procedure izvode svoje predviđene zadatke. Slijedi deset načina za održavanje vaših Excel makronaredbi na njihovoj optimalnoj razini performansi.
Jeste li znali da svaki put kada se promijeni ili manipulira ćelija koja utječe na bilo koju formulu u vašoj proračunskoj tablici, Excel ponovno izračuna cijeli radni list? U radnim listovima koji imaju veliku količinu formula, ovo ponašanje može drastično usporiti vaše makronaredbe.
Možete koristiti svojstvo Application.Calculation da kažete Excelu da se prebaci na način ručnog izračuna. Kada je radna knjiga u načinu ručnog izračuna, radna knjiga se neće ponovno izračunati sve dok izričito ne pokrenete izračun pritiskom na tipku F9.
Stavite Excel u način ručnog izračuna, pokrenite svoj kod, a zatim se vratite na automatski način izračuna.
Podmakro1() Application.Calculation = xlCalculationManual 'Ovdje stavite svoj makro kod Aplikacija.Izračun = xlCalculationAutomatic Kraj Sub
Vraćanje načina izračuna na xlCalculationAutomatic automatski će pokrenuti ponovni izračun radnog lista, tako da nema potrebe pritiskati tipku F9 nakon što se makro pokrene.
Možda ćete primijetiti da kada se vaše makronaredbe pokrenu, vaš zaslon prilično treperi. Ovo treperenje je Excel koji pokušava ponovno nacrtati zaslon kako bi prikazao trenutno stanje radnog lista. Nažalost, svaki put kada Excel ponovno iscrtava zaslon, zauzima memorijske resurse.
Možete koristiti svojstvo Application.ScreenUpdating da onemogućite ažuriranja zaslona dok se makronaredba ne dovrši. Onemogućavanje ažuriranja zaslona štedi vrijeme i resurse, omogućujući vašoj makronaredbi da radi malo brže. Nakon što se vaš makro kod završi s radom, možete ponovno uključiti ažuriranje zaslona.
Podmakro1() Application.Calculation = xlCalculationManual Application.ScreenUpdating = False 'Ovdje stavite svoj makro kod Aplikacija.Izračun = xlCalculationAutomatic Application.ScreenUpdating = Točno Kraj Sub
Nakon što svojstvo ScreenUpdating vratite na True, Excel će automatski pokrenuti ponovno iscrtavanje zaslona.
Statusna traka programa Excel, koja se pojavljuje na dnu prozora programa Excel, obično prikazuje napredak određenih radnji u Excelu. Ako vaša makronaredba radi s puno podataka, statusna traka će zauzeti neke resurse.
Važno je napomenuti da je isključivanje ažuriranja zaslona odvojeno od isključivanja prikaza statusne trake. Statusna traka nastavit će se ažurirati čak i ako onemogućite ažuriranje zaslona. Možete koristiti svojstvo Application.DisplayStatusBar da privremeno onemogućite ažuriranja statusne trake, dodatno poboljšavajući izvedbu svoje makronaredbe:
Podmakro1() Application.Calculation = xlCalculationManual Application.ScreenUpdating = False Application.DisplayStatusBar = False 'Ovdje stavite svoj makro kod Aplikacija.Izračun = xlCalculationAutomatic Application.ScreenUpdating = Točno Application.DisplayStatusBar = Istina Kraj Sub
Možete implementirati makronaredbe kao procedure događaja, govoreći Excelu da pokrene određeni kod kada se radni list ili radna knjiga promijeni.
Ponekad standardne makronaredbe unose promjene koje će pokrenuti proceduru događaja. Na primjer, ako imate standardnu makronaredbu koja manipulira s nekoliko ćelija na Sheet1, svaki put kada se promijeni ćelija na tom listu, vaša se makronaredba mora pauzirati dok se radi događaj Worksheet_Change.
Možete dodati još jednu razinu povećanja performansi korištenjem svojstva EnableEvents kako biste rekli Excelu da ignorira događaje dok se makronaredba izvodi.
Postavite svojstvo EnableEvents na False prije pokretanja makronaredbe. Nakon što se vaš makro kod završi s izvođenjem, svojstvo EnableEvents možete vratiti na True.
Podmakro1() Application.Calculation = xlCalculationManual Application.ScreenUpdating = False Application.DisplayStatusBar = False Application.EnableEvents = False 'Ovdje stavite svoj makro kod Aplikacija.Izračun = xlCalculationAutomatic Application.ScreenUpdating = Točno Application.DisplayStatusBar = Istina Application.EnableEvents = Točno Kraj Sub
Svaki put kada makronaredba izmijeni broj redaka, broj stupaca ili promijeni postavku stranice radnog lista, Excel je prisiljen odvojiti vrijeme za ponovno izračunavanje prijeloma stranica prikazanih na listu.
Ovo ponašanje možete izbjeći jednostavnim skrivanjem prijeloma stranica prije pokretanja makronaredbe.
Postavite svojstvo lista DisplayPageBreaks na False da biste sakrili prijelome stranica. Ako želite nastaviti prikazivati prijelome stranica nakon pokretanja makronaredbe, vratite svojstvo lista DisplayPageBreaks na True.
Podmakro1() Application.Calculation = xlCalculationManual Application.ScreenUpdating = False Application.DisplayStatusBar = False Application.EnableEvents = False Activesheet.DisplayPageBreaks = False 'Ovdje stavite svoj makro kod Aplikacija.Izračun = xlCalculationAutomatic Application.ScreenUpdating = Točno Application.DisplayStatusBar = Istina Application.EnableEvents = Točno Activesheet.DisplayPageBreaks = Točno Kraj Sub
Ako vaša makronaredba manipulira zaokretnim tablicama koje sadrže velike izvore podataka, možda ćete imati lošu izvedbu kada radite stvari poput dinamičkog dodavanja ili premještanja zaokretnih polja.
Možete poboljšati performanse svoje makronaredbe obustavljanjem ponovnog izračuna zaokretne tablice dok se ne izvrše sve promjene zaokretnog polja. Jednostavno postavite svojstvo PivotTable.ManualUpdate na True da odgodite ponovno izračunavanje, pokrenite svoj makro kod, a zatim vratite svojstvo PivotTable.ManualUpdate na False kako biste pokrenuli ponovno izračun.
Podmakro1()
ActiveSheet.PivotTables("PivotTable1").ManualUpdate=True
'Ovdje stavite svoj makro kod
ActiveSheet.PivotTables("PivotTable1").ManualUpdate=False
Kraj Sub
Važno je zapamtiti da iako Macro Recorder štedi vrijeme pisanjem VBA koda umjesto vas, ne piše uvijek najučinkovitiji kod. Najbolji primjer je kako Macro Recorder bilježi svaku radnju kopiranja i lijepljenja koju izvodite tijekom snimanja.
Svojim makronaredbama možete dati blagi poticaj izrezivanjem posrednika i izvođenjem izravnog kopiranja iz jedne ćelije u odredišnu. Ovaj alternativni kod koristi argument Destination da zaobiđe međuspremnik i kopira sadržaj ćelije A1 izravno u ćeliju B1.
Raspon("A1").Odredište kopiranja:=Raspon("B1")
Ako trebate kopirati samo vrijednosti (ne formatiranje ili formule), možete još više poboljšati performanse izbjegavanjem metode kopiranja zajedno. Jednostavno postavite vrijednost odredišne ćelije na istu vrijednost koja se nalazi u izvornoj ćeliji. Ova metoda je otprilike 25 puta brža od korištenja metode kopiranja:
Raspon("B1").Vrijednost = Raspon("A1").Vrijednost
Ako trebate kopirati samo formule iz jedne ćelije u drugu (ne vrijednosti ili oblikovanje), možete postaviti formulu odredišne ćelije na istu formulu koja se nalazi u izvornoj ćeliji:
Raspon("B1").Formula = Raspon("A1").Formula
Prilikom snimanja makronaredbi, često ćete istim objektom manipulirati više puta. Možete uštedjeti vrijeme i poboljšati performanse korištenjem naredbe With za izvođenje nekoliko radnji na danom objektu u jednom kadru.
Naredba With korištena u sljedećem primjeru govori Excelu da primijeni sve promjene oblikovanja odjednom:
S rasponom("A1").Font
.Podebljano = Istina
.Italic = Istina
.Podcrtani = xlPodcrtaniStilSingle
Završi s
Stjecanje navike razdvajanja radnji u With naredbe ne samo da će vaše makronaredbe raditi brže nego će i olakšati čitanje koda makronaredbe.
Macro Recorder voli koristiti metodu Select za eksplicitno odabiranje objekata prije poduzimanja radnji na njima. Općenito nema potrebe za odabirom objekata prije rada s njima. Zapravo, možete dramatično poboljšati performanse makronaredbi ako ne koristite metodu Select.
Nakon snimanja makronaredbi, neka vam postane navika mijenjati generirani kod kako biste uklonili metode Select. U ovom slučaju, optimizirani kod bi izgledao ovako:
Sheets("Sheet1").Raspon("A1").FormulaR1C1 = "1000"
Sheets("Sheet2").Raspon("A1").FormulaR1C1 = "1000"
Sheets("Sheet3").Raspon("A1").FormulaR1C1 = "1000"
Imajte na umu da se ništa ne odabire. Kod jednostavno koristi hijerarhiju objekata za primjenu potrebnih radnji.
Drugi način da ubrzate svoje makronaredbe je ograničavanje broja pozivanja na podatke radnog lista u svom kodu. Uvijek je manje učinkovito preuzimati podatke s radnog lista nego iz memorije. To znači da će vaše makronaredbe raditi mnogo brže ako ne moraju više puta komunicirati s radnim listom.
Na primjer, sljedeći jednostavan kod prisiljava VBA da se kontinuirano vraća na Sheets(“Sheet1”).Range(“A1”) kako bi dobio broj potreban za usporedbu koja se izvodi u naredbi If:
Za mjesec izvješća = 1 do 12
If Range("A1").Vrijednost = ReportMonth Zatim
MsgBox 1000000 / IzvještajMjesec
Završi ako
Sljedeći mjesec izvješća
Mnogo učinkovitija metoda je spremanje vrijednosti u Sheets(“Sheet1”).Range(“A1”) u varijablu pod nazivom MyMonth. Na ovaj način, kod upućuje na varijablu MyMonth umjesto na radni list:
Dim MyMonth kao cijeli broj
MojMjesec = Raspon ("A1").Vrijednost
Za mjesec izvješća = 1 do 12
Ako je MyMonth = ReportMonth Onda
MsgBox 1000000 / IzvještajMjesec
Završi ako
Sljedeći mjesec izvješća
Razmislite o korištenju varijabli za rad s podacima u memoriji za razliku od izravnog upućivanja na radne listove.
Prilikom pozivanja metode ili svojstva objekta potrebno je proći kroz IDispatch sučelje OLE komponente. Za pozive ovim OLE komponentama potrebno je vrijeme, tako da smanjenje broja referenci na OLE komponente može poboljšati brzinu makro koda.
Za pozivanje svojstava ili metoda objekta općenito se koristi metoda predstavljanja Object.Method , to jest "." simbol se koristi za pozivanje svojstava i metoda.
Stoga se broj poziva metoda ili svojstava može procijeniti prema broju simbola ".". Što je manje "." simbola, kod se brže izvodi.
Na primjer, sljedeća izjava uključuje 3 simbola ".".
ThisWorkbook.Sheet1.Range("A1").Value = 100
Sljedeća izjava ima samo jedan simbol ".".
Activewindow.Top = 100
Evo nekoliko trikova za smanjenje broja simbola "." trčati brže.
Prvo, kada trebate više puta referirati na isti objekt, možete postaviti objekt na varijablu kako biste smanjili broj poziva. Na primjer, sljedeći kod zahtijeva dva poziva po retku.
ThisWorkbook.Sheets("Sheet1").Cells(1, 1) = 100
ThisWorkbook.Sheets("Sheet1").Cells(2, 1) = 200
ThisWorkbook.Sheets("Sheet1").Cells(3, 1) = 300
Budući da se objekt Sheets("Sheet1") mora više puta pozivati, može se prvo postaviti na varijablu sht , tako da svaki kôd treba pozvati samo jednom.
Set sht = ThisWorkbook.Sheets("Sheet1")
sht.Cells(1, 1) = 100
sht.Cells(2, 1) = 200
sht.Cells(3, 1) = 300
Drugo, ako ne želite deklarirati privremenu varijablu sht, također možete koristiti ranije spomenutu naredbu With . Kao što je prikazano u sljedećem primjeru:
With ThisWorkbook.Sheets("Sheet1")
.Cells(1, 1) = 100
.Cells(2, 1) = 200
.Cells(3, 1) = 300
End With
Treće, kada postoji mnogo petlji, pokušajte zadržati svojstva i metode izvan petlje. Prilikom ponovne upotrebe vrijednosti svojstva istog objekta u petlji, prvo možete dodijeliti vrijednost svojstva određenoj varijabli izvan petlje, a zatim koristiti varijablu u petlji, čime možete postići veću brzinu. Kao što je prikazano u sljedećem primjeru:
For i = 1 To 1000
ThisWorkbook.Sheets("Sheet1").Cells(1, 1) = Cells(1, 2).Value
ThisWorkbook.Sheets("Sheet1").Cells(2, 1) = Cells(1, 2).Value
ThisWorkbook.Sheets("Sheet1").Cells(3, 1) = Cells(1, 2).Value
Next i
Svaka petlja u ovom primjeru dobiva svojstvo Value ćelije Cells(1,2). Ako dodijelite svojstvo Value od Cells(1.2) varijabli prije početka petlje, dobit ćete brži rad. Kao što je prikazano u sljedećem primjeru:
tmp = Cells(1, 2).Value
For i = 1 To 1000
ThisWorkbook.Sheets("Sheet1").Cells(1, 1) = tmp
ThisWorkbook.Sheets("Sheet1").Cells(2, 1) = tmp
ThisWorkbook.Sheets("Sheet1").Cells(3, 1) = tmp
Next i
Gornji kod poziva ThisWorkbook.Sheets("Sheet1") svaki put kada se pokrene. To možete učiniti brže korištenjem naredbe With za premještanje poziva na ThisWorkbook.Sheets("Sheet1") izvan petlje. Kao što je prikazano u sljedećem primjeru:
tmp = Cells(1, 2).Value
With ThisWorkbook.Sheets("Sheet1")
For i = 1 To 1000
.Cells(1, 1) = tmp
.Cells(2, 1) = tmp
.Cells(3, 1) = tmp
Next i
End With
Početnici obično radije koriste varijable tipa Variant, čija je prednost što je manje komplicirana jer se može koristiti bilo koja vrsta podataka bez problema s prekoračenjem memorije ako su podaci preveliki za vrste podataka Integer ili Long. Međutim, podaci tipa Varienmt zahtijevaju više dodatnog memorijskog prostora od ostalih navedenih tipova (2 bajta za podatke Integer, 4 bajta za podatke Long i 16 bajtova za podatke tipa Variant), VBA zahtijeva više vremena za obradu podataka tipa Variant nego drugi navedeni tipovi podataka. Kao što pokazuje sljedeći primjer.
Sub VariantTest()
Dim i As Long
Dim ix As Integer, iy As Integer, iz As Integer
Dim vx As Variant, vy As Variant, vz As Variant
Dim tm As Date
vx = 100: vy = 50
tm = Timer
For i = 1 To 1000000
vz = vx * vy
vz = vx + vy
vz = vx - vy
vz = vx / vy
Next i
Debug.Print "Variant types take " & Format((Timer - tm), "0.00000") & " seconds"
ix = 100: iy = 50
tm = Timer
For i = 1 To 1000000
iz = ix * iy
iz = ix + iy
iz = ix - iy
iz = ix / iy
Next i
Debug.Print "Integer types take " & Format((Timer - tm), "0.00000") & " seconds"
End Sub
U gornjem kodu, linije od 8 do 13 obavljaju 1 milijun operacija zbrajanja, oduzimanja, množenja i dijeljenja varijabli Variant, a linije od 17 do 22 obavljaju 1 milijun operacija zbrajanja, oduzimanja, množenja i dijeljenja varijabli Integer. Na mom računalu operacija varijable Variant trajala je oko 0,09375 sekundi, dok je operacija varijable Integer trajala oko 0,03125 sekundi. Rezultati se mogu razlikovati od računala do računala, ali Variant varijable su značajno sporije od Integer varijabli .
Iz tog razloga, preporuča se izbjegavati korištenje Variant varijabli kada možete eksplicitno koristiti navedeni tip podataka .
Naučite kako postaviti upite u Access bazi podataka uz jednostavne korake i savjete za učinkovito filtriranje i sortiranje podataka.
Tabulatori su oznake položaja u odlomku programa Word 2013 koje određuju kamo će se točka umetanja pomaknuti kada pritisnete tipku Tab. Otkrijte kako prilagoditi tabulatore i optimizirati svoj rad u Wordu.
Word 2010 nudi mnoge načine označavanja i poništavanja odabira teksta. Otkrijte kako koristiti tipkovnicu i miš za odabir blokova. Učinite svoj rad učinkovitijim!
Naučite kako pravilno postaviti uvlaku za odlomak u Wordu 2013 kako biste poboljšali izgled svog dokumenta.
Naučite kako jednostavno otvoriti i zatvoriti svoje Microsoft PowerPoint 2019 prezentacije s našim detaljnim vodičem. Pronađite korisne savjete i trikove!
Saznajte kako crtati jednostavne objekte u PowerPoint 2013 uz ove korisne upute. Uključuje crtanje linija, pravokutnika, krugova i više.
U ovom vodiču vam pokazujemo kako koristiti alat za filtriranje u programu Access 2016 kako biste lako prikazali zapise koji dijele zajedničke vrijednosti. Saznajte više o filtriranju podataka.
Saznajte kako koristiti Excelove funkcije zaokruživanja za prikaz čistih, okruglih brojeva, što može poboljšati čitljivost vaših izvješća.
Zaglavlje ili podnožje koje postavite isto je za svaku stranicu u vašem Word 2013 dokumentu. Otkrijte kako koristiti različita zaglavlja za parne i neparne stranice.
Poboljšajte čitljivost svojih Excel izvješća koristeći prilagođeno oblikovanje brojeva. U ovom članku naučite kako se to radi i koja su najbolja rješenja.