Objektový model MS Excel. Práce v prostředí VBA. Správa vlastností objektu. Objektový model MS Excel, objekt aplikace. GoTo - přechod do buňky

Anotace: Přednáška je věnována popisu objektového modelu MS Excel a podrobný popis Aplikační metody, vlastnosti a události.

13.1. Vlastnosti programování pro MS Excel

Microsoft Office Excel jsou oblíbené tabulky. Při programování tohoto programu se obvykle sledují následující cíle:

  • Automatizace výpočtů.
  • Automatizace vstupu a zpracování informací.
  • Práce s databázemi - výstup, vstup, analýza, vizualizace informací.
  • Analýza finančních a jiných informací.
  • Tvorba systémů pro organizaci automatizovaného zadávání dat
  • Matematické modelování.

Obecně programování Excel je podobný práci s Microsoft Word. Jedním z hlavních rozdílů je však to, že v Excelu je oblast listu rozdělena na buňky, z nichž každá má svůj vlastní název. Názvy buněk mohou být dvou typů.

  • První druh (styl A1) je název skládající se z abecedního názvu sloupce a čísla řádku. Například A1 je buňka umístěná na průsečíku sloupce A (prvního) a prvního řádku.
  • Dalším typem jsou buněčné indexy (styl pojmenování R1C1). Chcete-li buňku adresovat tímto stylem, uveďte číslo řádku (R - Row) a číslo sloupce (C - Column), na jejichž průsečíku se buňka nachází. Řádky jsou zpočátku očíslovány a čísla sloupců začínají od 1 - první sloupec odpovídá sloupci A, druhý - B atd. Například (2, 3) je adresa buňky umístěné na průsečíku druhého řádku a třetího sloupce, to znamená, že pokud to přeneseme do stylu A1, dostaneme buňku C2 (obr. 13.1.)


Rýže. 13.1.

Následující objekty slouží k provádění většiny operací v MS Excel.

  • Excel.Application - objekt představující aplikace Microsoft Excel, podobně jako Word.Application.
  • Pracovní sešit(Sešit) - představuje sešit - obdobu dokumentu Microsoft Word. Ve Wordu však pracujeme s daty umístěnými v dokumentu a v Excelu je na cestě k datům další objekt – list.
  • Pracovní list(Worksheet) - sešit v MS Excel je rozdělen na listy. Právě na listu jsou buňky, které mohou ukládat informace a vzorce.
  • Rozsah – může být reprezentován jako jedna buňka nebo skupina buněk. Tento objekt nahrazuje mnoho objektů pro práci s prvky dokumentu (znak, slovo atd.), které se používají v aplikaci Microsoft Word. Díky tomu se práce s listem stává velmi přehlednou a pohodlnou – pro práci s jakoukoli buňkou vám stačí znát její název (ve formátu A1) nebo adresu (R1C1).
  • QueryTable - tento objekt se používá pro import do Microsoftu Excel informace z databází. Připojování k databázi, žádost o informace atd. jsou vytvářeny pomocí objektu a výsledky požadavku jsou nahrány do listu MS Excel ve formě běžné tabulky.
  • Kontingenční tabulka je speciální typ excelové tabulky – umožňuje interaktivně sumarizovat a analyzovat velké množství informací, zejména převzatých z databáze.
  • Schéma(Diagram) - představuje diagram. Obvykle se používají pro vizualizaci dat.

Začněme recenzovat Objektový model MS Excel z objektu Application.

13.2. Objekt aplikace

MsgBox Excel.Název.Aplikace Výpis 13.1.

Zobrazit název aplikace

Po spuštění programu se v okně se zprávou zobrazí název aplikace – v tomto případě Microsoft Excel. Je zřejmé, že vlastnost Name objektu Application vrací název aplikace.

Nyní se podívejme na nejdůležitější aplikační metody a vlastnosti. Některé z nich jsou podobné těm v MS Word. Například metoda Quit, stejně jako ve Wordu, zavře aplikaci, vlastnost Visible je zodpovědná za viditelnost okna programu atd.

13.3. Aplikační metody

13.3.1. Vypočítat - vynucený přepočet Pracovní sešit Tato metoda, volaná na objektu Application, umožňuje spočítat všechna otevření knihy. Lze jej vyvolat i pro jednotlivé knihy (objekt Pracovní list) listy (

), buňky a jejich rozsahy (Rozsah). Například kód z výpisu 13.2. umožňuje spočítat všechny otevřené knihy. Aplikace.Vypočítejte

Výpis 13.2.

Spočítejte všechny otevřené knihy

13.3.2. GoTo - přechod do buňky 13-02-Excel GoTo.xlsm – příklad pro článek 13.3.2. Umožňuje vybrat libovolný rozsah buněk v jakékoli knize, a pokud kniha není aktivní, bude aktivována. Metoda může také běžet

makra společnosti Microsoft

Vynikat.

Úplné volání metody vypadá takto:

Parametr Posouvání je zodpovědný za „přetočení“ listu Excelu do vybraných buněk - tak, aby se levý horní roh výběru shodoval s levým horním rohem zobrazené oblasti listu. Pokud je Scroll nastaven na True, list se převine, pokud je nastaven na False, není.

Například takové volání (Výpis 13.3) umožňuje vybrat buňku H500 na aktivním listu.

Application.Goto _ Reference:=ActiveSheet.Range("H500"), _ Scroll:=True Výpis 13.3.

Vyberte buňku H500 Jak vidíte, přístup k aktivnímu listu je velmi podobný přístupu k aktivnímu dokumentu v MS Word. Všimněte si, že používáme úplné volání metody - Application.GoTo - jak víte, obvykle můžete použít vlastnosti a metody objektu Application v kódu, aniž byste objekt specifikovali. Pokud však v tomto případě nezadáte Application, pak se místo metody GoTo program pokusí provést operátor bezpodmínečný přechod

Přejít na.

13.3.3. SendKeys - simulace stisku kláves na klávesnici

13-03-Excel SendKeys.xlsm – příklad pro článek 13.3.3.

Velmi zajímavá metoda – umožňuje přenášet stisknuté klávesy do aktivního okna aplikace. Úplné volání metody vypadá takto:

SendKeys (klávesy, čekejte) Parametr Keys umožňuje určit klávesy, jejichž stisk bude přenášen do aplikace. Metoda podporuje emulaci jak alfanumerických, tak i ovládací klávesy , pro které se používá speciální kódování. Alfanumerické klávesy jsou indikovány při volání do vašeho v obvyklé podobě

Chcete-li například předat znak "F", musíte jej zadat při volání metody atd. K předání úhozů do aplikace Backspace - použijte kód (BS). Pro vysílání stiskněte tlačítko Vstupte

použijte ikonu ~ ( Období Objekty Excelu (obecně chápaný jako objektový model aplikace Excel) zahrnuje prvky, které tvoří jakýkoli sešit aplikace Excel. Jsou to například pracovní listy ( Pracovní listy ), struny (Řádky ), sloupce ( Sloupce ), rozsahy buněk ( Rozsahy ) a samotný sešit Excel ( Pracovní sešit

) včetně. Každý objekt aplikace Excel má sadu vlastností, které jsou jeho nedílnou součástí. Například objekt Pracovní list (pracovní list) má vlastnosti Jméno (Jméno), Ochrana (ochrana), Viditelné (viditelnost), Oblast posouvání (ochrana),(rolovací oblast) a tak dále. Pokud tedy během provádění makra potřebujete skrýt list, stačí změnit vlastnost

tento list. V Excel VBA existuje speciální typ objektů −. Jak název napovídá, kolekce označuje skupinu (nebo kolekci) objektů aplikace Excel. Například sbírka ), struny ( je objekt obsahující všechny řádky listu.

Prostřednictvím objektu lze přistupovat (přímo nebo nepřímo) ke všem hlavním objektům aplikace Excel Pracovní sešity, což je kolekce všech aktuálně otevřených sešitů. Každý sešit obsahuje objekt Listy– kolekce, která obsahuje všechny listy a listy diagramů v sešitu. Každý objekt Například objekt skládá se z kolekce ), struny (– zahrnuje všechny řádky listu a kolekce ), sloupce (– všechny sloupce listu atd.

V následující tabulce jsou uvedeny některé z nejčastěji používaných objektů aplikace Excel. Úplný seznam Objekty Excel VBA lze nalézt na webu Microsoft Office Developer (v angličtině).

Objekt Popis
Aplikace aplikace Excel.
Pracovní sešity Kolekce všech aktuálně otevřených sešitů v aktuální aplikaci Excel. Ke konkrétnímu sešitu lze přistupovat prostřednictvím objektu Pracovní sešity pomocí číselného rejstříku sešitu nebo jeho názvu, např. sešity (1) nebo Pracovní sešity („Sešit 1“).
) a samotný sešit Excel ( Objekt ) a samotný sešit Excel (- Toto je pracovní sešit. Lze k němu přistupovat prostřednictvím sbírky Pracovní sešity pomocí číselného rejstříku nebo názvu sešitu (viz výše). Pro přístup k aktuálně aktivnímu sešitu můžete použít Aktivní sešit.

Z objektu ) a samotný sešit Excel ( můžete k objektu přistupovat Listy, což je kolekce všech listů v sešitu (listy a grafy) a také objekt (obecně chápaný jako objektový model aplikace Excel) zahrnuje prvky, které tvoří jakýkoli sešit aplikace Excel. Jsou to například pracovní listy (, což je kolekce všech listů v sešitu aplikace Excel.

Listy Objekt Listy je sbírka všech listů v sešitu. Mohou to být pracovní listy nebo diagramy. samostatný list. Přístup k jednotlivému listu z kolekce Listy lze získat pomocí číselného indexu listu nebo jeho názvu, např. Listy (1) nebo Tabulky (“List1”).
(obecně chápaný jako objektový model aplikace Excel) zahrnuje prvky, které tvoří jakýkoli sešit aplikace Excel. Jsou to například pracovní listy ( Objekt (obecně chápaný jako objektový model aplikace Excel) zahrnuje prvky, které tvoří jakýkoli sešit aplikace Excel. Jsou to například pracovní listy ( je kolekce všech listů v sešitu (tj. všech listů kromě grafů na samostatném listu). Přístup k jednotlivému listu z kolekce (obecně chápaný jako objektový model aplikace Excel) zahrnuje prvky, které tvoří jakýkoli sešit aplikace Excel. Jsou to například pracovní listy ( lze získat pomocí číselného indexu listu nebo jeho názvu, např. Pracovní listy (1) nebo Pracovní listy (“List1”).
Například objekt Objekt Například objekt je samostatný list v sešitu aplikace Excel. Lze k němu přistupovat pomocí číselného indexu listu nebo názvu listu (viz výše).

Kromě toho můžete použít ActiveSheet pro přístup k aktuálně aktivnímu listu. Z objektu Například objekt objekty jsou přístupné ), struny ( A ), sloupce (, které jsou sbírkou předmětů Rozsah, odkazující na řádky a sloupce listu. Můžete také přistupovat samostatná buňka nebo do libovolného rozsahu souvislých buněk na listu.

), struny ( Objekt ), struny ( je kolekce všech řádků v listu. Objekt Rozsah, sestávající z jednoho řádku listu, lze přistupovat pomocí tohoto čísla řádku, např. Řádky (1).
), sloupce ( Objekt ), sloupce ( je kolekce všech sloupců listu. Objekt Rozsah, sestávající z jednoho sloupce listu, lze získat přístup pomocí tohoto čísla sloupce, např. Sloupce(1).
Rozsah Objekt Rozsah je libovolný počet sousedních buněk na listu. Může to být jedna buňka nebo všechny buňky listu.

Rozsah sestávající z jedné buňky je přístupný prostřednictvím objektu Například objekt užívání majetku Buňky, například Worksheet.Cells(1,1).

Jiným způsobem lze zapsat odkaz na rozsah zadáním adres počáteční a koncové buňky. Mohou být psány oddělené dvojtečkou nebo čárkou. Například, Worksheet.Range(“A1:B10”) nebo Worksheet.Range("A1", "B10") nebo Worksheet.Range(Cells(1,1), Cells(10,2)).

Všimněte si prosím, zda adresa Rozsah druhá buňka není specifikována (např. Worksheet.Range(“A1”) nebo Worksheet.Range(Cells(1,1)), pak bude vybrán rozsah skládající se z jedné buňky.

Výše uvedená tabulka ukazuje, jak se k objektům Excelu přistupuje prostřednictvím nadřazených objektů. Například odkaz na rozsah buněk lze zapsat takto:

Workbooks("Sešit1").Worksheets("Sheet1").Rozsah("A1:B10")

Přiřazení objektu k proměnné

V aplikaci Excel VBA lze objekt přiřadit proměnné pomocí klíčového slova Soubor:

Dim DataWb jako Workbook Set DataWb = Workbooks("Sešit1.xlsx")

Aktivní objekt

V Excelu je v daný okamžik aktivní objekt ) a samotný sešit Excel ( je sešit aktuálně otevřený. Stejně tak existuje aktivní objekt Například objekt, aktivní objekt Rozsah a tak dále.

Viz aktivní objekt ) a samotný sešit Excel ( nebo List v kódu VBA to můžete udělat takto: Aktivní sešit nebo ActiveSheet a na aktivní objekt Rozsah- jako v Výběr.

Pokud kód VBA obsahuje odkaz na list bez určení, do kterého sešitu patří, Excel jako výchozí použije aktivní sešit. Podobně, pokud odkazujete na rozsah bez určení konkrétního sešitu nebo listu, Excel jako výchozí použije aktivní list v aktivním sešitu.

Tedy odkazovat na rozsah A1:B10 na aktivním listu aktivního sešitu můžete jednoduše napsat:

Rozsah("A1:B10")

Změna aktivního objektu

Pokud během provádění programu potřebujete aktivovat další sešit, jiný list, rozsah atd., musíte použít metody Aktivovat nebo Vybrat takhle:

Sub ActivateAndSelect() Workbooks("Sešit2").Activate Worksheets("Sheet2").Select Worksheets("Sheet2").Range("A1:B10").Select Worksheets("Sheet2").Range("A5") .Aktivujte End Sub

Objektové metody, včetně právě použitých metod Aktivovat nebo Vybrat, bude podrobněji probráno níže.

Vlastnosti objektu

Každý objekt VBA má přiřazeny vlastnosti. Například objekt ) a samotný sešit Excel ( má vlastnosti (pracovní list) má vlastnosti Jméno Číslo revize(počet uložení), Listy(listy) a mnoho dalších. Chcete-li získat přístup k vlastnostem objektu, musíte napsat název objektu, poté tečku a poté název vlastnosti. Například název aktivního sešitu lze získat takto: ActiveWorkbook.Name. Tedy přiřadit k proměnné wbName název aktivního sešitu, můžete použít tento kód:

Dim wbName As String wbName = ActiveWorkbook.Name

Dříve jsme ukázali, jak objekt ) a samotný sešit Excel ( lze použít pro přístup k objektu Například objekt pomocí tohoto příkazu:

Workbooks("Sešit1").Worksheets("Sheet1")

To je možné, protože sbírka (obecně chápaný jako objektový model aplikace Excel) zahrnuje prvky, které tvoří jakýkoli sešit aplikace Excel. Jsou to například pracovní listy ( je vlastnost objektu ) a samotný sešit Excel (.

Některé vlastnosti objektů jsou pouze pro čtení, což znamená, že uživatel nemůže měnit jejich hodnoty. Zároveň existují vlastnosti, které lze přiřadit různé významy. Chcete-li například změnit název aktivního listu na „ Můj pracovní list“, stačí přiřadit tento název vlastnosti (pracovní list) má vlastnosti aktivní list, takto:

ActiveSheet.Name = "Můj pracovní list"

Objektové metody

Objekty VBA mají metody pro provádění určitých akcí. Objektové metody– jedná se o procedury vázané na objekty určitého typu. Například objekt ) a samotný sešit Excel ( má metody Aktivovat, Blízko, Uložit a mnoho dalších.

Chcete-li volat metodu na objektu, musíte si zapsat název objektu, tečku a název metody. Chcete-li například uložit aktivní sešit, můžete použít tento řádek kódu:

ActiveWorkbook.Save

Stejně jako jiné procedury mohou mít metody argumenty, které jsou předány metodě při jejím volání. Například metoda Blízko objekt ) a samotný sešit Excel ( má tři volitelné argumenty, které určují, zda se má sešit uložit před uzavřením a podobně.

Chcete-li předat argumenty metodě, musíte si po volání metody zapsat hodnoty těchto argumentů oddělené čárkami. Například pokud chcete uložit aktivní sešit jako soubor .csv s názvem „Book2“, pak musíte metodu zavolat Uložit jako objekt ) a samotný sešit Excel ( a projít argumentem Název souboru význam Kniha2 a argument Formát souboru- význam xlCSV:

ActiveWorkbook.SaveAs "Book2", xlCSV

Aby byl váš kód čitelnější, můžete při volání metody použít pojmenované argumenty. V tomto případě napište nejprve název argumentu a poté operátor přiřazení „ := “ a za ním uveďte hodnotu. Takže výše uvedený příklad volání metody Uložit jako objekt ) a samotný sešit Excel ( lze napsat jinak:

ActiveWorkbook.SaveAs Název souboru:="Book2", :=xlCSV

V okně Prohlížeč objektů Visual Basic Editor zobrazuje seznam všech dostupných objektů, jejich vlastností a metod. Chcete-li tento seznam otevřít, spusťte Editor jazyka Visual Basic a klepněte na F2.

Podívejme se na pár příkladů

Příklad 1

Tento fragment kódu VBA může sloužit jako ilustrace použití smyčky Pro každého . V tomto případě na něj budeme odkazovat, abychom demonstrovali odkazy na objekty (obecně chápaný jako objektový model aplikace Excel) zahrnuje prvky, které tvoří jakýkoli sešit aplikace Excel. Jsou to například pracovní listy ((který je ve výchozím nastavení převzat z aktivního sešitu) a odkazy na každý objekt Například objekt odděleně. Všimněte si, že vlastnost použitá k zobrazení názvu každého listu je (pracovní list) má vlastnosti objekt Například objekt.

"Procházejte všechny listy v aktivním sešitu jeden po druhém" a zobrazte okno se zprávou s názvem každého listu Dim wSheet As Worksheet For Every wSheet in Worksheets MsgBox "Worksheet found: " & wSheet.Name Next wSheet

Příklad 2

Tento příklad kódu VBA ukazuje, jak můžete přistupovat k listům a oblastem buněk z jiných sešitů. Kromě toho se ujistíte, že pokud není uveden odkaz na konkrétní objekt, pak se ve výchozím nastavení použijí aktivní objekty Excel. Tento příklad ukazuje použití klíčového slova Soubor k přiřazení objektu k proměnné.

V níže uvedeném kódu pro objekt Rozsah se nazývá metoda PasteSpecial. Tato metoda předává argument Pasta význam xlPasteValues.

"Zkopírujte rozsah buněk z listu "Sheet1" jiného sešitu (s názvem Data.xlsx) "a vložte pouze hodnoty do listu "Results" aktuálního sešitu (s názvem CurrWb.xlsm) Dim dataWb As Workbook Set dataWb = Workbooks.Open( "C:\Data") "Všimněte si, že DataWb je aktivní sešit." další akce provedené na objektu Sheets v DataWb. Sheets("Sheet1").Range("A1:B10").Kopírovat "Vložit hodnoty zkopírované z rozsahu buněk do listu "Results" aktuálního sešitu. Vezměte prosím na vědomí, že sešit CurrWb.xlsm není "aktivní", a proto je třeba na něj odkazovat Workbooks("CurrWb").Sheets("Results").Range("A1").PasteSpecial Paste:=xlPasteValues.

Příklad 3

Následující fragment kódu VBA ukazuje příklad objektu (kolekce) ), sloupce ( a ukazuje, jak se k němu přistupuje z objektu Například objekt. Navíc uvidíte, že když odkazujete na buňku nebo oblast buněk v aktivním listu, nemusíte tento list zahrnout do odkazu. Opět se setkáváme s klíčovým slovem Soubor, s jehož pomocí objekt Rozsah přiřazené k proměnné Plk.

Tento kód VBA také ukazuje příklad přístupu k vlastnosti Hodnota objekt Rozsah a měnit jeho význam.

"Pomocí smyčky prohlížíme hodnoty ve sloupci A na listu "List2", "provádíme aritmetické operace s každou z nich a výsledek zapisujeme" do sloupce A aktivního listu (List1) Dim i As Integer Dim Col As Range Dim dVal As Double "Přiřadit proměnnou Col sloupec A listu "Sheet2" Set Col = Sheets("Sheet2").Columns("A") i = 1 "Prohlížíme postupně všechny buňky sloupce Col dokud nenarazíme na prázdnou buňku Do Until IsEmpty(Col. Cells(i)) "Proveďte aritmetické operace s hodnotou aktuální buňky dVal = Col.Cells(i).Value * 3 - 1" Další příkaz zapíše výsledek do sloupce A aktivního listu Není třeba uvádět název listu v odkazu, protože se jedná o aktivní list sešitu.

Buňky (i, 1). Hodnota = dVal i = i + 1 smyčka Objektový model Excelu je základem pro použití VBA v Excelu. Programování v Excelu se liší od programování v jiných aplikacích VBA v tom, že přidává některé příkazy pro přístup k tabulkám a sešitům, které poskytují lepší funkčnost, takže uživatel může normálně procházet strukturou..



Nabídka Excel


Objektový model Microsoft Access například obsahuje příkazy a objekty, které jsou orientovány na práci s databázemi, což znamená práci s tabulkami, dotazy, formuláři a sestavami. V Excelu, který je zaměřen na práci se sešity a tabulkami, je objektový model navržen právě k tomu. Excel je aplikace sestávající ze tří vrstev: vrstva, která zajišťuje interakci uživatele, vrstva objektového modelu a vrstva, která pracuje se samotnými daty. Uživatelské rozhraní tabulkového procesoru Excel, které obvykle vidíte, je vrstva klienta a je nejlépe optimalizované pro uživatelské prostředí. Tabulky jsou často velmi důležité vúčetnictví . Abyste s nimi mohli lépe pracovat, potřebujete dobrý účetní program, jedním z nich je Info-Enterprise. Je to efektivní účetní software, který vám umožní vést různé typy například hlášení, účetní výkazy atd. Díky své jednoduchosti a snadnému učení se velmi dobře hodí pro jednotlivé podnikatele a malé podniky.


Kdykoli v tabulce uděláte cokoli, zadáváte příkazy prostřednictvím objektového modelu aplikace Excel. Když například otevřete knihu, spustí se kód, který je svázán s položkami hlavní nabídky Soubor Excel- Otevřete a stejný kód používá tým sešitů. Otevři, která se otevře Excelový sešit a údaje o ní doplňuje do sbírky knižních předmětů. Stejně tak, pokud jste v Nastavení Excelu změňte režim výpočtu na ruční a stiskněte klávesu F9 pro přepočet vzorců, stejný program se spustí jako výsledek volání příkazu Aplikace. Vypočítat. Pomocí objektového modelu Excel a programovacího jazyka Visual Basic není jeho vývoj tak náročný vlastní aplikace prezentace dat se stejnou funkčností jako Microsoft Excel. Každý příkaz nabídky a každé tlačítko v aplikaci Microsoft Excel je namapováno na objektový model aplikace Excel. To neznamená, že Excel používá stejné objekty, ale Microsoft vám dává možnost používat objekty a metody, takže můžete dělat vše ve svém kódu stejně jako v nabídce Excelu. Může se to zdát divné, ale pokud se rozhodnete vytvořit si vlastní aplikaci pro prezentaci dat, množství kódu, které potřebujete napsat, bude relativně malé, protože veškerá funkčnost je již obsažena ve stávajících objektech.


Pod objektovým modelem se nachází vrstva zpracování dat, která data sama ukládá a je zodpovědná za jejich uložení a zpracování. Objektový model Excelu obsahuje velké množství objektů, například sešit, sešit, rozsah, graf, kontingenční tabulka, komentáře. Tato zařízení nabízejí různé možnosti zpracování dat. Nejdůležitější je, že je lze ovládat vaším kódem.


Při programování ve VBA používáte standardní příkazy a funkce jako For...Next, If...Then...Else, MsgBox, ale také používáte objektový model ke komunikaci s aplikací Excel, manipulaci s vlastnostmi a metodami různých předmětů.


Objekt je struktura obsahující data a metody pro práci s ním, existuje jako jeden celek, přístup je zajištěn přes speciální softwarové rozhraní.


Předmět je součástí Excel programy. Objekty mají svou vlastní hierarchii. Vedle aplikace je objekt Workbook a za ním Worksheet. Další po každém objektu listu je rozsah a tak dále. Každý objekt má svá vlastní nastavení, nazývaná vlastnosti, a akce, které lze s objektem provádět, nazývané metody.

Sub MainProcedure()

Zavolejte GetProblemSize

Sub GetProblemSize()

Navštíveno ReDim (Nities)

ReDim Route (Nities + 1)

Sub Initialize()

Dim I As Integer

Trasa(Ncities + 1) = 1

Navštíveno(1) = Pravda

Pro I = 2 do Ncities

Navštíveno (I) = False

Syntaxe uživatelské procedury:

SubProcedureName (Parametry)

<Тело процедуры>

Prvky seznamu parametrů mají následující tvar: ElementName As DataType

7. Typy podprogramů a jejich definice: definice a typy procedur. Příklady různých typů procedur. Logické části kódu, které provádějí konkrétní úkol, se nazývají podprogramy. Ve vba se makra, procedury a dokonce i funkce nazývají podprogramy. Funkce je podprogram, který pracuje v rámci svého bloku a vrací pouze jednu hodnotu. Funkce: 1)f. uživatel 2) f. moduly třídy. Funkce má následující syntaxi:

Funkce Název funkce (seznam parametrů) Jako datový typ

<тело функции>

Datový typ funkce je určen k určení typu a vrácení hodnoty funkcí

Chcete-li vytvořit uživatelskou funkci, musíte: 1. pokud neexistuje modul Vložit/Modul 2. Vložit/Procedura 3. v okně, které se otevře, vyberte přepínač „Funkce“, do pole Název zadejte název funkce („Příjmy“) 4. ve stejném okně vyberte přepínač „obecné“, aby byl typ Veřejné 5. Ok. Otevře se okno editoru. Zadejte parametry funkce a kód.

Funkce Doxod (procent jako dvojitý, platezh jako varianta, bůh jako varianta) jako dvojitý

Dim i, j, n jako celé číslo, s jako dvojité

n=platezh.rows.count

s=s+platezh(i)/(1+procent)^((bůh(i)-bůh(1))/365)

Bez zavření okna View/Object Browser. Otevře se okno pro prohlížení objektů. Vyberte VBAProject v levém horním rohu a vyberte prvky aktuálního projektu v okně Classes. Vyberte modul, ve kterém se nachází vaše funkce. Poté v okně Komponenty vyberte všechny prvky včetně funkce Příjem. Klikněte pravým tlačítkem na Příjmy a vyberte Vlastnosti. Otevře se okno „Parametry komponent“, zadejte popis (účel) funkce. Zavřete okno a poté vaše funkce přejde do knihovny standardní funkce Umožňuje vybrat libovolný rozsah buněk v jakékoli knize, a pokud kniha není aktivní, bude aktivována. Metoda může také běžet

8. Deklarace proměnných. Deklarace proměnných v modulech a procedurách. Rozsah proměnných a procedur. Příklad předávání argumentů proceduře.

Dim I As Integer, j As Integer, k As Integer

Abyste nezapomněli deklarovat proměnné Tools/Options/on Editor, kde zaškrtněte políčko Require Variable Declaration.



Option Explicit – obecná oblast. Tento příkaz bude řídit deklaraci proměnných. Existuje velmi důležitý typ proměnné, který VB neměl. Toto jsou objektové proměnné. Dim A Jako Objekt. Speciální případ: Dim A As Range. Například chceme přistupovat k rozsahu buněk během procedury. D

Dim SRange As Range

Nastavte SRange=ActiveWorkBook.WorkSheets(“Prodej”).

Rozsah („SalesRange“)

SRange.Font.Size=14

Klíčové slovo Set se používá pouze při přiřazování hodnoty objektové proměnné.

Proměnné mají rozsah. Proměnné mohou být: globální (pro deklaraci se používá Public) a lokální (používá se operátor Private, Dim). Proměnná typu Public je proměnná na úrovni modulu, Dim je proměnná na úrovni procedury. Proměnná definovaná v modulu příkazem Dim může být předefinována stejným příkazem uvnitř procedury patřící k tomuto modulu.

Předávání argumentů proceduře. Argumenty (křestní jméno, příjmení) z hlavní procedury můžete předat proceduře DisplayName. Poté se hlavní procedura nazývá hlavní a Zobrazované jméno se nazývá volaná. V tomto případě nejsou proměnné jméno a příjmení deklarovány jako proměnné na úrovni modulu, ale jsou deklarovány jako místní proměnné hlavní procedury.

Sub Main()

Dim FirstName as String, LastName as String, I As Integer

Jméno=Rozsah(“Jména”).cells(i, 1)

Příjmení= Rozsah(“Jména”).cells(i, 2)

Zavolejte DisplayName

Sub DisplayName

Ztlumit celé jméno jako řetězec

Celé jméno= Jméno+ Příjmení

MsgBox Celé jméno zaměstnanec”_&_ Celé jméno

9. Vestavěné dialogové okno zpráv. Příklad funkce a operátoru MsgBox. Existuje několik typů dialogových oken, které je nutné udržovat v programu interaktivní režim operace koncového uživatele (zobrazování zpráv uživateli, přijímání a interpretace pokynů zadaných uživatelem atd.). Okno se zprávou je označeno jako MessageBox (MsgBox) a vstupní pole je InputBox. Lze je považovat za funkce a za operátory. Okno MsgBox je okno se zprávou. Nevyžaduje návrh a je volána z programu pomocí příkazu MsgBox a vytvořena pomocí funkce MsgBox(). Má následující syntaxi: MsgBox (Promt [, tlačítka] [,title,helpFile], ), kde promt je povinný parametr, tento řádek v okně zprávy. Jeho maximální délka je 1024 znaků. Parametr Tlačítka je volitelný, jeho hodnota je celé číslo rovnající se součtu hodnot, které určují přítomnost tlačítek v okně zprávy. Výchozí hodnota je 0. Parametr titul - titul okna zpráv. Soubor nápovědy – volitelné, odkaz na soubor v systém nápovědy a na konkrétní místo v tomto souboru. příklad



V závislosti na výběru tlačítek okna MsgBox vrátí dialogové okno jednu z hodnot.

10. Vestavěné vstupní dialogové okno. Příklad funkce InputBox. Existuje několik typů dialogových oken, která jsou nezbytná pro podporu interaktivního režimu činnosti koncového uživatele v programu (zobrazování zpráv uživateli, přijímání a interpretace pokynů zadaných uživatelem atd.). InputBox je vyžadován pouze jako funkce. Často je nutné provést nejen soubor akcí, ale také zadat určité informace, které budou programem vnímány. K tomu slouží funkce InputBox. Syntaxe: InputBox(ptomt, , , , , kontext])

Promt – požadovaný řetězec, který se zobrazí v okně zprávy, 1024 Titulní znak– nepovinné, název okna zprávy Výchozí – řádek v textovém poli, pokud tam není, pak je řádek prázdný Xpos,Ypos – poloha levého horního rohu vstupní obrazovky Helpfile – odkaz na soubor s informacemi nápovědy. Toto okno má ve výchozím nastavení vždy dvě tlačítka: OK a Storno. Příklad:

InputBox("Zadejte cenu k porovnání", "okno pro zadání kritérií")

13. Základní vlastnosti a metody objektu Range. Příklady programových kódů. Objekt Range je objekt i kolekce. Zvažme nejvíce důležité vlastnosti a metody objektu Range: 1. Vlastnost Address – vrací adresu rozsahu jako řetězec. “B2:P4” A=Rozsah(”Prodej”).Adresa “B2:P4”

Rozsah („A1:A10“). Buňky(3) „A3

Rozsah (“A1:D10”).Cells(3, 4) ‘D3

Rozsah ("A1"). Offset(3, 4) – E4

4. Písmo – působí jako objekt i jako vlastnost. V současnosti se chová jako vlastnost, ale jako objekt má následující vlastnosti: Velikost, Název, Tučné, Kurzíva.

5. Horizontální zarovnání – horizontální zarovnání buněk v rozsahu. Vlastnosti: xlCenter – na střed; xlLigh – pravý okraj; xlLeft – doleva.

7. Name – vrací název rozsahu. Tato vlastnost umožňuje zadat název rozsahu v kódu programu.

Rozsah (“A1:D10”).Name=”Prodej”

8. Hodnota – vrací hodnotu v buňce rozsahu (používá se vzhledem pouze k jedné buňce rozsahu).

Rozsah ("A5"). Value="Trip report"

Metody rozsahu: Vymazat – odstraní obsah a formátování řady buněk. ClearContents – odstraní pouze obsah. Kopírovat – zkopíruje obsah jednoho rozsahu do druhého. V tomto případě se používá s jediným argumentem CopyDestination. Pomůže vám určit, kam kopírujete.

Rozsah („B4:G25“). CopyDestination:=Range(“E4:F25”). Vzorce a obsah se zkopírují. V případě, že potřebujete zkopírovat pouze číselné hodnoty a ne vzorce, použije se metoda PastSpecial. Nejprve zkopírujete do schránky, poté zkopírujete do rozsahu. 1)Range(“B4:G25”).Kopírovat 2)Range(“E4:F25”).MinulostSpecial Paste:=xlPasteValue

Vybrat – výběr rozsahu.

Třídit – používá se k seřazení rozsahu buněk. Key1 – podle kterého sloupce bude rozsah řazen. Order1 – řazení (vzestupně, sestupně). Záhlaví – „ano“, „ne“ (Pokud „ano“, pak se záhlaví neúčastní řazení, pokud „ne“, ano). Rozsah („A1:F25“). Seřadit

Key1:=Range(“C2”)

Pořadí1:=xlVzestupně

Pravidla pro použití objektů Excelu v kódu programu. Příklady programových kódů, které je využívají.

14. Metody pro specifikaci rozsahů ve vba. Příklady programových kódů udávajících rozsahy. Při psaní programového kódu musíte být schopni správně použít odkaz na rozsah. Uvažujme následující metody: 1. Pomocí rozsahu adres („A1:B4“). 2. Použití názvu rozsahu Range („Prodej“). 3. Přiřazení proměnné s názvem rozsahu NSales=Range(“Sales Information”).Name. 4. Použití vlastnosti Rozsah buněk(“A1:A10”).Cells(3) – A3

Rozsah(“A1:D10”).Buňky(3, 4) – D3

5.Nastavení vlastnosti Offset. Vlastnost má 2 argumenty. Když je pro rozsah zadán Offset, adresa pouze jedné buňky funguje jako rozsah. Rozsah(“A5”).Offset(3, 4) – E8

6. Určení levého horního a pravého dolního rohu rozsahu. Rozsah(Rozsah(“C1”), Rozsah(“D10”)).

7. Použití vlastnosti End. Chcete-li vybrat rozsah, pro který je znám pouze levý horní roh, můžete použít vlastnost End. Ukazuje do pravého dolního rohu rozsahu.

S rozsahem („A1“)

Rozsah(.Cells(1, 1),.End(xlRight).End(xlDown)).Vybrat

S rozsahem („A1“)

Rozsah(.Offset(1, 1),.End(xlRight)).Name=”Prodej”

Rozsah(.Offset(2, 1),.End(xlDown)).Name=”Region”

Rozsah(.Offset(2, 2),.End(xlRight)).End(xlDown).Name=”NameSales”

Práce s poli. Možnost Základní operátor. Dynamický indexovací model a operátor ReDim. Příklady použití těchto operátorů. Funkce správy pole pole. Příklad použití.

Analogicky s prací s informacemi v Excel seznamy, pole jsou také seznamy, ve kterých má každý prvek svůj vlastní index. Prvky pole jsou programem vnímány jako běžné proměnné, ale prezentovány jako indexovaný seznam. Ve VBA se pole používají ke zpracování seznamů, protože pole lze programově spravovat mnohem snadněji než seznamy. Pravidla pro práci s poli. Možnost Base – definuje spodní hranici pro změnu indexu v poli. Například Option Base1 – dolní hranice – 1. Tento řádek v kódu programu je zapsán v obecné oblasti modulu za operátor Option Explicit.

Ve většině ekonomické úkoly Při psaní programového kódu není možné předem znát počet prvků. K tomu je možné na začátku programového kódu neuvádět při deklaraci pole přesnou velikost. (Dim ProdCode() As Integer, NProducts As

Integer.) Poté v těle procedury, když je již znám požadovaný počet prvků pole, můžete použít operátor ReDim, který poli přidělí nezbytně nutné množství paměti. S ActiveWorkBook.WorkShits("Prodej").Range("A3")

NProducts=Range(.Offset(1,0),.End(xlDown)).

ReDim Kód produktu (NProdukty),UnitPrise(NProdukty)

Pro i=1 až NProdukty

ProdCode(i)=.Offset(i,0)

UnitPrise(i)=.Offset(i,1)

Operátor ReDim vzhledem ke konkrétnímu poli lze v kódu programu použít tolikrát, kolikrát je potřeba. Jediným problémem je, že při použití pole tímto způsobem se ztratí vše, co bylo v poli. Abyste tomu zabránili, musíte do záznamu operátora napsat klíčové slovo Zachovat. (ReDim Preserve Sum(NS)). Typickým pokračováním tohoto programového kódu je umístění dat převzatých z Čl. Seznamy A a B v polích ProdCode a UnitPrice. Chcete-li přenést data ze sloupců seznamu do pole, musíte zorganizovat smyčku. Pokud potřebujete přenést data do sloupců seznamu umístěného na listu:

(NFound – počet nalezených záznamů)

Pro i=1 až NNalezeno

S rozsahem („E3“)

Offset(j, 0)=ProdCodeFound(j) ‘kód produktu

Offset(j, 1)=Quontity(j) "množství zboží

Offset(j, 2)=DollarsTotal(j) ‘náklady na produkt

Podívejme se na konstrukci Array. Podívejme se na příkladu, jak tato funkce funguje. Tato funkce se používá k vyplnění pole. Zvážíme jeho uplatnění v programu „Hypoteční úvěr“.

Funkce dílčího pole()

Dim Days jako varianta

Dny=Pole("Po", "Út", "St", "Čt", "Pá", "So", "Ne")

MsgBox „První den v týdnu: “ & Dny (1)

Klíčové slovo Array následované seznamem v mezích se používá k vyplnění proměnné Dny hodnotami. Tato proměnná je běžné pole, ale v příkazu Dim je specifikována jako běžná typ proměnné Varianta a samotný VBA pomocí funkce Array definuje tuto proměnnou jako pole.

16. Modulární struktura aplikace na příkladu programového kódu úlohy, která určuje optimální trasu pro přesun distributora společnosti. Příklad použití proměnných na úrovni modulu. Při vytváření rozsáhlých procedur vznikají potíže, jako je obtížné učení, ladění a opětovné použití. Mnohem výhodnější je vytvářet modulární aplikace, které jsou souborem relativně malých procedur, z nichž každá provádí malý dílčí úkol. Je vytvořen hlavní postup MainProcedure az něj pomocí Zavolejte operátorovi se nazývají další procedury.

Sub MainProcedure()

Jako příklad zvažte programový kód problém, který určuje optimální trasu pohybu.

Dim Ncities jako Integer, Visited() jako Boolean, Route() jako Integer, TotDist jako Integer

Sub GenDistances()

Dim I As Integer, j As Integer, Ncities As Integer

S rozsahem ("DistMatrix")

Ncities = .Rows.Count

Pro I = 1 Do Nměst - 1

Pro j = I + 1 do Nměst

Buňky (I, j) = Int (Rnd * 100) + 1

Pro I = 2 do Ncities

Pro j = 1 až I - 1

Cells(I, j) = .Cells(j, I)

Sub MainProcedure()

Zavolejte GetProblemSize

Zavolejte PerformHeuristic

Zavolejte DisplayResults

Sub GetProblemSize()

Ncities = Range("DistMatrix").Rows.Count

Navštíveno ReDim (Nities)

ReDim Route (Nities + 1)

Sub Initialize()

Dim I As Integer

Trasa(Ncities + 1) = 1

Navštíveno(1) = Pravda

Pro I = 2 do Ncities

Navštíveno (I) = False

Sub PerformHeuristic()

Dim Step As Integer, I As Integer, NowAt As Integer, NextAt As Integer, MinDist As Integer

Pro krok = 2 do Ncities

Pro I = 2 do Ncities

Pokud já<>NowAt And Visited(I) = False Then

If Range("DistMatrix").Cells(NowAt, I)< MinDist Then

MinDist = Range("DistMatrix").Cells(NowAt, NextAt)

Trasa(krok) = DalšíAt

Navštíveno (NextAt) = Pravda

TotDist = TotDist + MinDist

TotDist = TotDist + Range("DistMatrix"). Buňky (NowAt, 1)

Sub DisplayResults()

Dim Step As Integer

Pro krok = 1 do Nměst + 1

Rozsah("B19").Offset(krok, 0) = trasa(krok)

MsgBox "Celková vzdálenost:" & TotDist, vbInformation, "celková vzdálenost"

Použití proměnných na úrovni modulu. Zvažte program, který ilustruje použití proměnných na úrovni modulu.

V práci Excelový list Vytvořme seznam a dáme mu název – Jméno.

Dim jméno jako řetězec, příjmení jako řetězec

Dim I As Integer

Jméno=Rozsah(“Jméno”).Buňky(i, 1)

Příjmení=Rozsah(“Jméno”).Buňky(i, 2)

Zavolejte DisplayName

Sub DisplayName()

Ztlumit celé jméno jako řetězec

FullName=Jméno+Příjmení

MsgBox „Celé jméno zaměstnance: “ & Celé jméno

17. Vývoj uživatelského rozhraní: formulář jako vlastní dialogové okno. Vytvoření formuláře na příkladu formuláře „Informace o produktu“. Zobrazení uživatelského formuláře. Vlastní dialogové okno je formulář, který obsahuje ovládací prvky, včetně příkazových tlačítek, přepínačů, textová pole a další. Poskytuje uživateli vstup informací potřebných pro fungování aplikace. Zvažte typický příklad formuláře, který se často vyskytuje v aplikacích.

Formulář obsahuje 3 obslužné rutiny událostí:

1. UserForm_Initialize

2. OkButton_Click

3. CancelButton_Click

V této aplikaci musíte při otevírání formuláře dosáhnout následujícího chování: musí být aktivní přepínače Moskva a Vlak, zaškrtnuté políčko Podléhající zkáze a zaškrtávací políčko Křehké, seznam zákazníků musí být vyplněn zdrojovými daty. Při práci se seznamem jej můžete vyplnit různými způsoby. Vyplňte jej například daty umístěnými v buňkách listu. Chcete-li to provést, vytvořte na listu rozsah a pojmenujte jej (Name - Costumer). Při vyplňování seznamu použijte AddItem. Než napíšeme kód pro událost Initialize, podívejme se na vlastnosti ovládacích prvků: uživatelský formulář - Hypotéka; textové pole – ProductBox; přepínače – MoscowOption, VoronegOption, TrainOption, TruckOption; zaškrtávací políčka – PerishBox, FragilBox; seznam – CostumersList.

Ztlumit buňku jako variantu

ProductBox = " "

MoscowOptions.Value = Pravda

TrainOptions.Value = Pravda

PerishBox = Pravda

FragilBox = False

Existuje další způsob, jak doplnit seznam. Vlastnost Zdroj řádků, otevře se okno, ze kterého je potřeba zadávat prvky jeden po druhém.

Zobrazení formuláře. Na rozdíl od VB se ve VBA formulář automaticky nezobrazí na obrazovce při spuštění aplikace. Chcete-li zavolat formulář do listu, musíte se přihlásit Zobrazit metodu. Chcete-li to provést, vytvořte na listu tlačítko, které zobrazí formulář na listu, a napište kód:

Sub Button1_Click()

Hypotéka. Show

18. Zpracování událostí formuláře: vytvoření kódu pro zpracování událostí UserForm_Initialize, CanselButton_Click na příkladu zpracování těchto událostí pro uživatelský formulář „Informace o produktu“.

1. UserForm_Initialize

2. OkButton_Click

3. CancelButton_Click

Definuje 1 vývojář vzhled formuláře při otevírání a zbytek poskytuje odezvu na kliknutí na tlačítko. „OK“ a „Zrušit“.

Kód obslužné rutiny UserForm_Initialize.

V této aplikaci musíte při otevírání formuláře dosáhnout následujícího chování: musí být aktivní přepínače Moskva a Vlak, zaškrtnuté políčko Podléhající zkáze a zaškrtnuté políčko Křehké, seznam Costumers musí být vyplněn zdrojovými daty. Chcete-li naplnit seznam na listu, vytvořte rozsah a dejte mu název Costumers. V kódu programu použijeme metodu AddItem. Než napíšeme kód pro událost Initialize, podívejme se na některé vlastnosti ovládacích prvků: uživatelský formulář - Hypotéka; textové pole – ProductBox; přepínače – MoscowOption, VoronegOption, TrainOption, TruckOption; zaškrtávací políčka – PerishBox, FragilBox; seznam – CostumersList.

Private Sub UserForm_Initialize()

Ztlumit buňku jako variantu

ProductBox = " "

MoscowOptions.Value = Pravda

TrainOptions.Value = Pravda

PerishBox = Pravda

FragilBox = False

Pro každou buňku v rozsahu ("Zákazníci")

CustomersList.AddItem cell.Value

Pro tlačítko „zrušit“ napište následující kód:

Private Sub CanselButton_Click()

Unload.Me – Tato metoda uvolní formulář z paměti RAM a odstraní jej z obrazovky.

19. Zpracování událostí formuláře: vytvoření kódu pro zpracování události OkButton_Click na příkladu zpracování této události pro uživatelský formulář „Informace o produktu“. Událost je akce rozpoznaná objektem, na kterou lze naprogramovat odpověď.

Podívejme se na formulář „Informace o produktu“. Obsahuje 3 obslužné rutiny událostí:

1. UserForm_Initialize

2. OkButton_Click

3. CancelButton_Click

1 vývojář určuje vzhled formuláře při jeho otevření a zbytek poskytuje odpověď na kliknutí na tlačítko. „OK“ a „Zrušit“.

Kód procedury OkButton_Click. Obvykle se tato obslužná rutina události používá k ukládání dat zadaných do ovládacích prvků. Informace zadávané do ovládacích prvků se zpravidla zadávají do veřejných proměnných, které jsou definovány v modulu, a tyto proměnné jsou následně použity v programových kódech modulu. ProductCode – kód zadaný do pole; Region – výchozí bod; Doprava – doprava; IsPerish – podléhající zkáze; IsFragil – křehký; Zákazníci – úsměv.

Dim ProductCode jako Integer, Region As String, Shipping As String, IsPerish As Boolean, IsFragile As Boolean, Customers as String

Private Sub OkButton_Click()

If .Value = " " nebo ne IsNewmeric(.Value) Then

MsgBox "Nezadán kód produktu nebo není číselný"

ProductCode = ProductBox. Hodnota

Pokud ProductCode< 1 Or ProductCode >1000 pak

MsgBox "Kód produktu musí být v rozsahu od 1 do 1000"

SetFocus ‘umístí kurzor do pole

Exit Sub ‘ukončit proceduru

If TrainOption.Value = True Then

Doprava = "Vlak"

Doprava = "Nákladní auto"

If MoscowOption.Value = True Then

Region = "Moskva"

Region = "Voroneg"

IsPerish = PerishBox.Value

IsFragile = FragilBox.Value

S CostomerList „práce se seznamem

Pokud .ListIndex<>-1 Pak

Zákazníci = CustomersList.Value

MsgBox "Položka v seznamu není vybrána"

20. Struktura rozhodování If-Then-Else

Podmíněný příkaz If-Then-Else mění pořadí provádění programu v závislosti na výsledcích testování nějaké podmínky.

Sub LookUpPrice()

ReDim ProdCode (Nproducts)

ReDim UnitPrice (Nproducts)

Pro i = 1 až Nprodukty

ProdCode(i) = .Offset(i, 0)

Jednotková cena(i) = .Offset(i, 1)

ReguestedCode = InputBox("Zadejte kód produktu (velký latinské písmeno a 4 číslice)")

Nalezeno=nepravda

Pro i = 1 až Nprodukty

If ProdCode(i) = ReguestedCode Then

Nalezeno=Pravda

Požadovaná cena = jednotková cena (i)

Konec pro

Pokud pak nalezen

MsgBox "Produkt s kódem" & ReguestedCode & "cost" & Format (ReguestedPrice, "0,00r."), vbInformation, "Produkt nenalezen"

MsgBox "Produkt s kódem " & ReguestedCode & " není v seznamu ", vbInformation, "Produkt nenalezen"

21. Dodatečná podmínka ElseIf

Pomocí rozhodovací struktury If-Then-Else můžete organizovat provádění příkazů v závislosti na splnění určité podmínky. Podívejme se na další případ použití, tentokrát s klíčovým slovem ElseIf. Program Proc31 zobrazí výzvu k zadání hesla. Pokud je heslo zadáno správně, program uživateli poskytne určité možnosti práce se sešitem a informuje ho o tom.

Sub Proc31_IfThenElseIf()

Dim Password As String, ws As WorkSheet

Heslo = GetPassword

If Password = “level1” Then

Pro každý ws In ActiveWorkbook.WorkSheets

ws.Visible = Pravda

MsgBox "Máte přístup ke všem listům v sešitu."

ElseIf Heslo = “level2” Potom

ActiveWorkbook.Worksneets(1). Nechráněno

MsgBox "Vstoupili jste pouze na první list sešitu."

ElseIf Heslo = “level3” Potom

ActiveWorkbook.Worksneets(1). Viditelné = pravda

MsgBox "Byl vám udělen přístup pouze pro čtení k obsahu prvního listu sešitu."

MsgBox „Heslo není správné. Zadejte znovu své heslo."

Funkce GetPassword()

V Proc31 je klíčové slovo Elself následované podmínkou použito dvakrát. Nová podmínka provede další změny v pořadí provádění příkazu, pokud kontrola první podmínky selže. V Proc31 je první podmínka uvedena bezprostředně za klíčovým slovem If. Kontroluje, zda se proměnná Heslo rovná řetězci „levell“. Pokud se proměnná nerovná řetězci, VBA přejde na první klíčové slovo Elself, kde zkontroluje následující podmínku - proměnná Password se rovná řetězci „level2“. Od této chvíle program používá pouze novou podmínku a „zapomíná“ na starou. Pokud opět nedojde k rovnosti, řízení přejde na další klíčové slovo Elself atd.

Řádek 3 Proc31 volá funkci GetPassword, která používá nové prvky. Vraťme se k tomu znovu.

Funkce GetPassword()

GetPassword = Lcase (InputBox(“Zadejte heslo:”.” Heslo”))

Zde jsou ve druhém řádku specifikována volání dvou vestavěných funkcí VBA-Lcase a InputBox. První převede všechna písmena řetězce, která mu byla předána, na malá písmena. Druhý zobrazí dialogové okno s žádostí o zadání uživatele. Tato funkce má několik volitelných argumentů, z nichž nás zajímají pouze první dva. Jedním z nich je čára zobrazená v okně nad vstupním polem. Druhý obsahuje záhlaví dialogového okna. Po vyvolání funkce Input-Box se na obrazovce objeví dialogové okno se zadaným nadpisem a textem výzvy a obsahuje také prázdné pole, do kterého může uživatel zadávat data. Hodnota vrácená InputBoxem závisí na tom, na které tlačítko uživatel klikne. Pokud je v pořádku, zadaný řádek se vrátí, pokud je Zrušit, pak je prázdný. V našem příkladu jsou písmena tohoto řetězce předána funkci Lcase, která je převede na malá písmena. V bloku, který začíná bezprostředně za klíčovým slovem If, je smyčka For-Each-Next (podrobně je popsána níže v části " Struktura řízení For-Each-Next”). V tomto cyklu jsou iterovány všechny listy aktivního sešitu, na každém z nich jsou provedeny dvě akce: vlastnosti Visible je přiřazena hodnota True a je volána metoda Unprotect. První akce umožňuje uživateli vidět list, druhá odstraní ochranu heslem z listu. Metoda Unprotect má jeden argument – ​​řetězec hesla. Ale v tomto případě jsme nepoužili heslo k ochraně listů, takže Unprotect se volá bez argumentů. V dalších blocích programu se vlastnost Visible a metoda Unprotect volají selektivně v závislosti na zadaném heslu.

22. Struktura ovládání For-Next

Umožňuje provádět více příkazů zadaný počet opakování.

Sub LookUpPrice()

Dim ProdCode() jako řetězec, UnitPrice() jako měna, ReguestedPrice jako měna, Nproducts jako celé číslo, i jako celé číslo, nalezeno jako booleovské, ReguestedCode jako řetězec

S ActiveWorkbook.Worksheets("Kódy produktů").Range("A3")

Nproducts = Range(.Offset(1, 0), .End(xlDown)).Rows.Count

ReDim ProdCode (Nproducts)

ReDim UnitPrice (Nproducts)

Pro i = 1 až Nprodukty

ProdCode(i) = .Offset(i, 0)

Jednotková cena(i) = .Offset(i, 1)

Konec s

ReguestedCode = InputBox("Zadejte kód produktu (velké písmeno a 4 číslice)")

Pro i = 1 až Nprodukty

If ProdCode(i) = ReguestedCode Then

Požadovaná cena = jednotková cena (i)

MsgBox "Produkt s kódem" & ReguestedCode & "cost" & Format (ReguestedPrice, "0,00r."), vbInformation, "Produkt nenalezen"

MsgBox "Produkt s kódem " & ReguestedCode & " není v seznamu ", vbInformation, "Produkt nenalezen"

23. Kontrolní struktura While-Wend

Jeho akce je podobná akci For-Next, ale skupina operátorů se nespustí stanovený počet opakování, ale dokud není splněna určitá podmínka. V programu Proc34 se k alokaci používá instrukce While-Wend určitou hodnotu ze sekvence náhodná čísla.

Sub Proc34_WhileWend()

Dim LotteryEntry jako celé číslo

Vstup do loterie = 0

Při vstupu do loterie<> 7

Vstup do loterie = Int(10*Rnd())

MsgBox „Vaše číslo je „&LotteryEntry&“. Vyhráli jste!!"

Proc34 zajišťuje, že informační okno vždy zobrazuje zadané číslo. Cyklus While-Wend běží, dokud se hodnota proměnné LotteryEntry nerovná 7 (podmínka používá operátor nerovnosti<>). Při každém provedení smyčky je této proměnné přiřazena náhodná hodnota od 1 do 9 a poté je pomocí funkce VBA Beep odesláno pípnutí přes interní reproduktor počítače. Když tento program spustíte několikrát, můžete slyšet různá množství signály, v závislosti na tom, v jakém kroku generátor náhodných čísel vrátí číslo 7.

Podívejme se blíže na strukturu smyčky While-Wend.

Zatímco klíčové slovo, začátek struktury While-Wend

Vstup do loterie<>7 Podmínka, která určuje, zda bude smyčka provedena či nikoli. Pokud je splněna, smyčka se provede, pokud ne, řízení se přenese na operátor předcházející klíčovému slovu Wend

LotteryEntry=Int(10*Rnd()) Operátor prvního těla

Pípnutí Operátor druhého těla

Klíčové slovo Wend, které označuje konec struktury While-Wend

Úvod do systému Programování VBA. Objektový model Excelu, hlavní objekty E. Jejich stručný popis.

VB a VBA nejsou totéž. VB je jazyk pro vývoj softwaru, který se používá odděleně od MS Office. VBA je součástí sady MS Office. Jeho instalací získáte přístup k VBA. Je vyžadována správa dat MS Office.

Jazyk VBA podporuje všechny základní prvky jakéhokoli jiného programovacího jazyka: 1) proměnné 2) pole 3) podprogramy 4) řídicí struktury 5) možnost vytvářet uživatele. datové typy atd.

VBA yavl. vizuální a událostmi řízený programovací jazyk. Má schopnost vytvářet formuláře s ovládacími prvky a psát procedury, které zpracovávají události. VBA umožňuje pracovat s obrovskou sadou objektů. VBA podporují aplikace jako Access, PowerPoint, Word atd. Každá aplikace má svou vlastní sadu objektů. V Accessu: formuláře, dotazy, sestavy, tabulky; ve Wordu: odstavec, poznámka pod čarou; na snímku aplikace PowerPoint. Každý program podporuje svou vlastní verzi VBA.

VBA se od ostatních programovacích jazyků liší tím, že poskytuje možnost přímo pracovat se všemi objekty MS Office. Má grafický pracovní stůl, který vám umožňuje vytvářet obrazovkové formuláře a ovládací prvky.

Vše Excel prvky– objekty, se kterými musíte v programu pracovat. Nejčastěji používanými objekty jsou WorkBooks, WorkSheets a Ranges. Objekt WorkSheets má vlastnost Name, ale objekt Range nemá odlišnou kolekci. Působí jako sbírka i jako předmět. Nejčastěji používané V programovém kódu má obrovské možnosti.

2. Objektový model Excel: pojem objektu, metoda, vlastnost, událost.

Objektový model Excelu je základem struktury programu. Bez vytvoření hierarchické struktury programových objektů nelze VBA v Excelu používat.

Všechny prvky Excelu jsou objekty, se kterými musíte v programu pracovat. Nejčastěji používanými objekty jsou WorkBooks, WorkSheets a Range ckarts.

Vlastnosti definují vzhled a stav objektu. Chcete-li definovat vlastnost, musí být zadána vpravo od názvu objektu a oddělena tečkou. Rozsah(“A1”).Value – vlastnost popisuje obsah buňky A1. Při práci s vlastnostmi existují 2 typy operací: 1) přiřazení hodnoty vlastnosti. Objekt.Vlastnost=<значение>

Rozsah(“A1”).Hodnota= “Přehled cesty”. 2) výsledná vlastnost je přiřazena proměnné. Proměnná=Objekt.Vlastnost

Var= Rozsah(“A1”).Hodnota

Metody objektu odhalují úkoly, které může objekt provádět. Object.Method – když metoda nemá žádné parametry. Range(“A1”).CleanContenst – vymaže rozsah, ale zachová formátování. Pokud má metoda argumenty, jsou uvedeny za názvem metody.

Událost je akce rozpoznaná objektem, na kterou lze naprogramovat odpověď. Podstata programování ve VBA spočívá ve 2 konceptech: událost a reakce na ni.

Vlastnosti a metody mohou být propojeny: provedení metody způsobí změnu vlastnosti objektu a změna vlastnosti může způsobit výskyt události.

3. Editor VB. Okno projektu. Okno pro úpravu kódu. Okno pro úpravu formuláře. Panel prvků. Okno vlastností. Okno pro prohlížení objektů. Okamžitě, Sledujte okna. Editor VB=Editor jazyka Visual Basic. Nic takového jako editor VBA neexistuje! Chcete-li spustit tento editor, musíte jej otevřít aplikace Excel a spusťte příkaz Tools/Macro/VB Editor nebo Alt+F11. Chcete-li se vrátit do Excelu, musíte znovu stisknout Alt+F11. V okně VBA, které se otevře: záhlaví, nabídka, panely nástrojů a několik oken.

Ve výchozím nastavení je levý horní roh okno projektu. Můžete jej zobrazit pomocí příkazu View/Project Explorer. Toto okno obsahuje seznam všech otevřených projektů a seznam všech jejich součástí. Projekt obsahuje vždy 3 moduly (na každém listu) a modul knihy. Všechny moduly jsou rozděleny na: 1) standardní – přidány do projektu Insert/Module. Obsahují makra, funkce a procedury. 2) objektové moduly – moduly spojené se sešity, pracovními listy a formuláři. Projekt VBA se skládá z objektů, které mají hierarchickou strukturu a zahrnuje: objekty aplikace Excel, formuláře, standardní moduly a moduly tříd. Okno pro úpravu kódu. V okně projektu vyberte objekt, pro který bude zadán kód programu. Poté spusťte příkaz View/Code. Otevře se okno, ve kterém musíte zadat kód programu. Okno pro úpravu formuláře. Zobrazení formuláře: Vložit/Uživatelský formulář. Na obrazovce se objeví formulář. Okno vlastností. Otevření: Okno Zobrazit/Vlastnosti. Na levé straně okna jsou uvedeny vlastnosti objektu a na pravé straně jsou uvedeny hodnoty vlastností, které lze změnit. Okno pro prohlížení objektů. View/Object Browser nebo F2. V levém horním rohu okna, které se otevře, je seznam knihoven objektových modelů aplikace Excel. Poskytuje informace o všech objektech Excelu, jejich vlastnostech a metodách.

Panel prvků(View/Dwbug) ve standardní verzi obsahuje různé třídy ovládacích prvků: CommandButton (příkazové tlačítko), TextBox, Label atd. Panel je možné doplnit příkazem Tools/Additional Controls.

Okno Immediate je jedním z ladicích nástrojů. Navrženo pro přímé zadávání příkazů. Okno sledování – pořadí provádění programu a sledování chyb.

4. Vytvoření jednoduchého programu na příkladu aplikace „Informace o prodeji podle regionu“. Úkol: vytvořte program, který bude sledovat prodeje v jednotlivých regionech. Pro každý region zobrazte zprávu s počtem měsíců, kdy prodeje přesáhly zadaný objem zadaný uživatelem. Postup: otevřete Excel a na prvním listu vytvořte seznam, který vypadá takto:

A V S G
měsíc Region1 Region2 Region3
leden 2005
….
prosince 2006

Formát sloupců (1 – datum, zbytek – formát měny). Doplňte seznam. Poté vyberte oblast buněk B2:G25 a pojmenujte ji SalesRange. Přejděte do editoru wb: Alt+F11 nebo Tools/Macro/Wb Editor. Pokud zde žádné okno není, spusťte příkaz View/Project Explorer. Dále spusťte Insort/Module, otevře se okno editoru. Zadejte následující kód programu:

Sub CountHighSales()

Dim i As Integer, j As Integer, ks As Integer, s As Currency

s = InputBox("Zadejte cenu pro porovnání", "pole pro zadání kritérií")

If Range("SalesRange").Cells(j, i) >= s Potom

MsgBox "v regionu "&i&" prodeje přesáhly "&s&" v "&ks&" měsících"

Spusťte program pro spuštění: F5 nebo Run/Run Sub. Na obrazovce se objeví okno InputBox. Spusťte program pomocí tlačítka umístěného na listu. Na listu spusťte příkaz Zobrazit/Panely nástrojů/Formuláře. V okně, které se zobrazí, vyberte prvek Tlačítko a nakreslete jej na list. Otevře se okno s výzvou k vytvoření makra, vyberte název CountHighSales a zavřete. Dejte svému tlačítku jméno. Pro spuštění programu klikněte na toto tlačítko.

Program můžete vytvořit jiným způsobem, počínaje umístěním tlačítka. Zobrazí se okno „Přiřadit makro k objektu“. Klikněte na tlačítko Vytvořit. Spustí se editor VBE a otevře se okno pro úpravu kódu makra. Zadejte kód programu.

5. Standardní ovládací prvky VB: koncepty, vlastnosti, metody, události společné pro tyto prvky Stručný popis ovládacích prvků. Ovládací prvky jsou objekty, které lze umístit do formuláře. Jako všechny objekty mají vlastnosti, metody a události. Vlastnosti určují vzhled a chování.

Základem objektového modelu Excelu je objekt Worksheet, který představuje jeden list v souboru. Každý objekt Worksheet je součástí kolekce Worksheets, která patří k objektu Workbook, který představuje soubor sešitu aplikace Excel. Protože Excel může mít otevřeno více sešitů současně, existuje také kolekce Workbooks, která obsahuje jeden objekt Workbook pro každý otevřený soubor. Stejně jako u všech aplikací Office se objekt Application nachází na vrcholu hierarchie objektů a je k dispozici jako implicitní odkaz při práci v Excelu.

V sešitech Excelu existuje ještě jeden typ listu - list s grafem (objekt Chart) - speciální tabulka, která obsahuje pouze graf. Kolekce Charts objektu Application poskytuje přístup ke všem grafům všech otevřených souborů, zatímco kolekce Charts objektu Workbook poskytuje přístup pouze ke grafům daného sešitu. Grafy mohou být také vloženy do listů namísto vlastního listu. Takové grafy nejsou součástí kolekce grafů, ale jsou k dispozici jako součást kolekce Chartob-jects objektu Worksheet. Kolekce Sheets poskytuje přístup ke všem listům, tabulkám i grafům.

Většina toho, co děláte v Excelu, zahrnuje objekt Range. Přestože název tohoto objektu je stejný jako jeho protějšek ve Wordu, jejich složení se liší. Jeho funkce jsou však téměř stejné: rámování části dokumentu, se kterou se pracuje. Rozsahem může být jedna buňka, dvourozměrný blok buněk na listu nebo trojrozměrný blok buněk zahrnující více listů.

Další důležitou součástí objektového modelu aplikace Excel je objekt Chart. Pro každý graf v sešitu je v kolekci grafů obsažen jeden objekt grafu. Každý objekt Chart má podmnožinu objektů, které představují součásti grafu, jako jsou osy a legenda.

Změníme naše makro, přejdeme na položku nabídky „makra“, vybereme naše a řekneme „upravit“:

Dim book As String

Dim list As String

Dim addr As String

kniha = Application.ActiveWorkbook.Name

list = Application.ActiveSheet.Name

Sešity (kniha).Aktivovat

Pracovní listy(list).Aktivovat

Rozsah("A1") = kniha

Rozsah("B1") = list

Dim xList As Integer

xList = Application.Sheets.Count

Pro x = 1 To xList

s = addr + LTrim(Str(x))

Programování VBA si lze představit jako správu aplikačních objektů. Toto jsou objekty, které naše aplikace spravuje. V našem případě, pokud zjednodušíme hierarchickou architekturu, vypadá takto.

To znamená, že hlavním objektem je aplikace. Aplikace může mít několik sešitů, uvnitř kterých jsou sešity a listy jsou rozděleny do buněk. Při práci může být aktivní pouze jeden sešit a jeden list. Takže se to snažím zjistit pomocí svého makra. A zároveň kolik listů je v aktuální knize.

DIM - deklaruje proměnnou s zadejte řetězec. Pomocí objektu Application získáme názvy aktuálních sešitů a listu. Pomocí Range("...") můžete vybrat buňku a umístit do ní hodnoty nebo ji přečíst. Obecně platí, že objekty mají obrovské množství vlastností. Úkolem programátora VBA je znát tyto vlastnosti a metody.




Nahoru