Lábjegyzetek és végjegyzetek létrehozása a Word 2013-ban
Lábjegyzetek és végjegyzetek létrehozása a Word 2013-ban. Részletes útmutató, hogyan készíthet különféle stílusú jegyzeteket bibliográfiai információkhoz vagy magyarázó megjegyzésekhez.
Ahogy az Excel makrók egyre robusztusabbá és összetettebbé válnak, azt tapasztalhatja, hogy veszítenek teljesítményükből. Amikor makrókról beszélünk, a teljesítmény szó általában a sebesség szinonimája . A sebesség az, hogy a VBA-eljárások milyen gyorsan hajtják végre a tervezett feladatokat. Az alábbiakban tíz módszert mutatunk be, amellyel az Excel-makrók optimális teljesítményszinten futhatnak.
Tudta, hogy minden alkalommal, amikor a táblázat bármely képletét befolyásoló cellát módosítanak vagy manipulálnak, az Excel újraszámolja a teljes munkalapot? A nagy mennyiségű képletet tartalmazó munkalapokon ez a viselkedés drasztikusan lelassíthatja a makrókat.
Az Application.Calculation tulajdonság segítségével az Excel kézi számítási módba váltásra utasíthatja. Ha egy munkafüzet kézi számítási módban van, a munkafüzet nem számít újra, amíg az F9 billentyű lenyomásával kifejezetten nem indítja el a számítást.
Helyezze az Excelt kézi számítási módba, futtassa a kódot, majd váltson vissza automatikus számítási módba.
Almakró1() Application.Calculation = xlCalculationManual „Helyezze ide a makrókódját Application.Calculation = xlCalculationAutomatic Vége Sub
Ha a számítási módot visszaállítja xlCalculationAutomatic-ra, akkor a munkalap újraszámítása automatikusan elindul, így a makró futtatása után nem kell megnyomnia az F9 billentyűt.
Észreveheti, hogy amikor a makrók futnak, a képernyő eléggé villog. Ez a villogás azt jelenti, hogy az Excel megpróbálja átrajzolni a képernyőt, hogy megjelenítse a munkalap aktuális állapotát. Sajnos minden alkalommal, amikor az Excel újrarajzolja a képernyőt, lefoglalja a memória erőforrásait.
Az Application.ScreenUpdating tulajdonság használatával letilthatja a képernyőfrissítéseket, amíg a makró be nem fejeződik. A képernyőfrissítés letiltása időt és erőforrásokat takarít meg, így a makró egy kicsit gyorsabban futhat. A makrókód futása után újra bekapcsolhatja a képernyőfrissítést.
Almakró1() Application.Calculation = xlCalculationManual Application.ScreenUpdating = Hamis „Helyezze ide a makrókódját Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = Igaz Vége Sub
Miután visszaállította a ScreenUpdating tulajdonságot True értékre, az Excel automatikusan elindítja a képernyő újrarajzolását.
Az Excel állapotsora, amely az Excel ablakának alján jelenik meg, általában megjeleníti bizonyos műveletek előrehaladását az Excelben. Ha a makró sok adattal működik, az állapotsor bizonyos erőforrásokat foglal el.
Fontos megjegyezni, hogy a képernyőfrissítés kikapcsolása elkülönül az állapotsor megjelenítésének kikapcsolásától. Az állapotsor akkor is frissül, ha letiltja a képernyőfrissítést. Az Application.DisplayStatusBar tulajdonság segítségével ideiglenesen letilthatja az állapotsor frissítéseit, tovább javítva ezzel a makró teljesítményét:
Almakró1() Application.Calculation = xlCalculationManual Application.ScreenUpdating = Hamis Application.DisplayStatusBar = False „Helyezze ide a makrókódját Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = Igaz Application.DisplayStatusBar = Igaz Vége Sub
A makrókat eseményeljárásként valósíthatja meg, és megmondja az Excelnek, hogy futtasson bizonyos kódot, amikor egy munkalap vagy munkafüzet megváltozik.
Néha a szabványos makrók olyan változtatásokat hajtanak végre, amelyek eseményeljárást indítanak el. Például, ha van egy szabványos makrója, amely több cellát is kezel az 1. munkalapon, minden egyes alkalommal, amikor egy cellát módosítanak azon a munkalapon, a makrónak szüneteltetnie kell, amíg a Worksheet_Change esemény fut.
Az EnableEvents tulajdonság használatával az Excel figyelmen kívül hagyja az eseményeket, miközben a makró fut, további teljesítménynövelési szintet adhat hozzá.
A makró futtatása előtt állítsa az EnableEvents tulajdonságot False értékre. A makrókód futtatása után az EnableEvents tulajdonságot visszaállíthatja True értékre.
Almakró1() Application.Calculation = xlCalculationManual Application.ScreenUpdating = Hamis Application.DisplayStatusBar = False Application.EnableEvents = False „Helyezze ide a makrókódját Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = Igaz Application.DisplayStatusBar = Igaz Application.EnableEvents = Igaz Vége Sub
Minden alkalommal, amikor a makró módosítja a sorok számát, módosítja az oszlopok számát vagy módosítja a munkalap oldalbeállításait, az Excelnek időt kell szánnia a lapon megjelenő oldaltörések újraszámítására.
Ezt a viselkedést elkerülheti, ha egyszerűen elrejti az oldaltöréseket a makró elindítása előtt.
Az oldaltörések elrejtéséhez állítsa a DisplayPageBreaks laptulajdonságot False értékre. Ha továbbra is szeretné megjeleníteni az oldaltöréseket a makró futtatása után, állítsa vissza a DisplayPageBreaks laptulajdonságot True értékre.
Almakró1() Application.Calculation = xlCalculationManual Application.ScreenUpdating = Hamis Application.DisplayStatusBar = False Application.EnableEvents = False Activesheet.DisplayPageBreaks = Hamis „Helyezze ide a makrókódját Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = Igaz Application.DisplayStatusBar = Igaz Application.EnableEvents = Igaz Activesheet.DisplayPageBreaks = Igaz Vége Sub
Ha a makró nagy adatforrásokat tartalmazó pivot táblákat manipulál, gyenge teljesítményt tapasztalhat például pivot mezők dinamikus hozzáadása vagy mozgatása során.
Javíthatja a makró teljesítményét, ha felfüggeszti a pivot tábla újraszámítását mindaddig, amíg az összes pivot mező módosítást el nem végezte. Egyszerűen állítsa a PivotTable.ManualUpdate tulajdonságot True értékre az újraszámítás elhalasztásához, futtassa a makrókódot, majd állítsa vissza a PivotTable.ManualUpdate tulajdonságot False értékre az újraszámítás elindításához.
Almakró1() ActiveSheet.PivotTables("PivotTable1").ManualUpdate=True „Helyezze ide a makrókódját ActiveSheet.PivotTables("PivotTable1").ManualUpdate=False Vége Sub
Fontos megjegyezni, hogy bár a Macro Recorder időt takarít meg azzal, hogy VBA-kódot ír Önnek, nem mindig a leghatékonyabb kódot írja meg. Kiváló példa arra, hogy a Macro Recorder hogyan rögzít minden másolási és beillesztési műveletet, amelyet rögzítés közben hajt végre.
A makrókat enyhén felerősítheti, ha kivágja a közvetítőt, és közvetlenül másol egy cellát a célcellába. Ez az alternatív kód a Destination argumentumot használja a vágólap megkerülésére, és az A1 cella tartalmának közvetlenül a B1 cellába másolására.
Tartomány("A1").Cél másolása:=Tartomány("B1")
Ha csak értékeket kell másolnia (a formázást vagy a képleteket nem), a teljesítményt még jobban növelheti, ha elkerüli a Másolás módszert. Egyszerűen állítsa be a célcella értékét a forráscellában található értékre. Ez a módszer körülbelül 25-ször gyorsabb, mint a másolási módszer:
Tartomány("B1").Érték = Tartomány("A1").Érték
Ha csak képleteket kell átmásolnia egyik cellából a másikba (nem értékeket vagy formázást), beállíthatja a célcella képletét a forráscellában található képletre:
Tartomány("B1").Képlet = Tartomány("A1").Képlet
Makrók rögzítésekor gyakran többször is manipulálhatja ugyanazt az objektumot. Időt takaríthat meg és javíthatja a teljesítményt, ha a With utasítással több műveletet hajt végre egy adott objektumon egy felvételben.
A következő példában használt With utasítás arra utasítja az Excelt, hogy az összes formázási változtatást egyszerre alkalmazza:
Tartomány("A1").Font .Bold = Igaz .Dőlt = Igaz .Aláhúzás = xlUnderlineStyleSingle Vége ezzel
Ha megszokja, hogy a műveleteket a With utasításokba csoportosítsa, akkor nem csak gyorsabban futnak majd a makrók, hanem könnyebbé válik a makrókódok beolvasása is.
A Macro Recorder előszeretettel használja a Select metódust az objektumok explicit kijelölésére, mielőtt műveleteket hajtana végre rajtuk. Általában nincs szükség az objektumok kiválasztására, mielőtt velük dolgozna. Valójában drámaian javíthatja a makró teljesítményét, ha nem használja a Select módszert.
A makrók rögzítése után tegye szokássá, hogy módosítsa a generált kódot a Select metódusok eltávolítása érdekében. Ebben az esetben az optimalizált kód a következőképpen néz ki:
Sheets("Sheet1").Tartomány("A1").FormulaR1C1 = "1000" Sheets("Sheet2").Tartomány("A1").FormulaR1C1 = "1000" Sheets("Sheet3").Tartomány("A1").FormulaR1C1 = "1000"
Vegye figyelembe, hogy a semmi van kiválasztva. A kód egyszerűen az objektumhierarchiát használja a szükséges műveletek végrehajtásához.
A makrók felgyorsításának másik módja az, hogy korlátozza a munkalapadatokra való hivatkozások számát a kódban. Mindig kevésbé hatékony az adatok lekérése a munkalapról, mint a memóriából. Ez azt jelenti, hogy a makrók sokkal gyorsabban futnak, ha nem kell többszörösen interakcióba lépniük a munkalappal.
Például a következő egyszerű kód arra kényszeríti a VBA-t, hogy folyamatosan visszatérjen a Sheets(“Sheet1”).Range(“A1”)-hez, hogy megkapja az If utasításban végrehajtandó összehasonlításhoz szükséges számot:
A jelentés hónapja esetén = 1-től 12-ig Ha Tartomány("A1").Érték = ReportMonth Akkor MsgBox 1000000 / JelentésHónap Vége Ha Következő jelentés hónap
Sokkal hatékonyabb módszer, ha az értéket a Sheets(“Sheet1”).Range(“A1”) mappába mentjük a MyMonth nevű változóba. Így a kód a MyMonth változóra hivatkozik a munkalap helyett:
Dim MyMonth egész számként Saját hónap = Tartomány("A1").Érték A jelentés hónapja esetén = 1-től 12-ig Ha MyMonth = JelentésHónap Akkor MsgBox 1000000 / JelentésHónap Vége Ha Következő jelentés hónap
Fontolja meg a változók kihasználását a memóriában lévő adatokkal való munkavégzéshez, a munkalapokra való közvetlen hivatkozás helyett.
Egy objektum metódusának vagy tulajdonságának meghívásakor át kell mennie az OLE összetevő IDispatch felületén. Ezen OLE-összetevők hívása időt vesz igénybe, így az OLE-összetevőkre való hivatkozások számának csökkentése javíthatja a makrókód sebességét.
Az objektumtulajdonságok vagy metódusok meghívásához általában az Object.Method ábrázolási módszerét használják, azaz a "." szimbólum a tulajdonságok és metódusok meghívására szolgál.
Ezért a metódus- vagy tulajdonsághívások száma a "." szimbólumok száma alapján ítélhető meg. Minél kevesebb a "." szimbólum, annál gyorsabban fut a kód.
Például a következő utasítás 3 "." szimbólumot tartalmaz.
ThisWorkbook.Sheet1.Range("A1").Value = 100
A következő állításnak csak egy "." szimbóluma van.
Activewindow.Top = 100
Íme néhány trükk a "." szimbólumok számának csökkentésére. gyorsabban futni.
Először is, ha ismételten hivatkoznia kell ugyanarra az objektumra, beállíthatja az objektumot egy változóra a hívások számának csökkentése érdekében. Például a következő kód vonalonként két hívást igényel.
ThisWorkbook.Sheets("Sheet1").Cells(1, 1) = 100
ThisWorkbook.Sheets("Sheet1").Cells(2, 1) = 200
ThisWorkbook.Sheets("Sheet1").Cells(3, 1) = 300
Mivel a Sheets("Sheet1") objektumra többször kell hivatkozni, először beállítható egy sht változóra , így minden kódot csak egyszer kell meghívni.
Set sht = ThisWorkbook.Sheets("Sheet1")
sht.Cells(1, 1) = 100
sht.Cells(2, 1) = 200
sht.Cells(3, 1) = 300
Másodszor, ha nem akarunk ideiglenes sht változót deklarálni, használhatjuk a korábban említett With utasítást is. A következő példában látható módon:
With ThisWorkbook.Sheets("Sheet1")
.Cells(1, 1) = 100
.Cells(2, 1) = 200
.Cells(3, 1) = 300
End With
Harmadszor, ha sok a ciklus, próbálja meg a tulajdonságokat és metódusokat a cikluson kívül tartani. Ha ugyanazon objektum egy tulajdonságértékét ismételten felhasználja egy hurokban, először hozzárendelheti a tulajdonság értékét egy megadott változóhoz a hurkon kívül, majd használhatja a hurokban lévő változót, amellyel gyorsabb sebesség érhető el. A következő példában látható módon:
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
Ebben a példában minden ciklus megkapja a Cells(1,2) cella Value tulajdonságát. Ha a Cells(1.2) Value tulajdonságát a ciklus megkezdése előtt hozzárendeli egy változóhoz, akkor gyorsabban fut. A következő példában látható módon:
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
A fenti kód a ThisWorkbook.Sheets("Sheet1") függvényt minden alkalommal meghívja, amikor ismétlődik. Ezt gyorsabban megteheti, ha a With utasítással a cikluson kívülre helyezi át a hívást a ThisWorkbook.Sheets("Sheet1") oldalra. A következő példában látható módon:
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
A kezdők általában előnyben részesítik a Variant típusú változókat, aminek az az előnye, hogy kevésbé bonyolult, mivel bármilyen típusú adat felhasználható a memória túlcsordulási problémája nélkül, ha az adatok túl nagyok az Integer vagy Long adattípusokhoz. A Varienmt típusú adatok azonban több extra memóriaterületet igényelnek, mint a többi megadott típus (2 bájt egész adatokhoz, 4 bájt hosszú adatokhoz és 16 bájt Variant adatokhoz), a VBA több időt igényel a Variant típusú adatok feldolgozásához, mint a többi megadott típus. adatokból. Ahogy a következő példa mutatja.
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
A fenti kódban a 8-tól 13-ig terjedő sorok 1 millió összeadási, kivonási, szorzási és osztási műveletet hajtanak végre a Variant változók, a 17-22 sorok pedig 1 millió műveletet egész változók összeadására, kivonására, szorzására és osztására. Számítógépemen a Variant változó működése körülbelül 0,09375 másodpercig, míg az Integer változó működése körülbelül 0,03125 másodpercig tartott. Az eredmények számítógépenként változhatnak, de a Variant változók lényegesen lassabbak, mint az Integer változók .
Emiatt ajánlatos kerülni a Variant változók használatát, ha kifejezetten használhatja a megadott adattípust .
Lábjegyzetek és végjegyzetek létrehozása a Word 2013-ban. Részletes útmutató, hogyan készíthet különféle stílusú jegyzeteket bibliográfiai információkhoz vagy magyarázó megjegyzésekhez.
Tudjon meg mindent arról, hogyan lehet az Excelben kiemelni a statisztikailag kiugró értékeket, mégpedig egyszerű eszközökkel és módszerekkel. Kiemelt figyelmet fordítunk a kiugró értékek azonosítására és kezelésére.
Az Excel Mintavételi eszközével véletlenszerűen kiválaszthat elemeket egy adatkészletből vagy választhat minden n-edik elemet. Ismerje meg, hogyan használhatja ezt a hasznos funkciót az adatelemzéshez!
Fedezze fel a Microsoft Word 2019 legjobb trükkjeit, amelyek segítenek a hatékonyabb munkavégzésben. Tudd meg, hogyan használhatod ki a program funkcióit!
A Word 2019-ben a bekezdések igazítása és behúzása kulcsfontosságú a dokumentumok megfelelő megjelenítéséhez. Ismerje meg a formázási lehetőségeket és tippeket a hatékonyabb munkához.
Fedezze fel, hogyan használhatja az Excel 2019 Solver bővítményt a komplex problémák megoldására. A célcella, változócellák és kényszerek beállítása lépésről lépésre.
A Word lehetővé teszi dinamikus elemek hozzáadását a dokumentumhoz. Fedezze fel, hogyan lehet különböző mezőket használni a Word programban a dinamikus tartalom létrehozásához.
A SharePoint 2010 oszlopai az adatok tárolására szolgálnak. Fedezze fel a különböző oszlop típusokat és azok alkalmazását a SharePoint rendszeren belül.
A Word 2013 szövegtörlésének képessége kulcsfontosságú, legyen szó szövegalkotásról vagy törlésről. Ismerje meg a hatékony szövegtörlési módszereket!
A fotóalbum funkció a PowerPoint 2016-ban lehetővé teszi, hogy egyszerre több fényképet illesszen be egy prezentációba, megkönnyítve ezzel a többszörös képek kezelését.