Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«VBA для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ²Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 67

Автор Π‘Ρ‚ΠΈΠ² Каммингс

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½Π½Π°Ρ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Ρ‚ΠΈΠΏΠ° Function ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ DateDiff ΠΈ DateSerial для вычислСния возраста пСрсоны Π² Π³ΠΎΠ΄Π°Ρ…. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ появлСния ошибок ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚ΠΎΠ³ΠΎ значСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚, Π·Π°Π΄Π°ΡŽΡ‰ΠΈΠΉ Π΄Π°Ρ‚Ρƒ роТдСния (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ для этого Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ IsDate), Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ получСнная Π΄Π°Ρ‚Π° роТдСния Π½Π΅ находится Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ.


Function WhatAge(dateDateOfBirth As Date)

Dim intAge As Integer ' Π·Π°Π΄Π°ΠΉΡ‚Π΅ Long, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ возраст > 255 intAge = DateDiff ("yyyy", DateDateOfBirth, Date)

β€˜ провСряСтся, дСнь роТдСния Π² этом Π³ΠΎΠ΄Ρƒ Π±Ρ‹Π» ΠΈΠ»ΠΈ Π½Π΅Ρ‚:

If DateSerial ( Year ( Date), Month(DateDateOfBirth), _

Day(DateDateOf Birth)) > Date Then

intAge = intAge – 1

End If

WhatAge = intAge

End Function


Из-Π·Π°, Ρ‚Π°ΠΊ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, паразитичСского ΠΎΠ±Ρ€Π°Π·Π° ΠΆΠΈΠ·Π½ΠΈ Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΡ… прилоТСниях, VBA ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… элСмСнтов ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса (Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹Ρ… ΠΎΠΊΠΎΠ½, мСню ΠΈ Ρ‚.ΠΏ.)- ΠŸΡ€ΠΈ запускС VBA-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π½Π° Π±Π°Π·Π΅ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° прилоТСния, сообразуя свои дСйствия с содСрТимым этого Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°.

Ясно, ΠΏΡ€Π°Π²Π΄Π°, ΠΈ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ сущСствуСт Π½Π΅ΠΌΠ°Π»ΠΎ ситуаций, ΠΊΠΎΠ³Π΄Π° трСбуСтся прямоС взаимодСйствиС с ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ VBA-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠŸΡ€Π΅ΠΊΡ€Π°ΡΠ½Ρ‹Π΅ возмоТности для создания ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΎΠΊΠΎΠ½ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ срСдства создания ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Ρ„ΠΎΡ€ΠΌ VBA (ΠΎ Ρ‡Π΅ΠΌ ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ Π² Π³Π»Π°Π²Π΅ 10), Π½ΠΎ Ссли Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ Π±ΠΎΠ»Π΅Π΅ простыми срСдствами, Ρ‚ΠΎ Ρ‡Π΅ΠΌ ΠΏΡ€ΠΎΡ‰Π΅, Ρ‚Π΅ΠΌ Π»ΡƒΡ‡ΡˆΠ΅.

Π”Π²Π΅ VBA-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, MsgBox ΠΈ Input Box, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΈΠ΅ возмоТности Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ уровня для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ сообщСний ΠΈ получСния ΠΎΡ‚ Π½Π΅Π³ΠΎ ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ².

* Ѐункция MsgBox ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΠΎΠΊΠ½ΠΎ с сообщСниСм, Π½ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ - ΠΎΠ½Π° позволяСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Π½Π° ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ· Π΄Π²ΡƒΡ… (ΠΈΠ»ΠΈ большС) ΠΊΠ½ΠΎΠΏΠΎΠΊ Ρ‰Π΅Π»ΠΊΠ½ΡƒΠ» ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΎΠΊΠ½ΠΎ.

* Ѐункция Input Box ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΠΎΠΊΠ½ΠΎ с сообщСниСм ΠΈ ΠΏΠΎΠ»Π΅ΠΌ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚.

Π€ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ синтаксичСская конструкция Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ MsgBox выглядит Ρ‚Π°ΠΊ:

MsgBox(сообщСниС[, ΠΊΠ½ΠΎΠΏΠΊΠΈ] [, Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ] [, Ρ„Π°ΠΉΠ»_справки, Ρ€Π°Π·Π΄Π΅Π»])

Как ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ скобки, ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ здСсь Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ сообщСниС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ, ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Π·Π°Π΄Π°Π΅Ρ‚ Ρ‚ΠΎ сообщСниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹ ΠΆΠ΅Π»Π°Π΅Ρ‚Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ Π½Π° экранС.

Π’ своСй ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ функция MsgBox дСйствуСт ΠΊΠ°ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€. ΠžΡ‚ вас трСбуСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ строкС ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ сообщСниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ трСбуСтся ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ. НапримСр:

MsgBox "Π­Ρ‚ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ MsgBox."

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ выполнСния Ρ‚Π°ΠΊΠΎΠΉ строки VBA ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ Π½Π° экранС ΠΎΠΊΠ½ΠΎ с сообщСниСм, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ Π½Π° рис. 11.2 (ΠΏΡ€ΠΈΠΌΠ΅Ρ€ А).


Рис. 11.2. Π’Ρ€ΠΈ простых ΠΎΠΊΠ½Π° сообщСния

ВСкст сообщСния ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² скобки, Π½ΠΎ скобки Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹, ΠΊΠΎΠ³Π΄Π° функция ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€.

Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ»ΠΈ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ. Как ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, VBA автоматичСски ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π·Π° вас числовыС значСния ΠΈ Π΄Π°Ρ‚Ρ‹ Π² ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹Π΅ символы. НапримСр, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π²ΠΏΠΎΠ»Π½Π΅ работоспособСн, Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π° рис. 11.2 (ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π‘):


intWishCount = 3

datWhen = Format(Now, "Short date")

strInfol = "Ha "

strInfo2 = " ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ ΠΆΠ΅Π»Π°Π½ΠΈΠΉ: "

MsgBox strlInfol & datWhen & strInf o2 & intWishCount


Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ сообщСниС Π² нСсколько строк, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² сообщСниС символы ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π½Π° Π½ΠΎΠ²ΡƒΡŽ строку (ΠΈΡ… ASCII-ΠΊΠΎΠ΄ Ρ€Π°Π²Π΅Π½ 13) с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Chr (ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π’ Π½Π° рис. 11.2).

MsgBox "Π­Ρ‚ΠΎ пСрвая строка." & Chr(13) & "Π­Ρ‚ΠΎ вторая строка.'

МоТно Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ тСкст многострочного сообщСния ΠΈ Π½Π° столбцы, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ символы табуляции (ΠΈΡ… ASCII-ΠΊΠΎΠ΄ Ρ€Π°Π²Π΅Π½ 9).

ΠšΡ€ΠΎΠΌΠ΅ сообщСния, Π² ΠΎΠΊΠ½Π΅ сообщСния ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½Π° ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… стандартных ΠΏΠΈΠΊΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌ, Π° Ρ‚Π°ΠΊΠΆΠ΅ нСсколько ΠΊΠ½ΠΎΠΏΠΎΠΊ стандартного Π²ΠΈΠ΄Π°. ВсС это задаСтся ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΎΠ΄Π½ΠΎΠ³ΠΎ числового значСния для Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ.

Π‘ ΠΏΠΈΠΊΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ вашС ΠΎΠΊΠ½ΠΎ сообщСния Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ "ΠΊΡ€ΡƒΡ‡Π΅", Ρ‡Π΅ΠΌ ΠΏΡ€ΠΎΡΡ‚Π΅Π½ΡŒΠΊΠΈΠ΅ ΠΎΠΊΠ½Π° с рис. 11.2. ПоказанноС Π½Π° рис. 11.3 ΠΎΠΊΠ½ΠΎ сообщСния содСрТит ΠΏΠΈΠΊΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ критичСской ситуации (эта ΠΏΠΈΠΊΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²ΠΎΠ»Π½Π΅Π½ΠΈΠ΅).


Рис. 113. НСпростоС ΠΎΠΊΠ½ΠΎ сообщСния

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΠΊΠ½ΠΎ сообщСния ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠ½ΠΎΠΏΠΊΡƒ ОК, Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π² Π½Π΅Π³ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ с надписями ΠžΡ‚ΠΌΠ΅Π½Π°, Π”Π°, НСт, Π‘Ρ‚ΠΎΠΏ, ΠŸΠΎΠ²Ρ‚ΠΎΡ€ ΠΈ ΠŸΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… комбинациях. На рис. 11.3 ΠΊΠ°ΠΊ Ρ€Π°Π· ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΠΎΠΊΠ½ΠΎ с ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΉ ΠΊΠ½ΠΎΠΏΠΎΠΊ.

Как ΠΈ для ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ вычисляСтся ΠΊΠ°ΠΊ сумма констант, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… Π½Π°Π±ΠΎΡ€Ρ‹ ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΈ ΠΏΠΈΠΊΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. МоТно ΠΏΠΎΠ΄ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π½ΡƒΠΆΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Π½ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ подходящСС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Ρ… VBA-констант, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΡ‹Ρ… ΠΊΠ°ΠΊ Ρ€Π°Π· для этих Ρ†Π΅Π»Π΅ΠΉ. Π’ Ρ‚Π°Π±Π». 11.6 эти константы ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ вмСстС с ΠΈΡ… числовыми значСниями ΠΈ описаниями назначСния.

Π’Π°Π±Π»ΠΈΡ†Π° 11.6. ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Ρ‹ VBA для ΠΎΠΊΠΎΠ½ сообщСний ΠΈ ΠΎΠΊΠΎΠ½ Π²Π²ΠΎΠ΄Π°


ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Π°

ЧисловоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

Π‘ΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ дСйствиС

vbOKOnly

0

ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠ½ΠΎΠΏΠΊΠΈ ОК

vbOKCancel

1

ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΎΠΊ ОК ΠΈ ΠžΡ‚ΠΌΠ΅Π½Π°

vbAbcrtRetryIgnore

2

ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΎΠΊ Π‘Ρ‚ΠΎΠΏ, ΠŸΠΎΠ²Ρ‚ΠΎΡ€ ΠΈ ΠŸΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ

vbYesNoCancel

3

ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΎΠΊ Π”Π°, НСт ΠΈ ΠžΡ‚ΠΌΠ΅Π½Π°

vbYesNo

4

ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΎΠΊ Π”Π° ΠΈ НСт

vbRetryCancel

5

ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠŸΠΎΠ²Ρ‚ΠΎΡ€ ΠΈ ΠžΡ‚ΠΌΠ΅Π½Π°

vbCritical

16

ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΈΠΊΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ сообщСниС

vbQuestion

32

ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΈΠΊΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°ΡŽΡ‰ΠΈΠΉ запрос

vbExclamation

48

ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΈΠΊΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°ΡŽΡ‰Π΅Π΅ сообщСниС

vbInformation

64

ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΈΠΊΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π˜Π½Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‰Π΅Π΅ сообщСниС

vbDefaultButton1

0

Π’Ρ‹Π±ΠΎΡ€ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ

vbDefaultButton2

256

Π’Ρ‹Π±ΠΎΡ€ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ

vbDefaultButton3

512

Π’Ρ‹Π±ΠΎΡ€ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ

vbDefaultButton4

768

Π’Ρ‹Π±ΠΎΡ€ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ


Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этой Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ нСслоТно ΠΏΠΎΠ΄ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΠ²ΡˆΠ΅ΠΉ ΠΎΠΊΠ½ΠΎ сообщСния, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π½Π° рис. 11.3, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ Π±Ρ‹Π»ΠΎ Ρ€Π°Π²Π½Ρ‹ΠΌ 531. Но ΠΊΠΎΠΌΡƒ хочСтся это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ? Π›Π΅Π³Ρ‡Π΅ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€:


intA = MsgBox("НаТмитС ΠΊΠ½ΠΎΠΏΠΊΡƒ", vbYesNoCancel + vbCritical

+ vbDefault Button3, "VBA для 'Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ²'")


Π’Ρ€Π΅Ρ‚ΡŒΡ ΠΈΠ· констант, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ для Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ, константа vbDefaultButton3, Π½Π°Π·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ‚Ρ€Π΅Ρ‚ΡŒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ (считая слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ) ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ, Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌΠΎΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС это ΠΊΠ½ΠΎΠΏΠΊΠ° ΠžΡ‚ΠΌΠ΅Π½Π°. Если Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ рис. 11.3, ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ° ΠžΡ‚ΠΌΠ΅Π½Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π° фокус Π²Π²ΠΎΠ΄Π° - надпись Π½Π° Π½Π΅ΠΉ ΠΎΡ‡Π΅Ρ€Ρ‡Π΅Π½Π° ΠΏΡƒΠ½ΠΊΡ‚ΠΈΡ€Π½ΠΎΠΉ Ρ€Π°ΠΌΠΊΠΎΠΉ, ΠΈ это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ эта ΠΊΠ½ΠΎΠΏΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ Π°ΠΊΡ‚ΠΈΠ²ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π°, Ссли Π²Ρ‹ Π½Π°ΠΆΠΌΠ΅Ρ‚Π΅ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ ΠΏΡ€ΠΎΠ±Π΅Π»Π° ΠΈΠ»ΠΈ <Enter>.

Бмысл отобраТСния ΠΊΠ½ΠΎΠΏΠΎΠΊ Π² ΠΎΠΊΠ½Π΅ сообщСния Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² прСдоставлСнии ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ возмоТности Π²Ρ‹Π±ΠΎΡ€Π° дСйствия. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ - слСдуСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‰Π΅Π»ΠΊΠ½ΡƒΡ‚ΡŒ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΊΠ½ΠΎΠΏΠΎΠΊ. А Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΡƒΠΌΠ΅Ρ‚ΡŒ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, Π½Π° ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ· ΠΊΠ½ΠΎΠΏΠΎΠΊ Ρ‰Π΅Π»ΠΊΠ½ΡƒΠ» ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ.

Π­Ρ‚ΠΎ просто, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ функция MsgBox Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ†Π΅Π»ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊ Ρ€Π°Π· ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ Ρ‚ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠ΅, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ‰Π΅Π»ΠΊΠ½ΡƒΠ» ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ. Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π½Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ свою ΠΏΠ°ΠΌΡΡ‚ΡŒ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌΠΈ числами, Π° с ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΡ‹ΠΌΠΈ VBA ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ константами. Π’ΠΎΡ‚ эти константы вмСстС с ΠΈΡ… Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ значСниями.

vbOK 1

vbCancel 2

vbAbort 3

vbRetry 4

vbIgnore 5

vbYes 6

vbNo 7

Если Π² ΠΎΠΊΠ½Π΅ сообщСния всСго Π΄Π²Π΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ, для выяснСния, Π½Π° ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ· ΠΊΠ½ΠΎΠΏΠΎΠΊ Π±Ρ‹Π» Ρ‰Π΅Π»Ρ‡ΠΎΠΊ, прСкрасно ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ If ... Then. НапримСр:


If MsgBox ("ΠΠ°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ?", vbYesNo) = vbYes Then

Π§Ρ‚ΠΎΠΠΈΠ±ΡƒΠ΄ΡŒΠ‘Π΄Π΅Π»Π°Ρ‚ΡŒ

Else

ΠΡΠ”Π΅Π»Π°Ρ‚ΡŒ НичСго

End If


Когда ΠΊΠ½ΠΎΠΏΠΎΠΊ большС, приходится ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ If . . .Then. . .Else If.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΠΊΠ½ΠΎ сообщСния ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Π² строкС Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° имя Ρ‚ΠΎΠ³ΠΎ VBA прилоТСния, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ выполняСтся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° (см. рис. 11.2). Π­Ρ‚ΠΎΡ‚ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π° любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ, Π·Π°Π΄Π°Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ MsgBox (см. рис. 11.3).

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½Π° ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π±ΠΎΠ»Π΅Π΅ конкрСтная информация, Π½Π΅ ΡƒΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽΡ‰Π°ΡΡΡ Π² Ρ€Π°ΠΌΠΊΠΈ Π²Ρ‹Π±ΠΎΡ€Π° ΠΈΠ· Ρ‚Ρ€Π΅Ρ… ΠΊΠ½ΠΎΠΏΠΎΠΊ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Input Box. Π’ΠΎΡ‚ Π΅Π΅ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Π°Ρ синтаксичСская конструкция, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, Ρ€Π°ΡΡˆΠΈΡ€ΡΡŽΡ‰ΠΈΠ΅ возмоТности:

InputBox(сообщСниС[, Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ] [, ΠΎΡ‚Π²Π΅Ρ‚])

Как Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· рис. 11.4, эта функция ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ с ΠΏΠΎΠ»Π΅ΠΌ тСкста, ΠΊΡƒΠ΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ, ΠΊΠ°ΠΊ прСдполагаСтся, Π²Π°ΠΆΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ эту ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, присвойтС Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π½ΠΎΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ Input Box Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ строковой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ: strB = InputBox("КакиС мСста ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅?", "TWA", "Π£ ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π°")