Počítače Okna Internet

Vstupní data výstupní aplikace pracovních listů vba. Vytváření vlastních dialogových oken pomocí VBA. Syntaxe funkce MsgBox

V tomto článku se dozvíte, jak ve VBA Excel vytvořit vstupní pole – InputBox, do kterého můžete zadávat různé informace pro výpočty.

Funkce InputBox vyzve uživatele k zadání hodnot. Pokud po zadání hodnot uživatel stiskne tlačítko OK nebo stiskne ENTER na klávesnici, funkce InputBox vrátí text v textovém poli. Pokud uživatel klikne na tlačítko "Storno", funkce vrátí prázdný řetězec ("").

Syntax

InputBox(výzva[,název][,výchozí][,xpos][,ypos][,soubor nápovědy,kontext])

Popis parametru

  • Požadavek je povinný parametr. Řetězec, který se má zobrazit jako zpráva v dialogovém okně. Maximální délka pozvánky je cca 1024 znaků. Pokud zpráva zahrnuje více než jeden řádek, lze řádky oddělit pomocí znaku návratu vozíku (Chr(13)) nebo konce řádku (Chr(10)) mezi každým řádkem.
  • Název je volitelný parametr. Řetězcový výraz se zobrazí v záhlaví dialogového okna. Pokud je nadpis ponechán prázdný, název aplikace se umístí do záhlaví.
  • Výchozí hodnota je volitelný parametr. Výchozí text v textovém poli, který by si uživatel přál zobrazit.
  • XPos je volitelný parametr. Poloha osy x je přibližná horizontální vzdálenost od levé strany obrazovky. Pokud necháte pole prázdné, bude vstupní pole umístěno vodorovně.
  • YPos je volitelný parametr. Poloha osy Y je přibližná vertikální vzdálenost od levé strany obrazovky. Pokud ponecháte prázdné, vstupní pole bude svisle vystředěno.
  • Soubor nápovědy je volitelný parametr. Řetězcový výraz, který identifikuje soubor nápovědy, který bude použit k poskytnutí kontextové nápovědy pro dialogové okno.
  • kontext - Nepovinný parametr. Číselný výraz, který identifikuje číslo kontextu nápovědy přiřazené autorem nápovědy k odpovídajícímu tématu nápovědy. Pokud je uveden kontext, musí být poskytnut také soubor nápovědy.

příklad

Vypočítejme plochu obdélníku získáním hodnot od uživatele za běhu pomocí dvou vstupních polí (jedno pro délku a druhé pro šířku).

Funkce findArea() Dim Length As Double Dim Width As Double Length = InputBox("Zadejte délku", "Zadejte číslo") Width = InputBox("Zadejte šířku", "Zadejte číslo") findArea = Délka * Šířka End Funkce

InputBox krok za krokem

Krok 1 – Chcete-li provést totéž, zavolejte s názvem funkce a stiskněte Enter, jak je znázorněno na následujícím snímku obrazovky.

Krok 2 - Po provedení se zobrazí první vstupní pole (délka). Zadejte hodnotu do vstupního pole.

Funkce MsgBox umožňuje výstupní informace na obrazovce jako okno.

Celkový pohled na funkce:

Zpráva MsgBox

[,kód tlačítka [,název]]

zpráva - definuje hodnotu výrazu, který bude zobrazen v okně zprávy. Tímto výrazem může být text v uvozovkách a/nebo proměnná. Chcete-li zobrazit text zpráv a hodnotu proměnné v jednom okně, použijte operátor zřetězení řetězců (&).

Dim Pi jako svobodný

MsgBox "pi=" & Pi

Výsledek makra:

kód tlačítka - určuje, která tlačítka a ikony se zobrazí v okně zprávy. Pokud tento parametr není zadán, bude okno zprávy obsahovat pouze tlačítko OK.

nadpis – obsahuje text, který je zobrazen v záhlaví zprávy. Pokud tento argument není uveden, řetězec se umístí do záhlaví Microsoftvynikat.

Dim Pi jako svobodný

MsgBox Pi "Toto je Pi"

Zadání informací ve VBA lze provést pomocí vstupního pole:

Funkce InputBox vytvoří vstupní okno:

InputBox (zpráva

[,název[,hodnota]])

message - řetězec znaků nebo řetězcová proměnná obsahující textovou zprávu pro uživatele;

titulek - text, který je zobrazen v záhlaví zprávy;

hodnota – Určuje hodnoty, které se standardně zobrazují v textovém poli dialogového okna.

ÚLOHA 2. Úhel je udán v radiánech. Převést na stupně.

Konst pi = 3,14159

Dim g As Integer

Dim m As Integer

Dim s As Integer

r = InputBox("r=", "Hodnota úhlu v radiánech", pi / 4)

g = Fix(r * 180 / pi)

m = Fix((r*180/pi-g)*60)

s=Opravit((((r*180/pi-g)*60-m)*60)

MsgBox g & "stupně" & m & "minuty" & s & "sekundy"

18. Podmíněný operátor

Podmíněné příkazy se používají, když je v závislosti na nějaké podmínce nutné provést jednu nebo druhou akci.

Podmíněný operátor, odpovídající danému blokovému schématu má tvar:

Pokud výraz Pak

operátor1

operátor2

V této konstrukci musí mít výraz booleovský typ.

Operátor funguje takto. Hodnotí se hodnota výrazu. Pokud se vyhodnotí jako true, provede se příkaz1, v opačném případě (výraz se vyhodnotí jako nepravda) se provede příkaz2.

Pokud se v závislosti na podmínce provede nějaká akce a jinak se nic nestane, pak má algoritmus tvar:

Podmíněný operátor v tomto případě má strukturu:

Pokud výraz Pak

operátor

Tento záznam lze nazvat „přeskočení příkazu else“.

Zde je příkaz buď proveden, nebo přeskočen, v závislosti na hodnotě výrazu.

Je povoleno více vnořených příkazů If...Then...Else, vnořených tolik úrovní, kolik je potřeba.

Pokud výraz1 Potom

operátoři1

Elseif výraz2 pak

operátoři2

Elseif výraz3 pak

operátoři3

Elseif výrazN tedy

operátořiN

operátory

Aby byl program snazší číst, místo více vnořených příkazů je někdy vhodnější použít příkaz Select Case.

Vyberte případ<výraz>

pouzdro<podmínka výběru 1>

<operátoři 1>

pouzdro<podmínka výběru 2>

<operátoři 2>

……………..

pouzdro<podmínka výběruN>

<operátoryN>

<operátory>

19. Vzorové programy

ÚKOL 3 . Koeficienty a, b a c kvadratické rovnice jsou známé sekera 2 +bx+C=0. Vypočítejte kořeny kvadratické rovnice.

Vstupní údaje: a, b, c.

Výstupní data: x 1, x 2.

Sub prim7()

Rozměr x1 jako jeden

Rozměr x2 jako jeden

InputBox("A=","Koeficienty kvadratické rovnice", 2)

InputBox("B="," Quadratic Coefficients", 3)

InputBox("C="," Quadratic Coefficients",-2)

d=b^2 - 4*a*c

Pokud d< 0 Then

MsgBox "Žádná platná řešení", vbCritical

x1=(-b+Sqr(d))/(2*a)

x2=(-b-Sqr(d))/(2*a)

MsgBox "X1=" & x1 & Chr(13) & "X2=" & x2, vbInformation

ÚKOL 4. Vzhledem k reálnému číslu X. Pro funkci, jejíž graf je uveden níže, počítejte y=F(X).

Pokud x<= -1 Then

ElseIf x > 1 Pak

ÚKOL 5. Vzhledem k reálným číslům X A y. Určete, zda bod se souřadnicemi ( X; y) zastíněné části roviny.

Bod se souřadnicemi ( X;y) patří do zastíněné části roviny, pokud:

Pokud y<= 2 * x + 2 And

Podmíněný příkaz ve VBA.

Často je nutné, aby část programu byla spuštěna pouze při splnění určitých podmínek. Řešením tohoto problému je použití speciálních konstrukcí, které využívají operátory poboček.

Celkový pohled na tento design:

Li<логическое выражение>Pak<список операторов>End If

<логическое выражение>je jednoduchá nebo komplexní podmínka nebo booleovská konstanta (pravda nebo nepravda)

Složitá podmínka se skládá z jednoduchých podmínek spojených logickými operacemi AND nebo OR

Například: (a =b)

Algoritmus

2) Pokud je hodnota logického výrazu pravdivá, provede se seznam příkazů

3) Pokud je hodnota logického výrazu nepravdivá, pak se nic nedělá

Další větev podmíněné větve:

Li<логическое выражение>Pak

<список операторов1>

<список операторов2>

Algoritmus

1) Vypočítá se hodnota logického výrazu

2) Pokud je hodnota logického výrazu pravdivá, provede se seznam příkazů 1

3) Pokud je hodnota logického výrazu nepravda, provede se seznam příkazů 2

Několik vnořených operátorů:

Li<логическое выражение1>Pak

<список операторов1>

ElseIf<логическое выражение2>Pak

<список операторов2>

ElseIf<логическое выражениеN>Pak

<список операторовN>

Algoritmus

1) Vypočte se hodnota logického výrazu 1

2) Pokud je hodnota logického výrazu 1 pravdivá, provede se seznam příkazů 1

3) Pokud je hodnota logického výrazu 1 nepravdivá, provede se příkaz seznam 2

4) Pokud je hodnota logického výrazu 2 pravdivá, provede se seznam příkazů 2

5) Pokud je hodnota logického výrazu 2 nepravda, provede se seznam příkazů 3

4) Pokud je hodnota logického výrazu N pravdivá, provede se seznam příkazů N

5) Pokud je hodnota logického výrazu N nepravdivá, pak se nic nedělá

a = inputbox("Zadejte A")

Buňky – vlastnost, která umožňuje přístup ke konkrétním buňkám listu.

Cells(i,j) – buňka a její souřadnice – číslo řádku a číslo sloupce.

Například:

Cells(1,1) - volání do buňky A1

Postup umístění hodnoty nebo vzorce do buňky:

Cells(2,2)=2 - vložte hodnotu 2 do buňky B2.

Cells(2,2).Value =2 vložte hodnotu 2 do buňky B2.

Cells(3,1) = a+b - do buňky C1 vložte vzorec pro součet čísel aab.



Buňky(3,2) = buňky(1,1).hodnota + buňky(1,2).hodnota - do buňky C2 vložte vzorec pro součet hodnot z buněk A1 a A2.

Cells(i,j) = InputBox(“”) - buňka bude obsahovat hodnotu, kterou zadáme do vstupního pole.

Cells(i,j).Select – výběr konkrétní buňky

Cells.Select - výběr všech buněk v listu.

Cells(i,j).Activate - aktivace buňky.

Chcete-li zobrazit hodnotu v buňce na obrazovce:

Cells(1,1) =3 - do buňky A1 vložte hodnotu 3.

Msgbox(cells(1,1)) - zobrazí se hodnota z buňky.

Cells(1,1) = k+2 - do buňky A1 dáme vzorec k+2, kde k je dané číslo

Msgbox(cells(1,1)) - zobrazí se výsledek vypočteného vzorce uloženého v buňce A1.

MsgBox() – zobrazí okno se zprávou a vrátí hodnotu podle toho, které tlačítko uživatel stiskl. Lze použít k zobrazení výsledků výpočtu na obrazovce jako zprávy.

MsgBox (výzva, tlačítka, název, soubor nápovědy, kontext)

MsgBox (popisek, tlačítka, nadpis, soubor nápovědy, kontext)

výzva (nápověda) - zpráva zobrazená na obrazovce.

tlačítka (buttons) - konstanta, která určuje, která tlačítka budou obsažena v tomto dialogovém okně.

title – Název dialogového okna.

helpfile (soubor nápovědy) - název souboru nápovědy.

kontext (kontext) - kontext pro kontextovou nápovědu, popsaný, pokud existuje soubor nápovědy.

InputBox - funkce zadávání počátečních dat. Zobrazí dialogové okno se zprávou a polem pro zadání uživatelského textu.

" krátce jsme se seznámili s dialogovou zprávou msgbox. Šlo ale o nejjednodušší informační zprávu. Nyní se podíváme blíže na práci s funkcí MsgBox a všechny typy dialogových zpráv.

Syntaxe funkce MsgBox

Funkce MsgBox má následující syntaxi:

MsgBox( zpráva [, konstanty zpráv] [, název] [, soubor nápovědy hlp, kontext nápovědy] )

Požadovaný parametr je "Zpráva", zbytek lze vynechat.

MsgBox "Text zprávy

  • Konstanty zpráv- umožňují definovat typ dialogů.
  • záhlaví– nastavuje název dialogového formuláře.
  • Soubor nápovědyhlp je řetězcový výraz, který určuje název souboru nápovědy pro dialogové okno.
  • Kontext nápovědy je číselný výraz, který určuje kontextové číslo souboru nápovědy pro dialogové okno.

Zobrazit dialog:

vytvořeno následujícím příkazem:
MsgBox "Text obsahující otázku", vbYesNo, "Název zprávy"

Chcete-li vytvořit zprávu jako je tato:

příkaz bude vypadat takto:
MsgBox "Text obsahující otázku", vbYesNoCancel, "Název zprávy"

Zpráva podobná této:

vytvořeno příkazem:
MsgBox "Text obsahující otázku", vbAbortRetryIgnore, "Název zprávy"

těch. ze všech tří příkladů v příkazu se změní pouze druhý parametr (vbYesNo, vbYesNoCancel, vbAbortRetryIgnore). Toto jsou hodnoty (konstanty), které určují typ zprávy. Parametry (vbYesNo, vbYesNoCancel) lze nahradit číselnou hodnotou, například dialog vbYesNo lze vyvolat zadáním 4: MsgBox "Text obsahující otázku", 4, "Název zprávy".

Následuje úplný seznam konstant a jejich digitálních ekvivalentů:

Konstantní

Význam

Popis

vbOKOnly

Zobrazí zprávu s tlačítkem OK

vbOKZrušit

Zobrazí zprávu pomocí tlačítek OK A zrušení

vbAbortRetryIgnore

Zobrazí zprávu pomocí tlačítek přerušit, opakovat, Přeskočit

vbYesNoCancel

Zobrazí zprávu pomocí tlačítek Ano, Ne, zrušení.

Zobrazí zprávu pomocí tlačítek Ano A Ne

vbRetryCancel

Zobrazí zprávu pomocí tlačítek Opakovat A zrušení

Ve zprávách můžete mírně změnit vzhled, přiřadit výchozí tlačítko, přidat tlačítko "Nápověda" přidáním konstant.

Například: MsgBox "Text obsahující otázku", vbYesNoCancel+vbInformation + vbMsgBoxHelpButton+vbDefaultButton2, "Název zprávy" vytvoří zprávu jako:

vbInformace- přidá ke zprávě ikonu vykřičníku
vbMsgBoxHelpButton- přidá tlačítko "Nápověda".
vbDefaultButton2- nastaví fokus na druhé tlačítko (" Ne")

Níže je tabulka se seznamem konstant ikon a konstant zaměření tlačítka:

Konstantní

Význam

Popis

vbCritical

Zobrazí ikonu kritická zpráva(červený ovál s křížem)

vbQuestion

Zobrazí ikonu s otazník

vbExclamation

Zobrazí ikonu s vykřičník(ve žlutém trojúhelníku)

vbInformace

Zobrazí ikonu informační zpráva

vbDefaultButton1

Nastaví výchozí fokus na první tlačítko

vbDefaultButton2

Nastaví výchozí fokus na druhé tlačítko

vbDefaultButton3

Nastaví výchozí fokus na třetí tlačítko

vbDefaultButton4

Nastaví výchozí fokus na čtvrté tlačítko

vbMsgBoxHelpButton

Přidá tlačítko Odkaz

vbMsgBoxRight

Zarovnejte text zprávy na pravou stranu

vbMsgBoxRtlReading

Zrcadlí všechny prvky ve zprávě (viz snímek níže)

Jak zjistit, na které tlačítko ve zprávě uživatel klikl?

Volba uživatele bude určena pomocí . V některých situacích můžete použít .

Zavolejte například zprávu dvojitým kliknutím LMB na kteroukoli buňku na listu. V souladu s volbou uživatele zobrazíme text v této buňce.

Vytvořte nový excelový sešit a přepněte do režimu Visual Basic (Alt+F11). V okně projektu vyberte " List1» a dvakrát na něj klikněte LMB.

V okně editoru kódu, které se otevře, zadejte následující postup:

Soukromý sub Worksheet_BeforeDoubleClick( ByVal cílová Tak jako rozsah, zrušit Tak jako Boolean)

Li MsgBox("Text obsahující otázku", vbYesNo, "Název zprávy") = vbYes Pak
Výběr = "ANO stisknuto"
Jiný
Výběr = "Stisknuto ne"
End If

V podmínce IF porovnáváme výsledek vrácený funkcí MsgBox s konstantou vbYes tzn. pokud je ve zprávě stisknuto tlačítko Ano“, pak funkce MsgBox vrátí hodnotu vbYes (6). Úplný seznam konstant a jejich digitálních ekvivalentů je uveden níže. Nyní zkuste List 1 dvakrát klikněte na libovolnou buňku.

Poznámka: Když je zavolána zpráva, provádění programu se zastaví, dokud není přijata odpověď od uživatele.

Druhá možnost vyvolání dialogu .

Vytvořme druhou proceduru na Listu 2. Kód procedury je následující:

Soukromý sub Worksheet_BeforeDoubleClick( ByVal cílová Tak jako rozsah, zrušit Jako Boolean)
Ztlumit mes
mes = MsgBox("Text obsahující otázku", vbYesNoCancel + vbInformation + vbDefaultButton2, "Název zprávy")

Vyberte případ mes
pouzdro vbYes: Výběr = "ANO stisknuto"
pouzdro vbNo: Selection = "Stisknuto NE"
pouzdro vbCancel: Selection = "Stisknuto zrušení"
Konec Vyberte

V tomto případě je výsledek volání MsgBox přiřazen k proměnné mes a pak v Select Case se vyhledá shoda a podle shody se provedou akce.

To je vše. Níže je připojen hotový příklad probíraný v tomto článku.

Seznam konstant a hodnot vrácených funkcí MsgBox:

Konstantní

Význam

Knoflík

vbCancel

zrušení

přerušit

Opakovat

vbIgnore

Přeskočit

Metoda Buňky aktivuje zadanou buňku. Syntaxe metody je následující:

Buňky[(N řádků, N sloupců)]

N řádků -číslo řádku aktuálního listu Excelu ,

N sloupec -číslo sloupce aktuálního listu Excelu (při volání této metody jsou sloupce očíslovány).

Tato možnost syntaxe předpokládá, že buňka na aktivním listu aplikace Excel je v průsečíku N řádků A N sloupec, se stane aktivní.

Pomocí metody Buňky můžete aktivovat buňku, abyste pak mohli zadávat nebo zobrazovat data.

Pokud je tato metoda použita zadávání dat z buňky listu do proměnné Buňky stojí na pravé straně operátoru přiřazení a if závěr z proměnné do buňky listu Buňky je na jeho levé straně.

Vstupní struktura, pomocí metody Buňky další:

< název>=Cells( ),

< název> - jednoduchá proměnná nebo prvek pole.

výstupní struktura pomocí metody Buňky další:

Buňky( )= < výraz>,

< výraz> - jakoukoli výstupní hodnotu.

Zvažte příklad následujícího programu:

Sub I/O_Cells()

Cells(5, 1) = "c="

Před spuštěním tohoto makra vypadal list aplikace Excel takto (viz obrázek 13):

A po spuštění makra to vypadá takto (viz obr. 14):

Řídicí struktury VBA. Podmíněný operátor. Operátor nepodmíněného skoku

Řídící struktury umožňují řídit sekvenci provádění programu. Bez řídicích příkazů by se všechny příkazy programu prováděly zleva doprava a shora dolů. Zvažte jednu z řídicích struktur VBA − podmíněný operátor.

Podmíněný operátor se používá, když je potřeba provést jeden nebo skupinu příkazů v závislosti na hodnotě nějaké podmínky.

Syntaxe podmíněného operátoru:

krátká forma Þ Li<условие>Pak<оператор>

Li< условие >Pak

< оператор > /< Группа операторов 1 >

Plná forma Þ Li< условие >Pak

< оператор 1 > / < Группа операторов 1 >

< оператор 2> < Группа операторов 2 >

V blokovém diagramu je podmíněný příkaz znázorněn následovně:

Obvykle je podmínkou jednoduché srovnání, ale může to být jakýkoli výraz s vypočítanou hodnotou. Tato hodnota je interpretována jako False (False), pokud je nulová, a jakákoli nenulová hodnota je považována za True (True). Pokud je podmínka pravdivá, provedou se všechny výrazy za klíčovým slovem. Pak. Pokud je podmínka nepravdivá, provedou se všechny výrazy za klíčovým slovem. Jiný.

Je povoleno více vnořených konstrukcí, které mají tolik úrovní vnoření, kolik je potřeba.

Zvažte jinou řídicí strukturu - operátor nepodmíněného skoku. Jeho syntaxe je:

jít do označení,

Kde označení je jakákoliv kombinace znaků.

Tento příkaz násilně změní pořadí provádění programu. Příkaz GoTo přenese kontrolu na označený výpis, tzn. po příkazu GoTo se provede příkaz určený návěštím.

Řídicí struktury VBA. Operátoři smyčky.

Někdy je potřeba opakovaně provádět určitou sadu instrukcí automaticky nebo řešit problém jiným způsobem v závislosti na hodnotě proměnných nebo parametrů nastavených uživatelem během provádění. K tomu se používá podmíněný operátor a operátor smyčky.

Zvažte příkazy smyčky VBA. Smyčka se známým počtem opakování(smyčka s parametrem) implementovaná ve VBA s operátorem Pro další následující struktura:

Pro<параметр цикла>= <начальное значение> Komu<конечное значение>

<операторы VBA>

další<параметр цикла>

<параметр цикла>– název (identifikátor) parametru cyklu;

<начальное значение> je počáteční hodnota parametru cyklu;

<конечное значение>je konečná hodnota parametru cyklu;

<шаг>– krok změny parametru cyklu (volitelný parametr, pokud chybí, krok změny je roven 1);

<операторы VBA>

V blokovém diagramu je tento operátor znázorněn následovně:

V těle této smyčky můžete použít operátor Konec pro, pomocí kterého můžete cyklus dokončit Pro další než parametr nabude své konečné hodnoty.

Smyčky s neznámým počtem opakování jsou implementovány ve VBA pomocí příkazů Do While… Loop, Do Until… Loop, Do… Loop While, Do… Loop Before.

Zvažte strukturu příkazu Do While... Loop.

Dělat, zatímco<условие>

<операторы VBA>

Tady <условие> – logické vyjádření;

<операторы VBA> - Příkazy VBA, které implementují tělo smyčky.

<условие>, Pokud<условие>má hodnotu True, pak se provedou příkazy až do servisního slova Loop. Poté je podmínka znovu kontrolována a tak dále, dokud se podmínka nestane nepravdivou (False).

Zvažte strukturu příkazu Do Until ... Loop.

Do dokud<условие>

<операторы VBA>

Operátor se provádí následovně. Kontrolovány<условие>, Pokud<условие>má hodnotu False, pak se provedou příkazy až do servisního slova Loop. Poté se podmínka znovu zkontroluje a tak dále, dokud se podmínka nestane pravdivou (True).

V blokovém diagramu je tento operátor znázorněn následovně:

Podívali jsme se na příkazy smyčky, které implementují smyčku s předběžnou podmínkou.

Zvažte operátory smyčky, které implementují smyčku s postcondition. Toto jsou příkazy Do… Loop While a Do… Loop Until. Struktura těchto operátorů je následující:

<операторы VBA>

Opakovat dokud<условие>

<условие>, Pokud<условие>nabývá hodnoty False, pak se opět provedou příkazy až do servisního slova Loop. Toto pokračuje až do<условие>se nestane pravdou (True).

V blokovém diagramu je tento operátor znázorněn následovně:

<операторы VBA>

smyčka zatímco<условие>

Operátor se provádí následovně. Provádějí se operátory až do servisního slova Loop. Poté zkontrolováno<условие>, Pokud<условие>nabývá hodnotu True, pak se opět provedou příkazy až do servisního slova Loop. Toto pokračuje až do<условие>se nestane falešným (False).

V blokovém diagramu je tento operátor znázorněn následovně:

Ve VBA existuje operátor, který umožňuje předčasné ukončení smyček s neznámým počtem opakování. Chcete-li opustit tyto smyčky, musíte použít operátor Konec Do.