Vba динамичСскиС массивы: VBA Excel. ΠœΠ°ΡΡΠΈΠ²Ρ‹ (ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅, ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅, динамичСскиС)

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

Π‘ΠΈΠ»Π» Π”ΠΆΠ΅Π»Π΅Π½. ДинамичСскиС массивы Π² Excel

НСзамСтно для мСня Microsoft ΡΠΎΠ²Π΅Ρ€ΡˆΠΈΠ» ΠΏΡ€ΠΎΡ€Ρ‹Π², прСдставив Π² сСнтябрС 2018 Π½ΠΎΠ²Ρ‹Π΅ возмоТности – динамичСскиС массивы. НиТС – ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΠΊΠ½ΠΈΠ³ΠΈ Bill Jelen. Excel Dynamic Arrays Straight to the Point. Книги сСрии Straight to the Point ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ³ΠΎ освСщСния ΠΎΠ΄Π½ΠΎΠ³ΠΎ аспСкта Excel.

Π‘ΠΈΠ»Π» Π”ΠΆΠ΅Π»Π΅Π½ – ΠΎΡΠ½ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ сайта MrExcel.com ΠΈ Π°Π²Ρ‚ΠΎΡ€ мноТСства ΠΊΠ½ΠΈΠ³ ΠΎ Excel. Π‘Π°ΠΉΡ‚ бСсплатно ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π½Π° Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ 30 000 вопросов Π² Π³ΠΎΠ΄. Π’ ΠΌΠΎΠ΅ΠΌ Π±Π»ΠΎΠ³Π΅ прСдставлСны Ρ‚Ρ€ΠΈ ΠΊΠ½ΠΈΠ³ΠΈ Π”ΠΆΠ΅Π»Π΅Π½Π°:

  • Π‘Π²ΠΎΠ΄Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π² Microsoft Excel 2013,
  • Всё ΠΎ Π’ΠŸΠ : ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ примСнСния Π΄ΠΎ экспСртного уровня,
  • Π“ΡƒΡ€Ρƒ Excel Ρ€Π°ΡΡˆΠΈΡ€ΡΡŽΡ‚ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Ρ‹: Π΄Π΅Π»Π°ΠΉΡ‚Π΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ΅ с Microsoft Excel.

Π‘ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ Π·Π°ΠΌΠ΅Ρ‚ΠΊΡƒ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Word ΠΈΠ»ΠΈ pdf, ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Excel

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

  1. Начало Ρ€Π°Π±ΠΎΡ‚Ρ‹
  2. Ѐункция БОРВ
  3. Ѐункция БОРВПО
  4. Ѐункция Π€Π˜Π›Π¬Π’Π 
  5. Ѐункция УНИК
  6. ΠšΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ
  7. Ѐункция ΠŸΠžΠ‘Π›Π•Π”
  8. Ѐункция Π‘Π›ΠœΠΠ‘Π‘Π˜Π’
  9. ΠŸΠΎΡ‡Π΅ΠΌΡƒ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹ массива (Ctrl+Shift+Enter) Ρ‚Π°ΠΊΠΈΠ΅ ТСсткиС: нСявноС пСрСсСчСниС
  10. Ѐункция ПРОБМОВРX ΠΈ динамичСскиС массивы
  11. ΠžΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ динамичСскиС массивы
  12. ДинамичСскиС массивы ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊΡƒΠ±ΠΎΠ²

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Π Π°Π½Π΅Π΅ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ люди ΠΏΡ‹Ρ‚Π°Π»ΠΈΡΡŒ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹ массива ΠΈ ΠΏΠΎΡ‚Π΅Ρ€ΠΏΠ΅Π»ΠΈ Π½Π΅ΡƒΠ΄Π°Ρ‡Ρƒ. Майк Π“ΠΈΡ€Π²ΠΈΠ½ написал ΠΎΡ‚Π»ΠΈΡ‡Π½ΡƒΡŽ ΠΊΠ½ΠΈΠ³Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹ массива. Π¦Π΅Π»Ρ‹Π΅ Π³Π»Π°Π²Ρ‹ Ρ‚ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ здСсь Π±ΡƒΠ΄ΡƒΡ‚ свСдСны ΠΊ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΌ прСдлоТСниям, благодаря Π½ΠΎΠ²Ρ‹ΠΌ функциям.

О динамичСских массивах Π±Ρ‹Π»ΠΎ объявлСно 24 сСнтября 2018 Π³ΠΎΠ΄Π°, Π½ΠΎ Π΄Π°ΠΆΠ΅ Π² MS Excel 2019 ΠΎΠ½ΠΈ ΠΏΠΎΠΊΠ° Π½Π΅ прСдставлСны. ДинамичСскиС массивы доступны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Office 365. Π― Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ° ΠΏΠΎΠΊΡƒΠΏΠΊΠΈ бСссрочной Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ Π½Π° Office ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ Ρ‚Ρ€ΠΈ ΠΈΠ»ΠΈ ΡˆΠ΅ΡΡ‚ΡŒ Π»Π΅Ρ‚ устарСла, ΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π° подписку.

Как ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π° эта ΠΊΠ½ΠΈΠ³Π°. Π’ Π³Π»Π°Π²Π΅ 1 Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ ΠΎ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹, Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡŽΡ‰Π΅ΠΉΡΡ Π½Π° сосСдниС ячСйки. Π’Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΊΠ°ΠΊ нСпустая ячСйка ΠΌΠΎΠΆΠ΅Ρ‚ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΠ² массива, ΠΈ ΠΊΠ°ΠΊ это ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ. Π’Ρ‹ ΡƒΡΠ»Ρ‹ΡˆΠΈΡ‚Π΅ ΠΎ нСявном пСрСсСчСнии ΠΈ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ нотация @ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ. Π“Π»Π°Π²Ρ‹ 2–8 посвящСны ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΡˆΠ΅ΡΡ‚ΠΈ Π½ΠΎΠ²Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΈΡ… комбинациям. Π“Π»Π°Π²Π° 9 основана Π½Π° прСвосходном Π²ΠΈΠ΄Π΅ΠΎ Π”ΠΆΠΎ Макдэйда. Из этой Π³Π»Π°Π²Ρ‹ Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π° Excel Calc: ПодъСм, Врансляция, ΠŸΠΎΠΏΠ°Ρ€Π½Ρ‹ΠΉ подъСм, УсСчСниС массива ΠΈ НСявноС пСрСсСчСниС. Π’ Π³Π»Π°Π²Π΅ 10 Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π΄Π²Π° способа, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… динамичСскиС массивы Π΄Π΅Π»Π°ΡŽΡ‚ Π½ΠΎΠ²ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ПРОБМОВРX Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡ‰Π½ΠΎΠΉ. Π’ 11-ΠΉ – ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ 24 ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° объСдинСния динамичСских массивов с рядом ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Excel. Π’ 12-ΠΉ Π³Π»Π°Π²Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ динамичСскиС массивы ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с  функциями ΠΊΡƒΠ±ΠΎΠ².

ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ с сайта Π°Π²Ρ‚ΠΎΡ€Π°. К ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π³Π»Π°Π²Π΅ я ΠΏΡ€ΠΈΠ»ΠΎΠΆΡƒ Ρ„Π°ΠΉΠ», Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊ настоящСму ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρƒ.

Π“Π»Π°Π²Π° 1. Начало Ρ€Π°Π±ΠΎΡ‚Ρ‹

Π€ΠΎΡ€ΠΌΡƒΠ»Ρ‹ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠ³Ρƒ Ρ€Π°Π·Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ

Π’ этой Π³Π»Π°Π²Π΅ рассматриваСтся новая Ρ„ΠΎΡ€ΠΌΡƒΠ»Π° =A2:A20, ошибка #ΠŸΠ•Π Π•ΠΠžΠ‘! ΠΈ Π½ΠΎΠ²Ρ‹ΠΉ нСявный ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ пСрСсСчСния @.

НачнСм с Π±Π°Π·ΠΎΠ²ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹ массива. ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² ячСйку Π•3. НабСритС =A2:C10. Π’ Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½ΠΈΡ… вСрсиях Excel Π²Π°ΠΌ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π±Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ этот Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρƒ массива, ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π½Π°ΠΆΠ°Π² Ctrl+Shift+Enter.

Рис. 1. Π€ΠΎΡ€ΠΌΡƒΠ»Π° ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ячССк

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΆΠ΅ достаточно Π½Π°ΠΆΠ°Ρ‚ΡŒ Enter. Excel Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ значСния Π² 27 ячССк, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ΡΡ автоматичСски Π²ΠΏΡ€Π°Π²ΠΎ ΠΈ Π²Π½ΠΈΠ·. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Π½Π° Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρƒ Π² строкС формул… здСсь Π½Π΅Ρ‚ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобок, Π° это Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ Π½Π°ΠΆΠΈΠΌΠ°Π» Ctrl+Shift+Enter.

Рис. 2. Одна Ρ„ΠΎΡ€ΠΌΡƒΠ»Π° Π²Π΅Ρ€Π½ΡƒΠ»Π° мноТСство Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ

Π―Ρ‡Π΅ΠΉΠΊΠ° E4 содСрТит тСкст Central, ΠΈ, хотя строка Ρ„ΠΎΡ€ΠΌΡƒΠ» ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρƒ для этой ячСйки, ΠΎΠ½Π° отобраТаСтся сСрым Ρ†Π²Π΅Ρ‚ΠΎΠΌ. Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ VBA, Ρ‡Ρ‚ΠΎ содСрТится Π² ячСйках Π•3 ΠΈ Π•4?

Рис. 3. VBA ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π² ячСйкС Π•4 Π½Π΅ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π°

VBA ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π² ячСйкС Π•3 – Ρ„ΠΎΡ€ΠΌΡƒΠ»Π°, Π° Π² Π•4 – Π½Π΅Ρ‚. Π’Π°ΠΊΠΆΠ΅ Π² Excel ΠΌΠΎΠΆΠ½ΠΎ ввСсти Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρƒ =Π•Π€ΠžΠ ΠœΠ£Π›Π(E4). Она Π²Π΅Ρ€Π½Π΅Ρ‚ Π›ΠžΠ–Π¬. И Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°. Π’Ρ‹Π±Π΅Ρ€Π΅Ρ‚Π΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ D1:h30, ΠΈ ΠΏΡ€ΠΎΠΉΠ΄ΠΈΡ‚Π΅ ΠΏΠΎ мСню Главная –> Найти ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ –> Π€ΠΎΡ€ΠΌΡƒΠ»Ρ‹. Π‘ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ячСйка E3.

Один ΠΈΠ· ΠΏΠ΅Ρ€Π²Ρ‹Ρ… вопросов Π½Π° YouTube Π² ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° ΠΌΠΎΠΈ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π²ΠΈΠ΄Π΅ΠΎ с динамичСскими массивами Π±Ρ‹Π»: ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π²Ρ‹ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ значСния? Π”Π°! Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ E3:G11, Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Ctrl+C, ΠΊΠ»ΠΈΠΊΠ½ΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ Π½Π° Π²Ρ‹Π±Ρ€Π°Π½Π½ΡƒΡŽ Π½ΠΎΠ²ΡƒΡŽ ячСйку ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ вставка –> ЗначСния.

Π§Ρ‚ΠΎ происходит, Ссли Ρ„ΠΎΡ€ΠΌΡƒΠ»Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠ»ΠΈΡ‚ΡŒΡΡ?

Π§Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚, Ссли ячСйка, ΠΊΡƒΠ΄Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π°Π·Π»ΠΈΡ‚ΡŒΡΡ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½, Π±ΡƒΠ΄Π΅Ρ‚ занята?

Рис. 4. Как Excel справится с занятой ячСйкой?

Excel Π²Π΅Ρ€Π½Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ #ΠŸΠ•Π Π•ΠΠžΠ‘! Excel сообщаСт, Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ массив Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π½Π΅ Π²Π΅Ρ€Π½Π΅Ρ‚ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°. Если Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ контСкстноС мСню слСва ΠΎΡ‚ ячСйки с ошибкой, ΠΌΠΎΠΆΠ½ΠΎ Β Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΌΠ΅ΡˆΠ°ΡŽΡ‰ΠΈΠ΅ ячСйки. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΈΡ… получится пСрСнСсти Π² Π΄Ρ€ΡƒΠ³ΠΎΠ΅ мСсто листа.

Рис. 5. Ошибка #ΠŸΠ•Π Π•ΠΠžΠ‘! ΠΈ Π΅Π΅ контСкстноС мСню

Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ очиститС ячСйки, ΠΌΠ΅ΡˆΠ°ΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΡŽ массива, ΠΎΠ½ автоматичСски Ρ€Π°Π·ΠΎΠ»ΡŒΠ΅Ρ‚ΡΡ.

БущСствуСт нСсколько Ρ‚ΠΈΠΏΠΎΠ² ошибки #ΠŸΠ•Π Π•ΠΠžΠ‘! Π’Π°, Ρ‡Ρ‚ΠΎ Π²Ρ‹ΡˆΠ΅, называСтся Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ для пСрСноса Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ пустой. Π”Ρ€ΡƒΠ³ΠΈΠ΅ ошибки:

  • НСопрСдСлСнный Ρ€Π°Π·ΠΌΠ΅Ρ€. Π’Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΎΠ»Π°Ρ‚ΠΈΠ»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π‘Π›Π£Π§ΠœΠ•Π–Π”Π£(), Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠŸΠžΠ‘Π›Π•Π”ΠžΠ’().
  • Π’Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ листа. Π’Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ввСсти Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ =БОРВ(C:C) Π² ячСйкС E2.
  • Вабличная Ρ„ΠΎΡ€ΠΌΡƒΠ»Π°. Π’Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ динамичСского массива Π²Π½ΡƒΡ‚Ρ€ΠΈ Π’Π°Π±Π»ΠΈΡ†Ρ‹.
  • НС Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚ памяти. Π’Π°ΠΌ слСдуСт ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ мСньшСго Ρ€Π°Π·ΠΌΠ΅Ρ€Π°.
  • Π Π°Π·Π»ΠΈΠ² Π² ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Π½Ρ‹Π΅ ячСйки. ДинамичСский массив Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π·Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΡƒΡŽ ячСйку.
  • НСопознанная ошибка. Excel Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Ρ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ.
Если ваша Ρ„ΠΎΡ€ΠΌΡƒΠ»Π° ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Π’Π°Π±Π»ΠΈΡ†Ρƒ, динамичСский массив Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒΡΡ ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π½ΠΎΠ²Ρ‹Ρ… строк Π² Π’Π°Π±Π»ΠΈΡ†Ρƒ

Рис. 6. ДинамичСский массив «отслСТиваСт» Π’Π°Π±Π»ΠΈΡ†Ρƒ

Π‘Ρ€Π°Π²Π½ΠΈΡ‚Π΅ с рис. 2. Π’Ρ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π»ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ А1:Π‘19 Π² Π’Π°Π±Π»ΠΈΡ†Ρƒ (Ctrl+T). Π€ΠΎΡ€ΠΌΡƒΠ»Π° Π² ячСйкС Π•3 измСнилась Π½Π° =Π’Π°Π±Π»ΠΈΡ†Π°1. Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Ссли Π²Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ строку Π² Π’Π°Π±Π»ΠΈΡ†Ρƒ (А11:Π‘11), Ρ„ΠΎΡ€ΠΌΡƒΠ»Π° Π² ячСйкС Π•3 Π½Π΅ измСнится, Π° динамичСский массив автоматичСски Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡΡ Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎΠΉ строкой (Π•12:G12).

Π₯отя Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹ динамичСского массива ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° Π’Π°Π±Π»ΠΈΡ†Ρƒ, Π² самой Π’Π°Π±Π»ΠΈΡ†Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹ динамичСского массива нСльзя.

ИспользованиС Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ссылок Π½Π° массив: E3#

Как Π²Ρ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΡΠ»Π°Ρ‚ΡŒΡΡ Π½Π° массив E3:G12, Π½ΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΎΠ½ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ€Π°Π·Π»ΠΈΡ‚ΠΎΠ³ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° (#) послС ячСйки, содСрТащСй Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρƒ массива.

НапримСр, =E3 Π²Π΅Ρ€Π½Π΅Ρ‚ East, =E3# Π²Π΅Ρ€Π½Π΅Ρ‚ вСсь массив, Ρ„ΠΎΡ€ΠΌΡƒΠ»Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ хранится Π² E3. ΠΠ΅ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎ это называСтся ссылочной Π½ΠΎΡ‚Π°Ρ†ΠΈΠ΅ΠΉ массива. Вакая нотация поддСрТиваСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ ссылкС Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ нСявноС пСрСсСчСниС

Если Π²Ρ‹ Π²Π²Π΅Π΄Π΅Ρ‚Π΅ =@C2:C11 Π² любой ячСйкС Π² строках со 2 ΠΏΠΎ 10, Ρ„ΠΎΡ€ΠΌΡƒΠ»Π° Π²Π΅Ρ€Π½Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· столбца Π‘ Ρ‚ΠΎΠΉ строки, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ Π²Π²Π΅Π»ΠΈ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρƒ. Π—Π½Π°ΠΊ @ извСстСн ΠΊΠ°ΠΊ нСявный ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ пСрСсСчСния.

Рис. 7. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ @, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ нСявноС пСрСсСчСниС.

НОУ ИНВУИВ | ЛСкция | ΠœΠ°ΡΡΠΈΠ²Ρ‹, Ρ†ΠΈΠΊΠ»Ρ‹, принятиС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ

< Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Β  || ЛСкция 7: 123

Аннотация: ЛСкция посвящСна описанию основных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… конструкций VBA. Π—Π΄Π΅ΡΡŒ Π±ΡƒΠ΄Π΅Ρ‚ освСщСна Ρ€Π°Π±ΠΎΡ‚Π° с массивами, Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ принятия Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ. Π’Π°ΠΊ ΠΆΠ΅ Π² этой Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ с внСшними Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ.

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова: ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, массив, Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ, ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, VBA, динамичСский массив, нумСрация, индСкс, ΠΏΠΎΠ»Π΅Π·Π½ΠΎΡΡ‚ΡŒ, информация, ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово, Ρ†ΠΈΠΊΠ»Π°, пСрСмСнная, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠŸΡ€ΠΈΡ€Π°Ρ‰Π΅Π½ΠΈΠ΅, счСтчик, excel, preservation, список Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ массива, ΠΊΠΎΠΌΠ°Π½Π΄Π°, ΠΏΠ°ΠΌΡΡ‚ΡŒ, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Ρ†ΠΈΠΊΠ» с прСдусловиСм, Ρ†ΠΈΠΊΠ» с постусловиСм, функция, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, ΠΏΠ°Ρ€ΠΎΠ»ΡŒ, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, логичСский ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ пСрСмСнная, шаблон, Π°Π½Π°Π»ΠΈΠ·, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ΅, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ бСзусловного ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π°, мСсто, слово, Ρ†ΠΈΠΊΠ» Π²Ρ‹Π²ΠΎΠ΄Π°, Ρ„Π°ΠΉΠ»Ρ‹, word, поиск, Ρ„Π°ΠΉΠ», ΠΏΡƒΡ‚ΡŒ, тСкущая дирСктория, ΠΏΠ°ΠΏΠΊΠ°, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΠΎΠΏΡ€Π΅Π°Ρ‚ΠΎΡ€ принятия Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ

7.

1. ΠœΠ°ΡΡΠΈΠ²Ρ‹

РСшим ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ: ввСсти Π² ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° вопросы ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ„Π°ΠΌΠΈΠ»ΠΈΠΈ сотрудников. Если Ρ„Π°ΠΌΠΈΠ»ΠΈΠΉ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ — 5 ΠΈΠ»ΠΈ 10 — использованиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π²Ρ‹ ΡƒΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌΡ‹, Π²ΠΏΠΎΠ»Π½Π΅ ΠΎΠΏΡ€Π°Π²Π΄Π°Π½ΠΎ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… строк Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°:

a = InputBox("Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Ρ„Π°ΠΌΠΈΠ»ΠΈΡŽ сотрудника").

Как Π±Ρ‹Ρ‚ΡŒ, Ссли Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ со списком ΠΈΠ· 20 Ρ„Π°ΠΌΠΈΠ»ΠΈΠΉ? А Ссли ΠΈΡ… Π±ΡƒΠ΄Π΅Ρ‚ 50, 1000 ΠΈΠ»ΠΈ ΠΈΡ… количСство Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ Π² Ρ…ΠΎΠ΄Π΅ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹?

Для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… объСмов ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π½Π΅ΡƒΠ΄ΠΎΠ±Π½ΠΎ. Π§Ρ‚ΠΎ ΠΆΠ΅ Π΄Π΅Π»Π°Ρ‚ΡŒ? ΠžΡ‚Π²Π΅Ρ‚ прост: ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ массивы.

Массив — это ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ индСксированных ячССк. Π―Ρ‡Π΅ΠΉΠΊΠΈ Ρ‚Π°ΠΊ ΠΆΠ΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ элСмСнтами ΠΈΠ»ΠΈ индСксированными ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ.

Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ массива 5 основных характСристик: имя, Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ, число элСмСнтов, Π½ΠΎΠΌΠ΅Ρ€ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта ΠΈ Ρ‚ΠΈΠΏ элСмСнтов.

  • Имя — ΠΏΡ€Π°Π²ΠΈΠ»Π° имСнования массивов Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ имСнования ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

  • Π Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ — ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‚ ΠΎΠ΄Π½Ρƒ строку Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, каТдая ячСйка ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ содСрТит ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅. ΠœΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы ΠΈΠΌΠ΅ΡŽΡ‚ большС ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ. Π˜Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ с Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌΠΈ мноТСство строк ΠΈ столбцов ΠΈ с Π½Π°Π±ΠΎΡ€Π°ΠΌΠΈ Ρ‚Π°Π±Π»ΠΈΡ†.

  • НумСрация элСмСнтов подчиняСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ:

    • По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ нумСрация элСмСнтов массива начинаСтся с 0. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠΎ счСту элСмСнт ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ индСкс 0, Π²Ρ‚ΠΎΡ€ΠΎΠΉ — 1 ΠΈ Ρ‚.Π΄.
    • Π’ объявлСнии ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ массива ΠΌΠΎΠΆΠ½ΠΎ явно ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ индСкс Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΈ послСднСго элСмСнта, Ρ€Π°Π·Π΄Π΅Π»ΠΈΠ² ΠΈΡ… ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом To.
    • Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ индСксы всСх массивов Π½Π°Ρ‡ΠΈΠ½Π°Π»ΠΈΡΡŒ с 1, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² Ρ€Π°Π·Π΄Π΅Π» объявлСний модуля (Π²Π½Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² событий) ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Option Base 1.
  • Π’ΠΈΠΏ — подчиняСтся Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Ρ€Π°Π½Π΅Π΅ рассмотрСли для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ ΡƒΠΊΠ°Π·Π°Π» Π΅Π³ΠΎ явно, массив ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ Ρ‚ΠΈΠΏ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ — Variant. Π­Ρ‚ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ большС систСмных рСсурсов, Π½ΠΎ позволяСт ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ значСния Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ².

НС всСгда количСство элСмСнтов ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ массива извСстны Π΄ΠΎ Π½Π°Ρ‡Π°Π»Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. VBA ΡƒΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с динамичСскими массивами, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ΅Π½ΡΡ‚ΡŒ Π² Ρ…ΠΎΠ΄Π΅ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. О Π½ΠΈΡ… ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π½ΠΈΠΆΠ΅.

7.2. ΠžΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы

07-01-ΠžΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив.docm- ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊ ΠΏ. 7.2.

Для объявлСния массивов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Dim. ΠžΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ массив ΠΌΠΎΠΆΠ½ΠΎ двумя способами. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΈ ΠΎΠ±Ρ‰Π΅Π³ΠΎ количСства элСмСнтов. НапримСр, Ρ‚Π°ΠΊ:

Dim MyArrayA(30) As Single

intuit.ru/2010/edi»>ΠžΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹ΠΉ массив MyArrayА содСрТит 31 элСмСнт (с индСксами ΠΎΡ‚ 0 Π΄ΠΎ 30) Ρ‚ΠΈΠΏΠ° Single. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ нумСрация явно Π½Π΅ Π·Π°Π΄Π°Π½Π°, элСмСнты ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ индСксы ΠΏΠΎ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ.

МоТно ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ массив ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ способом:

Dim MyArrayB(1 To 25)

Массив MyArrayB содСрТит 25 элСмСнтов. Π“Ρ€Π°Π½ΠΈΡ†Ρ‹ Π½ΡƒΠΌΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π·Π°Π΄Π°Π½Ρ‹ явно — ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ индСкс 1, Π²Ρ‚ΠΎΡ€ΠΎΠΉ — 2 ΠΈ Ρ‚.Π΄. Π’ΠΈΠΏ Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ — Π² массивС ΠΌΠΎΠΆΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅.

Π Π°Π±ΠΎΡ‚Π° с элСмСнтами массива Π½ΠΈΡ‡Π΅ΠΌ Π½Π΅ отличаСтся ΠΎΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ. Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ€Π΅ΡˆΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ:

  1. ΠžΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив Π½Π° 3 элСмСнта
  2. ВнСсти Π² ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт число 5 Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ — запросив Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΊΠ½Π° Π²Π²ΠΎΠ΄Π°
  3. Π’Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Π² Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΌ элСмСнтС массива ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, хранящихся Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΈ Π²Ρ‚ΠΎΡ€ΠΎΠΌ элСмСнтах.
  4. ВывСсти ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² ΠΎΠΊΠ½Π΅ сообщСния.

РСшСниС Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΎ Π² листингС 7.1.

Dim A(2)
A(0) = 5
A(1) = InputBox("Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ элСмСнта")
A(2) = A(0) * A(1)
MsgBox A(2)

Листинг
7.1.
Π Π°Π±ΠΎΡ‚Π° с массивом

Π’ ΠΊΠΎΠ½Ρ†Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ссли Π½Π° вопрос ΠΎ Π²Π²ΠΎΠ΄Π΅ числа ΠΌΡ‹ Π²Π²Π΅Π΄Π΅ΠΌ число 2, массив A Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ Π²ΠΈΠ΄ — Ρ‚Π°Π±Π». 7.1.

Π’Π°Π±Π»ΠΈΡ†Π°
7.1.
Массив А послС Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹
ИндСкс012
Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅5210

intuit.ru/2010/edi»>Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎΠ΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ массивов ΠΎΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… — использованиС индСксов для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ элСмСнтами массива. Однако, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ эта Π·Π°Π΄Π°Ρ‡Π° Π»Π΅Π³ΠΊΠΎ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ с использованиСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π±Π΅Π· массивов.

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, сСйчас Π²Ρ‹ Π΅Ρ‰Π΅ Π½Π΅ Π²ΠΏΠΎΠ»Π½Π΅ осознаСтС ΠΏΠΎΠ»Π΅Π·Π½ΠΎΡΡ‚ΡŒ массивов. Если сСйчас Π²Ρ‹ Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ для Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π° Π΄Π°Π½Π½Ρ‹Ρ… Π² нСсколько элСмСнтов массива, ΠΎΠ½Π° получится Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΎΠΉ, ΠΊΠ°ΠΊ Ρ€Π°Π½ΡŒΡˆΠ΅. Π’Π°ΠΊ Ρ‡Π΅ΠΌ ΠΆΠ΅ массивы Π»ΡƒΡ‡ΡˆΠ΅? ΠžΡ‚Π²Π΅Ρ‚ Π½Π° этот вопрос кроСтся Π² использовании Ρ†ΠΈΠΊΠ»ΠΎΠ².

7.3. Π¦ΠΈΠΊΠ»Ρ‹

Π¦ΠΈΠΊΠ»Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·. Π’ Ρ‚Π°Π±Π». 7.2. собрана информация ΠΎΠ± основных Π²ΠΈΠ΄Π°Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ².

Π’Π°Π±Π»ΠΈΡ†Π°
7.2.
Π’ΠΈΠ΄Ρ‹ Ρ†ΠΈΠΊΠ»ΠΎΠ²
НазваниС Ρ†ΠΈΠΊΠ»Π°Π’ΠΈΠ΄
For — NextΠ‘ фиксированным количСством ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΎΠ². ВыполняСтся Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ количСство Ρ€Π°Π·
While — WendΠ‘ прСдусловиСм. Если Π½Π΅ Π²Π΅Ρ€Π½ΠΎ условиС, Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ Π½Π° Π²Ρ…ΠΎΠ΄Π΅ Π² Ρ†ΠΈΠΊΠ», ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒΡΡ Π½ΠΈ Ρ€Π°Π·Ρƒ
Do — LoopΠ‘ постусловиСм. ВыполняСтся ΠΏΠΎ мСньшСй ΠΌΠ΅Ρ€Π΅ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·.

7.4. Π¦ΠΈΠΊΠ» For — Next

07-02-Π¦ΠΈΠΊΠ» For-Next.docm — ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊ ΠΏ. 7.4.

РСшим Π·Π°Π΄Π°Ρ‡Ρƒ: вывСсти Ρ†ΠΈΡ„Ρ€Ρ‹ ΠΎΡ‚ 1 Π΄ΠΎ 10 Π² ΠΎΠΊΠ½Π°Ρ… сообщСний. Π•Π΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΈ Π±Π΅Π· использования Ρ†ΠΈΠΊΠ»ΠΎΠ², написав 10 строк Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°: MsgBox («1»). А Π²ΠΎΡ‚ конструкция For — Next позволяСт Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎ ΠΆΠ΅ самоС Π³ΠΎΡ€Π°Π·Π΄ΠΎ изящнСС. Π’ листингС 7.2. Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ.

For i = 1 To 10
        MsgBox (i)
    Next i

Листинг
7.2.
Π’Ρ‹Π²ΠΎΠ΄ Ρ†ΠΈΡ„Ρ€ ΠΎΡ‚ 1 Π΄ΠΎ 10 Π² Ρ†ΠΈΠΊΠ»Π΅

intuit.ru/2010/edi»>ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово For Π·Π°Π΄Π°Π΅Ρ‚ Π½Π°Ρ‡Π°Π»ΠΎ Ρ†ΠΈΠΊΠ»Π°. ПослС Π½Π΅Π³ΠΎ слСдуСт пСрСмСнная i, которая увСличиваСтся ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π΅ Ρ†ΠΈΠΊΠ»Π°. Π’ Ρ…ΠΎΠ΄Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ конструкции For — Next Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ i измСняСтся ΠΎΡ‚ 1 Π΄ΠΎ 10.

ΠΠ°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счСтчика устанавливаСтся ΠΏΡ€ΠΈ Π²Ρ…ΠΎΠ΄Π΅ Π² Ρ†ΠΈΠΊΠ». ΠœΡ‹ просто ΠΏΡ€ΠΈΡ€Π°Π²Π½ΠΈΠ²Π°Π΅ΠΌ i ΠΊΠ°ΠΊΠΎΠΌΡƒ-Π»ΠΈΠ±ΠΎ числу. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ задаСтся послС ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова To. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ i доступна Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° — вСдь ΠΈΠΌΠ΅Π½Π½ΠΎ Π΅Π΅ ΠΌΡ‹ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π² ΠΎΠΊΠ½Π΅ сообщСния.

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово Next с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ΠΎ относится, Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ Ρ†ΠΈΠΊΠ».

Π’ качСствС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΈ послСднСго значСния счСтчика Ρ†ΠΈΠΊΠ»Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΡƒΡŽ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ. Она ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° Π² Ρ…ΠΎΠ΄Π΅ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½ΠΎ Π΄ΠΎ Π²Ρ…ΠΎΠ΄Π° Π² ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ For — Next.

Π’Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ пСрСмСнная Ρ†ΠΈΠΊΠ»Π° мСняСтся с ΠΏΡ€ΠΈΡ€Π°Ρ‰Π΅Π½ΠΈΠ΅ΠΌ 1. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΡ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ Π² явном Π²ΠΈΠ΄Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова Step. Π’ листингС 7.3. Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° For — Next, выводящСго Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹Π΅ числа Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ‚ 1 Π΄ΠΎ 10.

For i = 1 To 10 Step 2
        MsgBox (i)
    Next i

Листинг
7.3.
Π’Ρ‹Π²ΠΎΠ΄ Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… Ρ†ΠΈΡ„Ρ€ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ‚ 1 Π΄ΠΎ 10 Π² Ρ†ΠΈΠΊΠ»Π΅

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова Step ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°ΡŽΡ‰ΠΈΠΉ, Π½ΠΎ ΠΈ ΡƒΠ±Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ счСтчик. Для этого Π² Step Π½Π°Π΄ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ число ΠΈ ΠΏΡ€ΠΎΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ†ΠΈΠΊΠ»Π° Π±Ρ‹Π»ΠΎ большС послСднСго. НапримСр, Ρ‚Π°ΠΊ: For i=10 to 1 Step -1. ΠŸΠ΅Ρ€Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² Ρ‚Π°ΠΊΠΎΠΌ Ρ†ΠΈΠΊΠ»Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½ΡΡ‚ΡŒΡΡ 10, Π²Ρ‚ΠΎΡ€ΠΎΠ΅ — 9 ΠΈ Ρ‚.Π΄. — Π΄ΠΎ 1.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ совмСстному использованию Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΈ массивов. НапишСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ввСсти 10 Ρ„Π°ΠΌΠΈΠ»ΠΈΠΉ, сохраняСт ΠΈΡ… Π² массивС, Π° ΠΏΠΎΡ‚ΠΎΠΌ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π² ΠΎΠΊΠ½Π°Ρ… сообщСний.

Готовая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° Π² листингС 7.4.

Dim MyArray(9) 
For i = 0 To 9 
MyArray(i) = InputBox("Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Ρ„Π°ΠΌΠΈΠ»ΠΈΡŽ β„–" & i + 1)
Next i 
For i = 0 To 9 'Начало Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°
MsgBox ("Ѐамилия β„–" & (i + 1) & " " & MyArray(i)) 
Next i 'ΠšΠΎΠ½Π΅Ρ† Ρ†ΠΈΠΊΠ»Π°

Листинг
7.4.
Π’Π²ΠΎΠ΄ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ 10 Ρ„Π°ΠΌΠΈΠ»ΠΈΠΉ

ΠžΠ±ΡΡƒΠ΄ΠΈΠ² Ρ†ΠΈΠΊΠ» Ρ‚ΠΈΠΏΠ° For-Next, ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€ ΠΎ массивах. На ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ — ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы.

7.5. ΠœΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы

07-03-ΠœΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы.docm — ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊ ΠΏ. 7.5.

ΠœΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы ΠΈΠΌΠ΅ΡŽΡ‚ нСсколько ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ. Π§Π°Ρ‰Π΅ всСго ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы (ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹). ΠœΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ с нСсколькими строками ΠΈ столбцами.

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив, Π½ΡƒΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Dim с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ размСрности ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ. ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° объявлСния Ρ‚Π°ΠΊΠΈΡ… массивов ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ Ρ‚Π°ΠΊΠΎΠ²Ρ‹ΠΌ для ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов. НапримСр, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ лишь Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ измСрСния массива:

Dim MyArrayA(10, 1) As Single

Массив MyArrayА содСрТит 11 строк ΠΈ 2 столбца Ρ‚ΠΈΠΏΠ° Single.

МоТно Π² явном Π²ΠΈΠ΄Π΅ Π·Π°Π΄Π°Ρ‚ΡŒ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ размСрностСй:

Dim MyArrayB(1 To 25, 1 To 5)

Массив MyArrayB содСрТит 25 строк ΠΈ 5 столбцов. Π“Ρ€Π°Π½ΠΈΡ†Ρ‹ Π½ΡƒΠΌΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π·Π°Π΄Π°Π½Ρ‹ явно. Π’ΠΈΠΏ Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ — Π² массивС ΠΌΠΎΠΆΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅.

Π’ листингС 7.5. ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, которая ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив 5Ρ…2 ΠΈ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ввСсти Π² Π½Π΅Π³ΠΎ Ρ„Π°ΠΌΠΈΠ»ΠΈΠΈ ΠΈ Π½ΠΎΠΌΠ΅Ρ€Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ² сотрудников.

Dim MyArray(1 To 5, 1 To 2)
For i = 1 To 5
    MyArray(i, 1) = InputBox("Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Ρ„Π°ΠΌΠΈΠ»ΠΈΡŽ β„–" & i)
    MyArray(i, 2) = InputBox("Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π’Π΅Π»Π΅Ρ„ΠΎΠ½ β„–" & i)
Next i

Листинг
7. 5.
Π Π°Π±ΠΎΡ‚Π° с массивом Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒΡŽ 5Ρ…2

Π’ Ρ‚Π°Π±Π». 7.3. Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ массив MyArray послС заполнСния Π΅Π³ΠΎ фамилиями ΠΈ Π½ΠΎΠΌΠ΅Ρ€Π°ΠΌΠΈ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ². Π’ MyArray (1,1) ΠΌΡ‹ внСсли Ρ„Π°ΠΌΠΈΠ»ΠΈΡŽ «Π˜Π²Π°Π½ΠΎΠ²», Π² MyArray (1,2) — Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ Иванова 898989898 ΠΈ Ρ‚.Π΄.

Π’Π°Π±Π»ΠΈΡ†Π°
7.3.
Π—Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΉ массив MyArray
ИндСкс12
1Иванов898989898
2ΠŸΠ΅Ρ‚Ρ€ΠΎΠ²343434343
3Π‘ΠΈΠ΄ΠΎΡ€ΠΎΠ²565656565
4АлСксандров121111212
5ΠœΠ°Ρ€ΠΈΠ½ΠΈΠ½545454544

intuit.ru/2010/edi»>Π­Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ писали для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ массивами. Π’ Ρ†ΠΈΠΊΠ»Π΅, Ρ‚Π΅Π»ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ повторяСтся 5 Ρ€Π°Π·, ΠΌΡ‹ ΠΏΠΎΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌ Ρ„Π°ΠΌΠΈΠ»ΠΈΡŽ ΠΈ Π½ΠΎΠΌΠ΅Ρ€ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°.

Один Ρ†ΠΈΠΊΠ» Π½Π΅ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с массивами Π±ΠΎΠ»ΡŒΡˆΠΈΡ… размСрностСй. НСтрудно ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ сСбС, ΠΊΠ°ΠΊΠΎΠΉ Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΎΠΉ получится Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ копирования ΠΎΠ΄Π½ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ 100Ρ…100 Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ Ρ‚Π°ΠΊΡƒΡŽ ΠΆΠ΅. ΠšΡΡ‚Π°Ρ‚ΠΈ, ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π² Microsoft Excel Π²Π°ΠΌ постоянно придСтся ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ с большими Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°ΠΌΠΈ. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, сущСствуСт ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ.

7.6. Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ†ΠΈΠΊΠ»Ρ‹ For-Next

07-04-Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ†ΠΈΠΊΠ»Ρ‹.docm — ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊ ΠΏ. 7.6.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ² кроСтся Π² ΠΈΡ… Π½Π°Π·Π²Π°Π½ΠΈΠΈ. ВсС ΠΎΡ‡Π΅Π½ΡŒ просто — ΠΎΠ΄ΠΈΠ½ Ρ†ΠΈΠΊΠ» вкладываСтся Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ. НапримСр, для заполнСния массива 10Ρ…10 случайными Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами ΠΎΡ‚ 1 Π΄ΠΎ 10 ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ (листинг 7. 6.)

Dim MyArray(1 To 10, 1 To 10)
For i = 1 To 10
    For j = 1 To 10
        MyArray(i, j) = Int(Rnd(1) * 10)
    Next j
Next i

Листинг
7.6.
Π Π°Π±ΠΎΡ‚Π° с массивом 10Ρ…10

Π’Π½Π΅ΡˆΠ½ΠΈΠΉ Ρ†ΠΈΠΊΠ» ( i ) выполняСтся ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, послС Ρ‡Π΅Π³ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ( j ) — Π΄Π΅ΡΡΡ‚ΡŒ Ρ€Π°Π·. Π—Π° ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ внСшнСго Ρ†ΠΈΠΊΠ»Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ выполняСт Π΄Π΅ΡΡΡ‚ΡŒ — заполняСтся пСрвая строка массива (с индСксами ΠΎΡ‚ 1,1 Π΄ΠΎ 1,10) ΠΈ Ρ‚.Π΄.

Π”Π°Π»ΡŒΡˆΠ΅ >>

< Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Β  || ЛСкция 7: 123

Π—Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ динамичСских массивов VBA — Stack Overflow

ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ Π½Π° основС классов с BetterArray
Π’ 2013 Π³ΠΎΠ΄Ρƒ Иоаннис Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ», Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ класс для управлСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° массива ΠΏΠΎ частям. РСализация со ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ функциями β€” сортировка, Π½Π°Ρ€Π΅Π·ΠΊΠ°, Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ β€” Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ здСсь: https://senipah. github.io/VBA-Better-Array/ (я Π½Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚). На страницС свойства Смкости ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ процСсс удвоСния. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ:

Класс BetterArray, хранящийся Π² ΠΎΠ΄Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ .cls, ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ
импортируСтся Π² любой Π½ΠΎΠ²Ρ‹ΠΉ ΠΈΠ»ΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ VBA. Написано чисто
VBA ΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π²Π½Π΅ΡˆΠ½ΠΈΡ… зависимостСй. БоотвСтствСнно Π΄ΠΎΠ»ΠΆΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ
Π² любом ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ сцСнарии VBA ΠΊΠ°ΠΊ Π² Windows, Ρ‚Π°ΠΊ ΠΈ Π²
ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы Mac.

Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Π²Ρ‹ просто Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ класса (ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ» .cls, ссылка здСсь), пСрСтаскиваСтС Π΅Π³ΠΎ Π² свой ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ * , ΠΈ ΠΎΡ‚Ρ‚ΡƒΠ΄Π° ΠΎΠ½ доступСн ΠΊΠ°ΠΊ коллСкция ΠΈΠ»ΠΈ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ для создания. Π—Π΄Π΅ΡΡŒ я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Π΅Π³ΠΎ для получСния содСрТимого Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°:

 Sub DemoBetterArray()
    Dim ba As BetterArray, tempDir As String, basicArray As Variant
    УстановитС ba = Π½ΠΎΠ²Ρ‹ΠΉ BetterArray
    Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ = ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ("")
    Π”Π΅Π»Π°Ρ‚ΡŒ, ΠΏΠΎΠΊΠ° tempDir <> ""
        ba.Push tempDir 'Π― Π½Π΅ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽ Π³Ρ€Π°Π½ΠΈΡ†, Π½ΠΎ добавляю элСмСнт
        Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ = ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³()
    ΠŸΠ΅Ρ‚Π»Ρ
    basicArray = ba. Items 'ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Π² Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠΌ массивС
    
ΠšΠΎΠ½Π΅Ρ† сабвуфСра
 

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎ ΠΆΠ΅ самоС с ArrayList , ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ доступным Π² Windows Ρ‡Π΅Ρ€Π΅Π· .NET (Π½ΠΎ, ΠΏΠΎ-Π²ΠΈΠ΄ΠΈΠΌΠΎΠΌΡƒ, ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌ Π² .NET). Π‘ΠΌ. Ρ€Π΅Π·ΡŽΠΌΠ΅. Π’ любом случаС, ΠΌΠ΅ΠΆΠ΄Ρƒ этими ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ, Π΅ΡΡ‚ΡŒ сущСствСнныС различия. Для слоТСния 1 000 000 Ρ†Π΅Π»Ρ‹Ρ… чисСл я ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ», Ρ‡Ρ‚ΠΎ BetterArray Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² нСсколько Ρ€Π°Π· быстрСС, Ρ‡Π΅ΠΌ ArrayList.

Π‘ΠΎΠ²Π΅Ρ‚ ΠΏΠΎ использованию Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ BetterArray: хотя страница с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ Π² настоящСС врСмя пуста, страницы с ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ (пСрСчислСнныС здСсь) содСрТат ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ класс, ΠΏΠΎΠΌΠΈΠΌΠΎ эффСктивного Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ.

Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ посрСдством ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибок
Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ, которая Π΅Ρ‰Π΅ Π½Π΅ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Π»Π°ΡΡŒ, β€” использованиС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибок. ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ продСмонстрирован Π‘Ρ€ΡŽΡΠΎΠΌ МакКинни Π² Hardcore Visual Basic, 2-Π΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ (1997). Ѐункция Π½ΠΈΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ эту идСю.

 Sub VectorFill (исходный Π²Π΅ΠΊΡ‚ΠΎΡ€ ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, индСкс ΠΊΠ°ΠΊ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚)
'ЗаполняСт массив 1d ΠΏΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ индСксу ΠΈ ΠΏΡ€ΠΈ нСобходимости ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ UBound (удваивая Π΅Π³ΠΎ). 
'ΠžΠ±Ρ€Π΅ΠΆΡŒΡ‚Π΅ Π½Π΅Π½ΡƒΠΆΠ½ΠΎΠ΅ пространство ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ReDim Preserve.
    Const resizeMultiplier As Integer = 2
    
    'Π‘ этим ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ ошибка Π²Ρ‹Ρ…ΠΎΠ΄Π° Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°
    ΠŸΡ€ΠΈ ошибкС GoTo ErrorHandling
    исходный Π²Π΅ΠΊΡ‚ΠΎΡ€ (индСкс) = Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
    Π’Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹
    
'ErrorHandling ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для измСнСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° массива ΠΏΠΎ частям
ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок:
    newBound = (UBound(sourceVector) + 1) * resizeMultiplier '+1 ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ с Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΌ 0
    ReDim Preserve исходный Π²Π΅ΠΊΡ‚ΠΎΡ€ (newBound)
    Π’ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ 'НовоС мСсто доступно, поэтому Π²Π΅Ρ€Π½ΠΈΡ‚Π΅ΡΡŒ ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΡƒ
ΠšΠΎΠ½Π΅Ρ† сабвуфСра
 

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΡƒΡŽ Π²Ρ‹ΡˆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

 Sub DemoVectorFill()
    Dim dirContents() ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, я ΠΊΠ°ΠΊ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ
    ReDim dirContents(0)
    dirContent = ΠšΠ°Ρ‚Π°Π»ΠΎΠ³("")
    Π”Π΅Π»Π°Ρ‚ΡŒ, ΠΏΠΎΠΊΠ° dirContent <> ""
        VectorFill dirContents, i, dirContent
        dirContent = ΠšΠ°Ρ‚Π°Π»ΠΎΠ³
        я = я + 1
    ΠŸΠ΅Ρ‚Π»Ρ
    ReDim Preserve dirContents(i - 1)
ΠšΠΎΠ½Π΅Ρ† сабвуфСра
 

ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π΅ΠΌΠΊΠΎΡΡ‚ΡŒ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΏΡ€ΠΈ Π΅Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ. Π’ ΠΌΠΎΠΈΡ… тСстах это Π½Π΅ быстрСС, Ρ‡Π΅ΠΌ эта ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° (это Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅), Π½ΠΎ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ увСличСния Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² Π² любом случаС это Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ быстрСС, Ρ‡Π΅ΠΌ ReDim Preserve Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ.


* Если Π²Ρ‹ ΠΏΠΎΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ BetterArray Π² ΠΌΠΎΠ΄ΡƒΠ»ΡŒ класса, это Π½Π΅ совсСм сработаСт. ΠœΠΎΠ΄ΡƒΠ»ΠΈ класса ΠΈΠΌΠ΅ΡŽΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ скрыт Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ VBA ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ скопирован с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ копирования ΠΈ вставки. Π•ΡΡ‚ΡŒ Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°: ΠΏΠ΅Ρ€Π΅Ρ‚Π°Ρ‰ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» .cls Π½Π° панСль Β«ΠŸΡ€ΠΎΠ΅ΠΊΡ‚Β» ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ File —> Import File .

excel — ошибки VBA с динамичСскими массивами

Π—Π°Π΄Π°Π²Π°Ρ‚ΡŒ вопрос

спросил

ИзмСнСно
1 Π³ΠΎΠ΄, 2 мСсяца Π½Π°Π·Π°Π΄

ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΎ
118 Ρ€Π°Π·

Π― Π½ΠΎΠ²ΠΈΡ‡ΠΎΠΊ Π² VBA. Π― ΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ макрос, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ провСряСт Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π½Π΅Π΄ΠΎΡΡ‚Π°ΡŽΡ‰ΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ… Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ„Π°ΠΉΠ»Π°Ρ…. Если Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚, ΠΎΠ½ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ имя Ρ„Π°ΠΉΠ»Π° Π² массив, Π° Π² ΠΊΠΎΠ½Ρ†Π΅ выдаст список Ρ„Π°ΠΉΠ»ΠΎΠ² с Π½Π΅ΠΏΠΎΠ»Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

МнС Π½ΡƒΠΆΠ΅Π½ массив ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π½ΠΎ Ρ‡Ρ‚ΠΎ Π±Ρ‹ я Π½ΠΈ Π΄Π΅Π»Π°Π», Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ это, я ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ошибки. Π‘ΠΌ. ΠΊΠΎΠ΄ Π½ΠΈΠΆΠ΅. Π›ΡŽΠ±Π°Ρ ΠΏΠΎΠΌΠΎΡ‰ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ высоко цСнится!!!

 ΠŸΠΎΠ΄ΠΌΠ°ΠΊΡ€ΠΎΡ()
Dim Path2 ΠΊΠ°ΠΊ строка
Dim Path3 ΠΊΠ°ΠΊ строка
Dim Path4 ΠΊΠ°ΠΊ строка
Dim Path5-5-6 ΠΊΠ°ΠΊ строка
Dim FileName_1 ΠΊΠ°ΠΊ строка
Dim FileName_2 ΠΊΠ°ΠΊ строка
Dim FileName_3 ΠΊΠ°ΠΊ строка
Dim FileName_4 ΠΊΠ°ΠΊ строка
Dim FileName_5 ΠΊΠ°ΠΊ строка
Dim FileName_6 ΠΊΠ°ΠΊ строка
Dim W Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ°
Dim отсутствуСт ΠΊΠ°ΠΊ логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
Dim len_ListMissing As Long
Dim Π½Π°ΠΉΠ΄Π΅Π½ ΠΊΠ°ΠΊ логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
Dim k ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚
Π”ΠΈΠΌ Π΄ΠΈΠΊΡ‚
УстановитС dict = CreateObject("Scripting.Dictionary")
Dim n ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число, i ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚
ReDim ListMissing(n)
ΠŸΡƒΡ‚ΡŒ2 = "https://_path2_"
ΠŸΡƒΡ‚ΡŒ3 = "https://_path3_"
ΠŸΡƒΡ‚ΡŒ4 = "https://_path4_"
ΠŸΡƒΡ‚ΡŒ5-5-6 = "https://_ΠΏΡƒΡ‚ΡŒ5-5-6_"
FileName_1 = "file1. xlsx"
FileName_2 = "file2.xlsx"
FileName_3 = "file3.xlsx"
FileName_4 = "file4.xlsx"
FileName_5 = "file5.xlsx"
FileName_6 = "file6.xlsx"
W = Workbooks("_currentfile_.xlsm").Sheets("Sheet1").Cells(1, "A").Value
dict.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΡƒΡ‚ΡŒ2 ΠΈ имя_Ρ„Π°ΠΉΠ»Π°_1, имя_Ρ„Π°ΠΉΠ»Π°_1
dict.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΡƒΡ‚ΡŒ3 ΠΈ имя_Ρ„Π°ΠΉΠ»Π°_2, имя_Ρ„Π°ΠΉΠ»Π°_2
dict.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΡƒΡ‚ΡŒ4 ΠΈ имя_Ρ„Π°ΠΉΠ»Π°_3, имя_Ρ„Π°ΠΉΠ»Π°_3
dict.Add Path5-5-6 & FileName_4, FileName_4
dict.Add Path5-5-6 & FileName_5, FileName_5
dict.Add Path5-5-6 & FileName_6, FileName_6
Π‘ΠΏΠΈΡΠΎΠΊΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΠ΅Ρ‚(0) = "тСст"
Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ k In dict.keys
Π Π°Π±ΠΎΡ‡ΠΈΠ΅ Ρ‚Π΅Ρ‚Ρ€Π°Π΄ΠΈ.ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ (k)
    Если Workbooks(dict(k)).Sheets("Sheet2").Cells(W + 20, "X").Value = "" Or Workbooks(dict(k)).Sheets("Sheet2").Cells(W + 20, Β«XΒ»). Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = Β«0Β» Или Π Π°Π±ΠΎΡ‡ΠΈΠ΅ ΠΊΠ½ΠΈΠ³ΠΈ (dict (k)). Листы («Лист2Β»). Π―Ρ‡Π΅ΠΉΠΊΠΈ (W + 20, Β«YΒ»). Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = «» Или Workbooks (dict (k)). )).Листы("Лист2").Π―Ρ‡Π΅ΠΉΠΊΠΈ(W + 20, "Y").Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = "0" Или Π Π°Π±ΠΎΡ‡ΠΈΠ΅ ΠΊΠ½ΠΈΠ³ΠΈ(dict(k)).Листы("Лист2").Π―Ρ‡Π΅ΠΉΠΊΠΈ(W + 20, "Z ").Value = "" Или Workbooks(dict(k)).Sheets("Sheet2").Cells(W + 20, "Z"). Value = "0" Π’ΠΎΠ³Π΄Π°
        ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΠ΅Ρ‚ = Π’Π΅Ρ€Π½ΠΎ
    Π•Ρ‰Π΅
        ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΠ΅Ρ‚ = Π›ΠΎΠΆΡŒ
    ΠšΠΎΠ½Π΅Ρ†, Ссли
    
    ΠΏ = 0
    Если ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΠ΅Ρ‚ = Π’Π΅Ρ€Π½ΠΎ Π’ΠΎΠ³Π΄Π°
        Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ i Π² ListMissing
            Если i = dict(k), Ρ‚ΠΎ
                НайдСно = Π’Π΅Ρ€Π½ΠΎ
            Π•Ρ‰Π΅
                НайдСно = Π›ΠΎΠΆΡŒ
            ΠšΠΎΠ½Π΅Ρ†, Ссли
                
            Если НайдСно = Π›ΠΎΠΆΡŒ Π’ΠΎΠ³Π΄Π°
                ΠΏ = ΠΏ + 1
                ReDim Preserve ListMissing (ΠΎΡ‚ 1 Π΄ΠΎ n)
                Π‘ΠΏΠΈΡΠΎΠΊΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΠ΅Ρ‚(n) = Π΄ΠΈΠΊΡ‚(k)
            Π•Ρ‰Π΅
            ΠšΠΎΠ½Π΅Ρ†, Ссли
        Π”Π°Π»Π΅Π΅ я
    ΠšΠΎΠ½Π΅Ρ†, Ссли
Книги (dict (k)). Π—Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ SaveChanges: = False
Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ
len_ListMissing = UBound(ListMissing) - LBound(ListMissing) + 1
Если len_ListMissing = 1 Π’ΠΎΠ³Π΄Π°
    MsgBox Β«Π”Π°Π½Π½Ρ‹Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Ρ‹Β».
Π•Ρ‰Π΅
    MsgBox "Π”Π°Π½Π½Ρ‹Π΅ Π½Π΅ΠΏΠΎΠ»Π½Ρ‹Π΅ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ„Π°ΠΉΠ»Π°Ρ…:" & vbCrLf & vbCrLf & ListMissing(i)
ΠšΠΎΠ½Π΅Ρ†, Ссли
ΠšΠΎΠ½Π΅Ρ† сабвуфСра
 
  • массивы
  • excel
  • vba
  • arraylist
  • динамичСскиС массивы

5

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования словаря для хранСния ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ статуса (ΠΊΠΎΠ΄ Π½Π΅ тСстируСтся)

 dict. Add sFullPath2, true
dict.Add sFullPath3, ΠΏΡ€Π°Π²Π΄Π°
для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ k Π² словарС
   ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ wbToCheck = Workbooks.Open(k)
   Ссли wbToCheck.Sheets("Лист2").Cells(W + 20, "X").Value = "" then 'Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ условиС Π² этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅
     Π΄ΠΈΠΊΡ‚ (ΠΊ) = истина
   Π΅Ρ‰Π΅
     Π΄ΠΈΠΊΡ‚ (ΠΊ) = лоТь
   ΠΊΠΎΠ½Π΅Ρ†, Ссли
   wbToCheck.Close SaveChanges:=False
ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ
 

, поэтому Π²Π°ΠΌ Π½Π΅ понадобится этот Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ массив.

5

Π—Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΈΠ»ΠΈ Π²ΠΎΠΉΠ΄ΠΈΡ‚Π΅ Π² систСму

Π—Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ΡΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Google

Π—Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‡Π΅Ρ€Π΅Π· Facebook

Π—Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ΡΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ адрСс элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ

ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π³ΠΎΡΡ‚ΡŒ

ЭлСктронная ΠΏΠΎΡ‡Ρ‚Π°

ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π½ΠΎ Π½Π΅ отобраТаСтся

ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π³ΠΎΡΡ‚ΡŒ

ЭлСктронная ΠΏΠΎΡ‡Ρ‚Π°

ВрСбуСтся, Π½ΠΎ Π½Π΅ отобраТаСтся

НаТимая Β«ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ свой ΠΎΡ‚Π²Π΅Ρ‚Β», Π²Ρ‹ ΡΠΎΠ³Π»Π°ΡˆΠ°Π΅Ρ‚Π΅ΡΡŒ с нашими условиями обслуТивания ΠΈ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π»ΠΈ ΠΈ поняли Π½Π°ΡˆΡƒ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΡƒ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ кодСкс повСдСния.