ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² эксСль ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹: Excel ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ vba

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Excel — voxt.ru

Как ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² Excel?

VBA (Visual Basic для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ) это язык программирования Microsoft Excel. Π­Ρ‚ΠΎ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π² excel для программирования Π²Π΅Ρ‰Π΅ΠΉ ΠΈΠ»ΠΈ Π·Π°Π΄Π°Ρ‡ нашСй повсСднСвной Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π£ нас Π΅ΡΡ‚ΡŒ Π½Π°Π±ΠΎΡ€ слов для описания Π½Π°ΡˆΠΈΡ… потрСбностСй, ΠΈ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΡƒΡ‡ΠΈΡ‚ΡŒ эти слова, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Excel.

VBA β€” это ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ для написания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π° строка, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ пишСм ΠΊΠ°ΠΊ ΠΊΠΎΠ΄, называСтся макросом. ΠœΠ°ΠΊΡ€ΠΎΡ β€” это просто Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ инструктируСт Excel, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ.

Π‘Π½Π°Ρ‡Π°Π»Π° Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°

Доступ ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π½Π° VBA ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ, Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ² Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Π ΠΠ—Π ΠΠ‘ΠžΠ’Π§Π˜Πš Π² Excel. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² MS Excel ΠΎΠ½ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½; Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π΅Π³ΠΎ. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅.

Если Π²ΠΊΠ»Π°Π΄ΠΊΠ° Β«Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΒ» Π²Π°ΠΌ Π½Π΅ Π²ΠΈΠ΄Π½Π°, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π΅Π΅ Π² вашСй систСмС.

Π¨Π°Π³ 1: ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² ЀАЙЛ.

Π¨Π°Π³ 2: Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ ЀАЙЛ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ ΠΊ ОПЦИИ.

Π¨Π°Π³ 3: Π’Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ всС ΠΎΠΊΠ½ΠΎ Β«ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ExcelΒ». Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΠ°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π»Π΅Π½Ρ‚Ρƒ Π² Excel.

Π¨Π°Π³ 4: УстановитС Ρ„Π»Π°ΠΆΠΎΠΊ Π ΠΠ—Π ΠΠ‘ΠžΠ’Π§Π˜Πš, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π΅Π³ΠΎ. Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ОК.

Π¨Π°Π³ 5: Π’Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ‚ΠΎ Π’ΠΊΠ»Π°Π΄ΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°.

Как Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ макросы Π² Excel?

Π›ΡƒΡ‡ΡˆΠΈΠΉ способ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Excel β€” это Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ макрос.

Π­Ρ‚ΠΎ ΠΊΠ°ΠΊ наш ΠΌΠ°Π³Π½ΠΈΡ‚ΠΎΡ„ΠΎΠ½ ΠΈΠ»ΠΈ Π²ΠΈΠ΄Π΅ΠΎΠΌΠ°Π³Π½ΠΈΡ‚ΠΎΡ„ΠΎΠ½. Он записываСт всС дСйствия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ, Π² ΡΠ»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, ΠΏΠΎΠΊΠ° ΠΌΡ‹ Π½Π΅ Π½Π°ΠΆΠΌΠ΅ΠΌ ΠΊΠ½ΠΎΠΏΠΊΡƒ остановки записи. Π₯ΠΎΡ€ΠΎΡˆΠΎ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ сСйчас приступим ΠΊ процСссу записи.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ этот шаблон Excel для программирования здСсь β€” Π¨Π°Π±Π»ΠΎΠ½ для программирования Excel

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ шаги, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ макросы Π² Excel.

Π¨Π°Π³ 1: На Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Β«Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΒ» Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Β«Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ макрос».

Π¨Π°Π³ 2: НазовитС макрос.

ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ‹ Π½Π°ΠΆΠΌΠ΅ΠΌ Β«Π—Π°ΠΏΠΈΡΡŒ макроса», ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ Π²Π½ΠΈΠ·Ρƒ ΠΎΠΊΠ½ΠΎ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ нас просят Π΄Π°Ρ‚ΡŒ имя макросу. Называя макрос, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΈ условия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π½ΠΈΠΆΠ΅.

  • Имя макроса Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ².
  • Имя макроса Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒΡΡ с числового значСния.
  • Имя макроса Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… символов, ΠΊΡ€ΠΎΠΌΠ΅ подчСркивания.

Π¨Π°Π³ 3: НазовитС ΠΎΠΊΠ½ΠΎ макроса

Нам Π½ΡƒΠΆΠ½ΠΎ Π΄Π°Ρ‚ΡŒ собствСнноС имя ΠΎΠΊΠ½Ρƒ макроса. Π’ ΠΎΠΊΠ½Π΅ Π½ΠΈΠΆΠ΅ я Π΄Π°Π» имя Β«Recording_MacroΒ». Как ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, здСсь Π½Π΅Ρ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ символа ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ±Π΅Π»Π°.

Π¨Π°Π³ 4: Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ОК, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ запись.

Π¨Π°Π³ 5: Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ дСйствия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ записаны Π² макрос.

Π’ Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ ОК, начинаСтся запись Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ Π² Excel.

ΠŸΠ΅Ρ€Π²ΠΎΠ΅, Ρ‡Ρ‚ΠΎ я сдСлаю Π² Excel, это Π²Ρ‹Π΄Π΅Π»ΡŽ ячСйку A1. Π­Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ дСйствиС Π½Π° этом листС.

ПослС Π²Ρ‹Π±ΠΎΡ€Π° ячСйки Π½Π°Π±Π΅Ρ€Ρƒ Β«Π”ΠΎΠ±Ρ€ΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒ Π² VBAΒ» Π² этой ΠΊΠ°ΠΌΠ΅Ρ€Π΅. Π­Ρ‚ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠ΅ дСйствиС Π² Excel.

Когда я Π·Π°ΠΊΠΎΠ½Ρ‡Ρƒ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ, ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ Π²Π²ΠΎΠ΄Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ, поэтому я наТимаю ΠΊΠ»Π°Π²ΠΈΡˆΡƒ Π²Π²ΠΎΠ΄Π°. Π’ Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° я Π½Π°ΠΆΠΌΡƒ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ Π²Π²ΠΎΠ΄Π°, Π²Ρ‹Π±ΠΎΡ€ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡΡ с ячСйки A1 Π½Π° ячСйку A2. Π­Ρ‚ΠΎ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ дСйствиС Π² Excel.

Π¨Π°Π³ 6: НаТмитС Π½Π° ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ запись Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ запись макроса.

ПослС этих Ρ‚Ρ€Π΅Ρ… дСйствий я Π²Ρ‹Π±Π΅Ρ€Ρƒ ΠΎΠΏΡ†ΠΈΡŽ остановки записи Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°.

Π’ Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ Β«ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ запись», ΠΎΠ½ пСрСстаСт Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ дСйствия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ Π² Excel.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ Ρ‡Π΅Ρ€Π΅Π· Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ записано, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Excel. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ этот ΠΊΠΎΠ΄ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Β«Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΒ», Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Β«Visual BasicΒ» ΠΈΠ»ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ клавиш Β«ALT + F11Β».

Π‘ΠΎΡ‡Π΅Ρ‚Π°Π½ΠΈΠ΅ клавиш Excel для наТатия Β«Visual BasicΒ».

ПослС наТатия Β«Visual BasicΒ» ΠΈΠ»ΠΈ сочСтания клавиш, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΎΠΊΠ½ΠΎ ΠΏΠΎΠ΄ ΠΎΠΊΠ½ΠΎΠΌ.

Π”Π²Π°ΠΆΠ΄Ρ‹ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ всС записи, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ сдСлали Π΄ΠΎ сих ΠΏΠΎΡ€, появятся справа.

Как Π²ΠΈΠ΄ΠΈΠΌ, ΠΏΠ΅Ρ€Π²ΠΎΠ΅ слово β€” Β«SUB. Β» ВсС ΠΈΠΌΠ΅Π½Π° макросов Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с Β«SubΒ», Β«FunctionΒ», Β«PrivateΒ» ΠΈΠ»ΠΈ Β«PublicΒ».

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ макрос состоит ΠΈΠ· Π΄Π²ΡƒΡ… частСй; ΠΎΠ΄ΠΈΠ½ β€” Β«Π“ΠΎΠ»ΠΎΠ²Π°Β», Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ β€” Β«Π₯вост». Π“ΠΎΠ»ΠΎΠ²Π° β€” это имя макроса, Π° хвост β€” это ΠΊΠΎΠ½Π΅Ρ† макроса.

ΠœΠ΅ΠΆΠ΄Ρƒ этим Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ ΠΈ ΠΊΠΎΠ½Ρ†ΠΎΠΌ макроса excel VBA записал всС дСйствия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ сдСлали. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° ΠΊΠΎΠ΄ построчно.

ΠŸΡ€ΠΎΡΡ‚ΠΎ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, ΠΊΠ°ΠΊΠΈΠΌ Π±Ρ‹Π»ΠΎ нашС ΠΏΠ΅Ρ€Π²ΠΎΠ΅ дСйствиС послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ‹ Π½Π°Ρ‡Π°Π»ΠΈ запись макроса, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΌΡ‹ Π²Ρ‹Π±Ρ€Π°Π»ΠΈ ячСйку A1, поэтому для этого Π² ΠΊΠΎΠ΄Π΅ программирования VBA ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ (Β«A1Β»). Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ

ПослС Π²Ρ‹Π±ΠΎΡ€Π° ячСйки A11 ΠΌΡ‹ вошли Π² тСст ΠΊΠ°ΠΊ Β«Π”ΠΎΠ±Ρ€ΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒ Π² VBAΒ», поэтому Π² ΠΊΠΎΠ΄Π΅ программирования VBA

ActiveCell. FormulaR1C1 = β€œWelcome to VBA”

Π—Π°ΠΌΠ΅Ρ‚ΠΊΠ°: R1C1 β€” это строка 1, столбСц 1.

ПослСдним дСйствиСм Π±Ρ‹Π»ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π°ΠΆΠ°Π»ΠΈ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ Π²Π²ΠΎΠ΄Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· ячСйки A1, поэтому ΠΎΠ½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΠ»Π°ΡΡŒ ΠΈΠ· ячСйки A1 Π² A2, ΠΈ ΠΊΠΎΠ΄

Range (β€œA2”). Select

Π’ΠΎΡ‚ ΠΊΠ°ΠΊ «макрос записи» записываСт всС дСйствия с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π½Π°Ρ‡Π°Π»Π° записи Π΄ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° наТатия ΠΊΠ½ΠΎΠΏΠΊΠΈ Β«ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ запись».

Π’Π΅ΠΏΠ΅Ρ€ΡŒ этот ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π² любоС врСмя; ΠΎΠ½ повторяСт ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ дСйствиС снова ΠΈ снова. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ слово.

Β«Π”ΠΎΠ±Ρ€ΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒ Π² VBAΒ» Π² ячСйкС A1.

ПослС удалСния слова ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² Visual Basic. ΠŸΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚Π΅ курсор Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠ΄Π° ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ RUN. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ снова ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ тСкст Β«Π”ΠΎΠ±Ρ€ΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒ Π² VBAΒ» Π² ячСйкС A1.

Π—Π°ΠΌΠ΅Ρ‚ΠΊΠ°: Π‘ΠΎΡ‡Π΅Ρ‚Π°Π½ΠΈΠ΅ клавиш для запуска ΠΊΠΎΠ΄Π° β€” F5.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΡƒ VBA, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°ΡˆΡƒ ΠΏΠΎΠ²ΡΠ΅Π΄Π½Π΅Π²Π½ΡƒΡŽ Ρ€ΡƒΡ‚ΠΈΠ½Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ скучных Π·Π°Π΄Π°Ρ‡ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ дСнь.

Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ сохранСния для ΠΊΠ½ΠΈΠ³ΠΈ макросов

Π’Π΅ΡΡŒ ΠΊΠΎΠ΄ макросов, содСрТащийся Π² ΠΊΠ½ΠΈΠ³Π°Ρ…, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ сохранСн Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… вСрсиях. ΠŸΡ€ΠΈ сохранСнии ΠΊΠ½ΠΈΠ³ΠΈ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Β«Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ Ρ‚ΠΈΠΏΒ» Π² качСствС «Книги Excel с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ макросов».

Π’ΠΎ, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ

  • Π’Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ большС дСйствий, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ содСрТаниС ΠΊΠΎΠ΄Π° ΠΈ ΠΏΠΎΠ½ΡΡ‚ΡŒ.
  • Когда Π²Ρ‹ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚Π΅ΡΡŒ с ΠΌΠ°ΠΊΡ€ΠΎΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ наш Β«ΠšΡƒΡ€Ρ VBAΒ», Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅.

УЗНАВЬ Π‘ΠžΠ›Π¬Π¨Π• >>

Post Views: 795

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ записи

ΠŸΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΈΡ‚ΡŒ Π²Π²Π΅Ρ€Ρ…

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ макросов Excel — ΠžΡ„ΠΈΡΠ“ΡƒΡ€Ρƒ

Главная Β» Π£Ρ€ΠΎΠΊΠΈ MS Excel Β» ΠœΠ°ΠΊΡ€ΠΎΡΡ‹ (VBA)

Автор Антон Андронов На Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ 6 ΠΌΠΈΠ½ ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ΠΎ

12.2015

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ простыС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ макросов Excel ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ возмоТности ΠΈ ΠΏΡ€ΠΈΡ‘ΠΌΡ‹, описанныС Π² самоучитСлС ΠΏΠΎ Excel VBA.

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

  1. ΠœΠ°ΠΊΡ€ΠΎΡ Excel: ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 1
  2. ΠœΠ°ΠΊΡ€ΠΎΡ Excel: ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 2
  3. ΠœΠ°ΠΊΡ€ΠΎΡ Excel: ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 3
  4. ΠœΠ°ΠΊΡ€ΠΎΡ Excel: ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 4
  5. ΠœΠ°ΠΊΡ€ΠΎΡ Excel: ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 5
  6. ΠœΠ°ΠΊΡ€ΠΎΡ Excel: ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 6

ΠœΠ°ΠΊΡ€ΠΎΡ Excel: ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 1

ΠŸΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ эта ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Sub Π±Ρ‹Π»Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π°, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² Π² ΠΊΠΎΠ΄Π΅ VBA. Однако, здСсь Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ссылки Π½Π° ячСйки Excel, использованиС Ρ†ΠΈΠΊΠ»Π° For, условного ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° If ΠΈ Π²Ρ‹Π²ΠΎΠ΄ Π½Π° экран ΠΎΠΊΠ½Π° сообщСния.

'ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Sub выполняСт поиск ячСйки, содСрТащСй Π·Π°Π΄Π°Π½Π½ΡƒΡŽ строку
'Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ячССк A1:A100 Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ листа

Sub Find_String(sFindText As String)

   Dim i As Integer 'Π¦Π΅Π»ΠΎΠ΅ число Ρ‚ΠΈΠΏΠ° Integer, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Ρ†ΠΈΠΊΠ»Π΅ For
   Dim iRowNumber As Integer 'Π¦Π΅Π»ΠΎΠ΅ число Ρ‚ΠΈΠΏΠ° Integer для хранСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°

   iRowNumber = 0

   'ΠŸΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Π΅Ρ‚ ΠΎΠ΄Π½Ρƒ Π·Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ ячСйки A1:A100 Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΉΠ΄Π΅Π½Π° строка sFindText

   For i = 1 To 100

      If Cells(i, 1).
Value = sFindText Then 'Если совпадСниС с Π·Π°Π΄Π°Π½Π½ΠΎΠΉ строкой Π½Π°ΠΉΠ΄Π΅Π½ΠΎ 'сохраняСм Π½ΠΎΠΌΠ΅Ρ€ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ строки ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΠΌ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° For iRowNumber = i Exit For End If Next i 'Π‘ΠΎΠΎΠ±Ρ‰Π°Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π²ΠΎ Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΌ ΠΎΠΊΠ½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Π° Π»ΠΈ искомая строка 'Если заданная строка Π½Π°ΠΉΠ΄Π΅Π½Π°, ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Π² ΠΊΠ°ΠΊΠΎΠΉ ячСйкС Π½Π°ΠΉΠ΄Π΅Π½ΠΎ совпадСниС If iRowNumber = 0 Then MsgBox "Π‘Ρ‚Ρ€ΠΎΠΊΠ° " & sFindText & " Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Π°" Else MsgBox "Π‘Ρ‚Ρ€ΠΎΠΊΠ° " & sFindText & " Π½Π°ΠΉΠ΄Π΅Π½Π° Π² ячСйкС A" & iRowNumber End If End Sub

ΠœΠ°ΠΊΡ€ΠΎΡ Excel: ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 2

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Sub – ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования Ρ†ΠΈΠΊΠ»Π° Do While. Π—Π΄Π΅ΡΡŒ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Ρ€Π°Π±ΠΎΡ‚Ρƒ со ссылками Π½Π° ячСйки Excel ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ условного ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° If.

'ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Sub Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ числа Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ, Π½Π΅ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°ΡŽΡ‰ΠΈΠ΅ 1000

Sub Fibonacci()

   Dim i As Integer 'Π‘Ρ‡Ρ‘Ρ‚Ρ‡ΠΈΠΊ для обозначСния ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ элСмСнта Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ
   Dim iFib As Integer 'Π₯Ρ€Π°Π½ΠΈΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ
   Dim iFib_Next As Integer 'Π₯Ρ€Π°Π½ΠΈΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ
   Dim iStep As Integer 'Π₯Ρ€Π°Π½ΠΈΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ приращСния

   'Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ i ΠΈ iFib_Next
   i = 1
   iFib_Next = 0

   'Π¦ΠΈΠΊΠ» Do While Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
   'Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ числа Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π½Π΅ прСвысит 1000

   Do While iFib_Next < 1000

      If i = 1 Then
         'ΠžΡΠΎΠ±Ρ‹ΠΉ случай для ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ
         iStep = 1
         iFib = 0
      Else
         'БохраняСм Ρ€Π°Π·ΠΌΠ΅Ρ€ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ приращСния ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ
         'Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ
         iStep = iFib
         iFib = iFib_Next
      End If

      'Π’Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ число Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² столбцС A Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ листа
      'Π² строкС с индСксом i
      Cells(i, 1).
Value = iFib 'ВычисляСм ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ число Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ индСкс ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ элСмСнта Π½Π° 1 iFib_Next = iFib + iStep i = i + 1 Loop End Sub

ΠœΠ°ΠΊΡ€ΠΎΡ Excel: ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 3

Π­Ρ‚Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Sub просматриваСт ячСйки столбца

A Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ листа Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ встрСтит ΠΏΡƒΡΡ‚ΡƒΡŽ ячСйку. ЗначСния Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² массив. Π­Ρ‚ΠΎΡ‚ простой макрос Excel ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ с динамичСскими массивами, Π° Ρ‚Π°ΠΊΠΆΠ΅ использованиС Ρ†ΠΈΠΊΠ»Π° Do Until. Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ²Π΅Ρ€ΡˆΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ дСйствия с массивом, хотя Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ программирования послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π΄Π°Π½Π½Ρ‹Π΅ записаны Π² массив, Π½Π°Π΄ Π½ΠΈΠΌΠΈ Ρ‚Π°ΠΊΠΈΠ΅ дСйствия, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΡΠΎΠ²Π΅Ρ€ΡˆΠ°ΡŽΡ‚ΡΡ.

'ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Sub сохраняСт значСния ячССк столбца A Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ листа Π² массивС

Sub GetCellValues()

   Dim iRow As Integer 'Π₯Ρ€Π°Π½ΠΈΡ‚ Π½ΠΎΠΌΠ΅Ρ€ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ строки
   Dim dCellValues() As Double 'Массив для хранСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ячССк

   iRow = 1
   ReDim dCellValues(1 To 10)

   'Π¦ΠΈΠΊΠ» Do Until ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ячСйки столбца A Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ листа
   'ΠΈ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ ΠΈΡ… значСния Π² массив Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ встрСтится пустая ячСйка

   Do Until IsEmpty(Cells(iRow, 1))

      'ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ, Ρ‡Ρ‚ΠΎ массив dCellValues ΠΈΠΌΠ΅Π΅Ρ‚ достаточный Ρ€Π°Π·ΠΌΠ΅Ρ€
      'Если Π½Π΅Ρ‚ – ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива Π½Π° 10 ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ReDim
      If UBound(dCellValues) < iRow Then
         ReDim Preserve dCellValues(1 To iRow + 9)
      End If

      'БохраняСм Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ячСйки Π² массивС dCellValues
      dCellValues(iRow) = Cells(iRow, 1). Value

      iRow = iRow + 1
   Loop

End Sub

ΠœΠ°ΠΊΡ€ΠΎΡ Excel: ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 4

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Sub считываСт значСния ΠΈΠ· столбца A Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ листа Лист2 ΠΈ выполняСт с Π½ΠΈΠΌΠΈ арифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ заносятся Π² ячСйки столбца A Π½Π° Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ листС. Π’ этом макросС продСмонстрировано использованиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Excel. Π’ частности, производится ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΎΠΉ Sub ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ Columns, ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ доступ ΠΊ этому ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ осущСствляСтся Ρ‡Π΅Ρ€Π΅Π· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Worksheet. Показано Ρ‚Π°ΠΊ ΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ ячСйкС ΠΈΠ»ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρƒ ячССк Π½Π° Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ листС, имя этого листа ΠΏΡ€ΠΈ записи ссылки ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ.

'ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Sub ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ†ΠΈΠΊΠ»Π° считываСт значСния Π² столбцС A Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ листа Лист2,
'выполняСт с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ арифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ записываСт Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π²
'столбСц A Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ листа (Лист1)

Sub Transfer_ColA()

   Dim i As Integer
   Dim Col As Range
   Dim dVal As Double

   'ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Col столбСц A Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ листа Лист 2

   Set Col = Sheets("Лист2"). Columns("A")
   i = 1

   'ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ†ΠΈΠΊΠ»Π° считываСм значСния ячССк столбца Col Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€,
   'ΠΏΠΎΠΊΠ° Π½Π΅ встрСтится пустая ячСйка

   Do Until IsEmpty(Col.Cells(i))

      'ВыполняСм арифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ячСйки

      dVal = Col.Cells(i).Value * 3 - 1

      'Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° записываСт ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² столбСц A Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ листа
      'Имя листа Π² ссылкС ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π΅Ρ‚ нСобходимости, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ лист.

      Cells(i, 1) = dVal
      i = i + 1

   Loop

End Sub

ΠœΠ°ΠΊΡ€ΠΎΡ Excel: ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 5

Π”Π°Π½Π½Ρ‹ΠΉ макрос ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° VBA, ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ событиС Excel. Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ привязан макрос, происходит ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΏΡ€ΠΈ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠΈ ячСйки ΠΈΠ»ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ячССк Π½Π° Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ листС. Π’ нашСм случаС ΠΏΡ€ΠΈ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠΈ ячСйки B1, Π½Π° экран выводится ΠΎΠΊΠ½ΠΎ с сообщСниСм.

'Π”Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠΊΠ½ΠΎ с сообщСниСм, Ссли Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ листС
'Π²Ρ‹Π±Ρ€Π°Π½Π° ячСйка B1

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

   'ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ Π²Ρ‹Π±Ρ€Π°Π½Π° Π»ΠΈ ячСйка B1
   If Target. Count = 1 And Target.Row = 1 And Target.Column = 2 Then

      'Если ячСйка B1 Π²Ρ‹Π±Ρ€Π°Π½Π°, выполняСм Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ дСйствиС
      MsgBox "Π’Ρ‹ Π²Ρ‹Π±Ρ€Π°Π»ΠΈ ячСйку B1"

   End If

End Sub

ΠœΠ°ΠΊΡ€ΠΎΡ Excel: ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 6

На ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ этой ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ использованиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² On Error ΠΈ Resume для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибок. Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ открытия ΠΈ чтСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Ρ„Π°ΠΉΠ»Π°.

'ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Sub присваиваСт Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌ Val1 ΠΈ Val2 значСния ячССк A1 ΠΈ B1
'ΠΈΠ· Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ ΠΊΠ½ΠΈΠ³ΠΈ Data.xlsx, находящСйся Π² ΠΏΠ°ΠΏΠΊΠ΅ C:\Documents and Settings

Sub Set_Values(Val1 As Double, Val2 As Double)

   Dim DataWorkbook As Workbook

   On Error GoTo ErrorHandling

      'ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‡ΡƒΡŽ ΠΊΠ½ΠΈΠ³Ρƒ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ

      Set DataWorkbook = Workbooks.Open("C:\Documents and Settings\Data")

      'ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ Val1 ΠΈ Val2 значСния ΠΈΠ· Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ ΠΊΠ½ΠΈΠ³ΠΈ

      Val1 = Sheets("Лист1"). Cells(1, 1)
      Val2 = Sheets("Лист1").Cells(1, 2)

      DataWorkbook.Close

   Exit Sub

ErrorHandling:

   'Если Ρ„Π°ΠΉΠ» Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ искомый Ρ„Π°ΠΉΠ»
   'Π² Π½ΡƒΠΆΠ½ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ ΠΈ послС этого ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ макроса

   MsgBox "Π€Π°ΠΉΠ» Data.xlsx Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½! " & _
      "ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π° Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Ρ€Π°Π±ΠΎΡ‡ΡƒΡŽ ΠΊΠ½ΠΈΠ³Ρƒ Π² ΠΏΠ°ΠΏΠΊΡƒ C:\Documents and Settings ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ OK"
   Resume

End Sub

Π£Ρ€ΠΎΠΊ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½ для Вас ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ сайта office-guru.ru
Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: http://www.excelfunctions.net/Excel-Macro-Example.html
ΠŸΠ΅Ρ€Π΅Π²Π΅Π»: Антон Андронов
ΠŸΡ€Π°Π²ΠΈΠ»Π° ΠΏΠ΅Ρ€Π΅ΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠΈ
Π•Ρ‰Π΅ большС ΡƒΡ€ΠΎΠΊΠΎΠ² ΠΏΠΎ Microsoft Excel

ΠžΡ†Π΅Π½ΠΈΡ‚Π΅ качСство ΡΡ‚Π°Ρ‚ΡŒΠΈ. Нам Π²Π°ΠΆΠ½ΠΎ вашС ΠΌΠ½Π΅Π½ΠΈΠ΅:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π° VBA для Excel

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ макросов Excel

НиТС Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ список основных ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² макросов для ΠΎΠ±Ρ‰ΠΈΡ… Π·Π°Π΄Π°Ρ‡ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Excel.

ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ вставка строки с ΠΎΠ΄Π½ΠΎΠ³ΠΎ листа Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ

Π­Ρ‚ΠΎΡ‚ ΠΎΡ‡Π΅Π½ΡŒ простой макрос ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ строку с ΠΎΠ΄Π½ΠΎΠ³ΠΎ листа Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ.

Sub Paste_OneRow()
'ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ строку
Листы("лист1").Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½("1:1").ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Листы("лист2").Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½("1:1")
Application.CutCopyMode = Π›ΠΎΠΆΡŒ
ΠšΠΎΠ½Π΅Ρ† сабвуфСра
 
ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ письмо

Π­Ρ‚ΠΎΡ‚ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ макрос запускаСт Outlook, создаСт Ρ‡Π΅Ρ€Π½ΠΎΠ²ΠΈΠΊ сообщСния элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ ΠΈ прикрСпляСт ActiveWorkbook.

Sub Send_Mail ()
    Dim OutApp ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚
    Π—Π°Ρ‚Π΅ΠΌΠ½ΠΈΡ‚ΡŒ OutMail ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚
    УстановитС OutApp = CreateObject("Outlook.Application")
    Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ OutMail = OutApp.CreateItem(0)
    Π‘ исходящСй ΠΏΠΎΡ‡Ρ‚ΠΎΠΉ
        .to = "[email protected]"
        .Subject = "ВСстовоС письмо"
        .Body = "Π’Π΅Π»ΠΎ сообщСния"
        .Attachments.Add ActiveWorkbook.FullName
        .ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ
    ΠšΠΎΠ½Π΅Ρ† с
    УстановитС OutMail = НичСго
    Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ OutApp = НичСго
ΠšΠΎΠ½Π΅Ρ† сабвуфСра
 
Бписок всСх листов Π² ΠΊΠ½ΠΈΠ³Π΅

Π­Ρ‚ΠΎΡ‚ макрос Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ список всСх листов Π² ΠΊΠ½ΠΈΠ³Π΅.

ΠŸΠΎΠ΄Π»ΠΈΡΡ‚Ρ‹ списка()
    
    Dim ws As Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ лист
    Dim x ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число
    
    Ρ… = 1
    
    ActiveSheet. Range("A:A").ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ
    
    Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ws Π² Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… листах
        ActiveSheet.Cells(x, 1) = ws.Name
        Ρ… = Ρ… + 1
    Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ мс
    
ΠšΠΎΠ½Π΅Ρ† сабвуфСра
 
ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ всС Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ листы

Π­Ρ‚ΠΎΡ‚ макрос ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ всС Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ листы.

' ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ всС Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ листы
Sub ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ всС Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ листы ()
    Dim ws As Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ лист
    
    Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ws Π² ActiveWorkbook.Worksheets
        ws.Visible = ΠΊΡΠ»ΡˆΠΈΡ‚Π²ΠΈΡΠΈΠ±Π»Π΅
    Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ мс
    
ΠšΠΎΠ½Π΅Ρ† сабвуфСра
 
Π‘ΠΊΡ€Ρ‹Ρ‚ΡŒ всС Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ листы, ΠΊΡ€ΠΎΠΌΠ΅ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ

Π­Ρ‚ΠΎΡ‚ макрос скроСт всС Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ листы, ΠΊΡ€ΠΎΠΌΠ΅ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ листа.

' Π‘ΠΊΡ€Ρ‹Ρ‚ΡŒ всС листы, ΠΊΡ€ΠΎΠΌΠ΅ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ листа
Sub HideAllExceptActiveSheet()
    Dim ws As Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ лист
    
    Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ws Π² ThisWorkbook.Worksheets
        Если ws.Name <> ActiveSheet.Name, Ρ‚ΠΎΠ³Π΄Π° ws.Visible = xlSheetHidden
    Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ мс
    
ΠšΠΎΠ½Π΅Ρ† сабвуфСра
 
Π‘Π½ΡΡ‚ΡŒ Π·Π°Ρ‰ΠΈΡ‚Ρƒ со всСх листов

Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ макроса снимаСт Π·Π°Ρ‰ΠΈΡ‚Ρƒ со всСх листов Π² ΠΊΠ½ΠΈΠ³Π΅.

' Π‘Π½ΡΡ‚ΡŒ Π·Π°Ρ‰ΠΈΡ‚Ρƒ со всСх Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… листов
Sub UnProtectAllSheets ()
    Dim ws As Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ лист
    
    Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ws Π² Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… листах
        ws.Unprotect "ΠΏΠ°Ρ€ΠΎΠ»ΡŒ"
    Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ мс
    
ΠšΠΎΠ½Π΅Ρ† сабвуфСра
 
Π—Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ всС листы

Π­Ρ‚ΠΎΡ‚ макрос Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ всС листы Π² ΠΊΠ½ΠΈΠ³Π΅.

'Π—Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ всС Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ листы
Sub ProtectAllSheets ()
    Dim ws As Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ лист
    
    Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ws Π² Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… листах
        ws.protect "ΠΏΠ°Ρ€ΠΎΠ»ΡŒ"
    Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ мс
    
ΠšΠΎΠ½Π΅Ρ† сабвуфСра
 
Π£Π΄Π°Π»ΠΈΡ‚ΡŒ всС Ρ„ΠΈΠ³ΡƒΡ€Ρ‹

Π­Ρ‚ΠΎΡ‚ макрос ΡƒΠ΄Π°Π»ΠΈΡ‚ всС Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ Π½Π° листС.

Sub Π£Π΄Π°Π»ΠΈΡ‚ΡŒ всС Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ ()
Dim GetShape ΠΊΠ°ΠΊ Ρ„ΠΎΡ€ΠΌΠ°
Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ GetShape Π² ActiveSheet.Shapes
  GetShape.Π£Π΄Π°Π»ΠΈΡ‚ΡŒ
Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ
ΠšΠΎΠ½Π΅Ρ† сабвуфСра
 
Π£Π΄Π°Π»ΠΈΡ‚ΡŒ всС пустыС строки Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ листС

Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ макроса ΡƒΠ΄Π°Π»ΠΈΡ‚ всС пустыС строки Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ листС.

Sub DeleteBlankRows()
Вусклый Ρ… ΠΊΠ°ΠΊ Π΄ΠΎΠ»Π³ΠΎ
Π‘ ActiveSheet
    Для x = . Cells.SpecialCells(xlCellTypeLastCell).Row To 1 Π¨Π°Π³ -1
        Если WorksheetFunction.CountA(.Rows(x)) = 0 Π’ΠΎΠ³Π΄Π°
            ActiveSheet.Rows(x).Π£Π΄Π°Π»ΠΈΡ‚ΡŒ
        ΠšΠΎΠ½Π΅Ρ†, Ссли
    Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ
ΠšΠΎΠ½Π΅Ρ† с
ΠšΠΎΠ½Π΅Ρ† сабвуфСра
 
Π’Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ этот простой макрос, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ всС ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ значСния Π² Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅.

' Π’Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ значСния Π² Π²Ρ‹Π±ΠΎΡ€Π΅
Sub HighlightDuplicateValues ​​()
    Dim myRange As Range
    Π—Π°Ρ‚Π΅ΠΌΠ½ΠΈΡ‚ΡŒ ячСйку ΠΊΠ°ΠΊ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½
    
    УстановитС myRange = Π’Ρ‹Π±ΠΎΡ€
    
    Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ячСйки Π² ΠΌΠΎΠ΅ΠΌ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅
        Если WorksheetFunction.CountIf(myRange, cell.Value) > 1 Π’ΠΎΠ³Π΄Π°
            ячСйка.Interior.ColorIndex = 36
        ΠšΠΎΠ½Π΅Ρ†, Ссли
    Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ячСйка
ΠšΠΎΠ½Π΅Ρ† сабвуфСра
 
ΠŸΠΎΠ΄ΡΠ²Π΅Ρ‚ΠΊΠ° ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… чисСл

Π­Ρ‚ΠΎΡ‚ макрос Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π·Π°Π΄Π°Ρ‡Ρƒ выдСлСния ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… чисСл.

' Π’Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ числа
Sub HighlightNegativeNumbers()
    Dim myRange As Range
    Π—Π°Ρ‚Π΅ΠΌΠ½ΠΈΡ‚ΡŒ ячСйку ΠΊΠ°ΠΊ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½
    
    УстановитС myRange = Π’Ρ‹Π±ΠΎΡ€
    
    Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ячСйки Π² ΠΌΠΎΠ΅ΠΌ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅
        Если ячСйка. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ < 0 Π’ΠΎΠ³Π΄Π°
            ячСйка.Interior.ColorIndex = 36
        ΠšΠΎΠ½Π΅Ρ†, Ссли
    Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ячСйка
ΠšΠΎΠ½Π΅Ρ† сабвуфСра
 
ΠŸΠΎΠ΄ΡΠ²Π΅Ρ‚ΠΊΠ° Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… строк

Π­Ρ‚ΠΎΡ‚ макрос ΠΏΠΎΠ»Π΅Π·Π΅Π½ для выдСлСния Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… строк.

' Π’Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ строки
ΠŸΠΎΠ΄ΡΠ²Π΅Ρ‚ΠΊΠ°AlternateRows()
    Π—Π°Ρ‚Π΅ΠΌΠ½ΠΈΡ‚ΡŒ ячСйку ΠΊΠ°ΠΊ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½
    Dim myRange As Range
    
    ΠΌΠΎΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ = Π²Ρ‹Π±ΠΎΡ€
    
    Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ячСйки Π² myRange.Rows
        Если НС Application.CheckSpelling(Word:=cell.Text), Ρ‚ΠΎ
            ячСйка.Interior.ColorIndex = 36
        ΠšΠΎΠ½Π΅Ρ†, Ссли
    Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ячСйка
ΠšΠΎΠ½Π΅Ρ† сабвуфСра
 
Π’Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ пустых ячССк Π² Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅

Π­Ρ‚ΠΎΡ‚ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ макрос выдСляСт пустыС ячСйки Π² Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅.

' Π’Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ всС пустыС ячСйки Π² Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠΈ
ΠŸΠΎΠ΄ΡΠ²Π΅Ρ‚ΠΊΠ° пустых ячССк ()
    Dim rng As Range
    
    Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ rng = Π’Ρ‹Π±ΠΎΡ€
    rng.SpecialCells(xlCellTypeBlanks).Interior.Color = vbCyan
    
ΠšΠΎΠ½Π΅Ρ† сабвуфСра
 

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ макросов Excel VBA β€” ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ бСсплатно

ΠœΡ‹ создали Π±Π΅ΡΠΏΠ»Π°Ρ‚Π½ΡƒΡŽ надстройку VBA (Macros) Code Examples. Надстройка содСрТит Π±ΠΎΠ»Π΅Π΅ 100 Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… ΠΊ использованию ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² макросов, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ макросов!

Часто Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ вопросы ΠΎ макросах Excel/VBA

Как ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ VBA (макросы) Π² Excel?

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ VBA Π² Excel, ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ VBA (ALT + F11). Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Β«Sub HelloWorldΒ», Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Enter, ΠΈ Π²Ρ‹ создали макрос! Π˜Π›Π˜ Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈ Π²ΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΎΠ΄Π½Ρƒ ΠΈΠ· ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€, пСрСчислСнных Π½Π° этой страницС, Π² ΠΎΠΊΠ½ΠΎ ΠΊΠΎΠ΄Π°.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Excel VBA?

VBA β€” это язык программирования, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Excel.

Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ VBA для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Excel?

Π’Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ VBA для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Excel ΠΏΡƒΡ‚Π΅ΠΌ создания макросов. ΠœΠ°ΠΊΡ€ΠΎΡΡ‹ β€” это Π±Π»ΠΎΠΊΠΈ ΠΊΠΎΠ΄Π°, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ.

ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° VBA

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² VBA с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ нашСго ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ ΡƒΡ‡Π΅Π±Π½ΠΎΠ³ΠΎ пособия ΠΏΠΎ VBA.

Π¨ΠΏΠ°Ρ€Π³Π°Π»ΠΊΠΈ ΠΏΠΎ VBA β€” списки ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ синтаксиса