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

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

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

Иногда ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ свой собствСнный ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…. Как ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‚ восприятиС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ, Π½ΠΎ родствСнным Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ смыслС, элСмСнтам ΠΊΠ°ΠΊ ΠΊ частям Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ Ρ†Π΅Π»ΠΎΠ³ΠΎ. Но массив Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° оказываСтся Π΅Ρ‰Π΅ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅, Ссли приходится ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄Π΅Π»ΠΎ с Π³Ρ€ΡƒΠΏΠΏΠ°ΠΌΠΈ слоТных составных Π½Π°Π±ΠΎΡ€ΠΎΠ² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

Знакомство с массивами

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρƒ вас Π΅ΡΡ‚ΡŒ Π½Π°Π±ΠΎΡ€ чисСл, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… Ρ†Π΅Π½Ρ‹, ΠΎΡ†Π΅Π½ΠΊΠΈ Π·Π° экзамСн, расстояния ΠΎΡ‚ Π—Π΅ΠΌΠ»ΠΈ Π΄ΠΎ ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ астрономичСских ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΠ»ΠΈ Π½Π΅Ρ‡Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ сСбС, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚Π΅ этот Π½Π°Π±ΠΎΡ€ чисСл Π² Π²ΠΈΠ΄Π΅ списка Π½Π° листС Π±ΡƒΠΌΠ°Π³ΠΈ, ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ число - Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ строкС. Π’ΠΎ, Ρ‡Ρ‚ΠΎ Ρƒ вас получится, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π²Π°Ρ‚ΡŒ простым массивом. НапримСр:

Π“Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ Π²Ρ‹ΠΈΠ³Ρ€Ρ‹ΡˆΠ½Ρ‹Π΅ Π»ΠΎΡ‚Π΅Ρ€Π΅ΠΉΠ½Ρ‹Π΅ Π½ΠΎΠΌΠ΅Ρ€Π°

214236

54 5273

371453

891982

00000

941241

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

Бсылка Π½Π° элСмСнт массива

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ массив Π² VBA ΠΈΠΌΠ΅Π΅Ρ‚ имя, Ρ‚.Π΅. Π°Π½Π°Π»ΠΎΠ³ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° списка Π½Π° листС Π±ΡƒΠΌΠ°Π³ΠΈ. Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ элСмСнтом массива, Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΡΠ»Π°Ρ‚ΡŒΡΡ Π½Π° Π½Π΅Π³ΠΎ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ массива ΠΈ индСксу - Ρ†Π΅Π»ΠΎΠΌΡƒ числу, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ мСсту элСмСнта Π² массивС. НапримСр, Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ intLottoArray ( 3 ) ссылаСтся Π½Π° Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ (ΠΈΠ»ΠΈ Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚Ρ‹ΠΉ, Π² зависимости ΠΎΡ‚ систСмы Π½ΡƒΠΌΠ΅Ρ€Π°Ρ†ΠΈΠΈ) элСмСнт массива с ΠΈΠΌΠ΅Π½Π΅ΠΌ intLottoArray. Как Π²Ρ‹, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, догадались, intΠ² Π½Π°Ρ‡Π°Π»Π΅ ΠΈΠΌΠ΅Π½ΠΈ массива Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² этом массивС прСдполагаСтся Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ†Π΅Π»Ρ‹Π΅ значСния. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅, хранящиСся Π² intLottoArray (3), ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой Ρ†Π΅Π»ΠΎΠ΅ число.

Π”Π°Π½Π½Ρ‹Π΅ массива

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с массивами Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅.

* МоТно ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ массивы Π΄Π°Π½Π½Ρ‹Ρ… Π»ΡŽΠ±Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ². VBA с успСхом Ρ…Ρ€Π°Π½ΠΈΡ‚ Π² массивах строки, Π΄Π°Ρ‚Ρ‹, Π΄Π΅Π½Π΅ΠΆΠ½Ρ‹Π΅ значСния ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ Π»ΡŽΠ±Ρ‹Ρ… числовых Ρ‚ΠΈΠΏΠΎΠ².

* Π’ ΠΎΠ΄Π½ΠΎΠΌ массивС ΠΌΠΎΠ³ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. НСльзя ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ массив с Ρ€Π°Π·Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ячСйками для хранСния ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠ° Date ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠ° String.

ΠŸΡ€Π°Π²Π΄Π°, Π²Ρ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΏΡ€Π΅ΠΎΠ΄ΠΎΠ»Π΅Ρ‚ΡŒ. Как Π²Ρ‹ ΡƒΠΆΠ΅ Π·Π½Π°Π΅Ρ‚Π΅, Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Variant допускаСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… любого ΠΈΠ· допустимых Π² VBA Ρ‚ΠΈΠΏΠΎΠ², ΠΈ массивы Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠ° Variant Ρ‚ΠΎΠΆΠ΅ Π²ΠΏΠΎΠ»Π½Π΅ допустимы. Π—Π΄Π΅ΡΡŒ слСдуСт ΠΈΠΌΠ΅Ρ‚ΡŒ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ информация, хранимая Π² Π²ΠΈΠ΄Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠ° Variant, Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ сущСствСнно большС мСста Π² памяти, Ρ‡Π΅ΠΌ Ρ‚Π° ΠΆΠ΅ информация Π² Π²ΠΈΠ΄Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Π±ΠΎΠ»Π΅Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°; для массивов ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹ это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ расхода памяти. Но Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² ΠΎΠ΄ΠΈΠ½ массив Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹ Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ… Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΊΡ€Π°ΠΉΠ½Π΅ Ρ€Π΅Π΄ΠΊΠΎ.

Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, довольно часто Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π½Π°Π±ΠΎΡ€Π°ΠΌΠΈ родствСнных Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ смыслС элСмСнтов Ρ€Π°Π·Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. ИмСнно Ρ‚Π°ΠΊΠΈΠ΅ Π½Π°Π±ΠΎΡ€Ρ‹ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ структуру Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΎΠΉ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π’ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… для хранСния адрСсов, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, каТдая запись прСдставляСт собой Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ элСмСнтов ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ (имя ΠΈ адрСс), относящихся ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ (Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΡƒ). Для ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠ°ΠΊ Ρ€Π°Π· ΠΈ прСдлагаСтся ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…- ΠΊΠ°ΠΊ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ Ρ‡ΡƒΡ‚ΡŒ ΠΏΠΎΠ·ΠΆΠ΅, Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ "ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ своих собствСнных Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…").

ИспользованиС ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π·Π°Π½ΡΡ‚ΡŒΡΡ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ значСниями, хранящимися Π² массивС, рассмотрим нСсколько ΠΎΠ±Ρ‰ΠΈΡ… вопросов, относящихся ΠΊ массивам. ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго слСдуСт ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ массивы ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ. ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ список Π»ΠΎΡ‚Π΅Ρ€Π΅ΠΉΠ½Ρ‹Ρ… Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π² Π½Π°Ρ‡Π°Π»Π΅ этой Π³Π»Π°Π²Ρ‹ являСтся ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌ массивом. МодСлью Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ ниТСпривСдСнная Ρ‚Π°Π±Π»ΠΈΡ‡ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π² строки ΠΈ столбцы.

Π•ΠΆΠ΅Π΄Π½Π΅Π²Π½Ρ‹Π΅ наблюдСния Π·Π° ΠΊΡƒΡ€Π°ΠΌΠΈ трСмя Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΌΠΈ Π±ΠΈΠΎΠ»ΠΎΠ³Π°ΠΌΠΈ


12

2

21

4

9

3

11

0

0


ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив Ρ‚ΠΎΠΆΠ΅ Π½Π΅ слишком слоТно. На рис. 13.1 ΠΏΠΎΠΊΠ°Π·Π°Π½ Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив Π² Π²ΠΈΠ΄Π΅ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹.


Рис. 13.1. Π­Ρ‚Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° прСдставляСт Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив Π² Π²ΠΈΠ΄Π΅ Π½Π°Π±ΠΎΡ€Π° ΠΊΡƒΠ±ΠΈΠΊΠΎΠ² с числами

А Π²ΠΎΡ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ сСбС массив большСй размСрности ΡƒΠΆΠ΅ Π½Π΅ Ρ‚Π°ΠΊ просто, хотя для VBA это Π½Π΅ составляСт Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ - массивы VBA ΠΌΠΎΠ³Ρƒ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ Π²ΠΏΠ»ΠΎΡ‚ΡŒ Π΄ΠΎ 60.

ОбъявлСниС массивов

Как ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, массивы Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹ΠΌΠΈ. ΠŸΡ€ΠΈ этом объявлСниС массива ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΠ΅ отличаСтся ΠΎΡ‚ объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΎΠ΄Π½ΠΎΠΉ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π΄Π΅Ρ‚Π°Π»ΠΈ. Π’ΠΎΡ‚ нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ²:


' ОбъявлСниС ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠ° Date:

Dim datTimeOfImpact (cdatMaxObservations) As Date

' ОбъявлСниС массива Ρ‚ΠΈΠΏΠ° Currency Π±Π΅Π· объявлСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π°:

Public curPriceQuot es () As Currency

' ОбъязлСниС Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Ρ‚ΠΈΠΏΠ° Integer:

Dim intArrayOf Integers (34, 13, 29, 4) As Integer


Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ€Π°Π·Π½ΠΈΡ†Π° объявлСний для ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ массивов Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² объявлСнии массива Π·Π° ΠΈΠΌΠ΅Π½Π΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ скобки, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ Π½ΠΈΡ‡Π΅Π³ΠΎ, Π° ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ значСния, Π·Π°Π΄Π°ΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ массива ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΈΠ· Π΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ.

(ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΈΠ· Π²Ρ‹ΡˆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива задаСтся ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠΉ константой.)

НС Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΠΏΡ€ΠΈ объявлСнии массива ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ² Π² объявлСниС массива As Type с подходящим ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом, Π·Π°Π΄Π°ΡŽΡ‰ΠΈΠΌ Ρ‚ΠΈΠΏ. Если Π½Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ, VBA создаст массив Ρ‚ΠΈΠΏΠ° Variant, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ‡Π΅Π³ΠΎ трСбования вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΊ памяти возрастут, Π° Π΅Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ замСдлится. ΠœΠ°ΡΡΠΈΠ²Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠ° Variant допустимы ΠΈ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ситуациях ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²ΠΏΠΎΠ»Π½Π΅ подходящим Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ, Π½ΠΎ всСгда, ΠΊΠΎΠ³Π΄Π° это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π»ΡƒΡ‡ΡˆΠ΅ Π½Π°Π·Π½Π°Ρ‡Π°Ρ‚ΡŒ массивам ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ….

ΠžΠ±Ρ‰Π΅Π΅ число элСмСнтов Π΄Π°Π½Π½Ρ‹Ρ… Π² массивС Ρ€Π°Π²Π½ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡŽ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½, Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΡƒΡŽΡ‰ΠΈΡ… ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ· Π΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ, - Π²Ρ‹ ΠΎΠ± этом ΡƒΠΆΠ΅ Π·Π½Π°Π΅Ρ‚Π΅. Но здСсь Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ вашС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΎΠ΄Π½Ρƒ Π΄Π΅Ρ‚Π°Π»ΡŒ. Число элСмСнтов Π² массивС intArray Of Integer s Π² Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΌ объявлСнии ΠΈΠ· ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Ρ€Π°Π²Π½ΠΎ 35x14x30x5, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ это малСнькоС ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½ΡŒΠΈΡ†Π΅ Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΡƒΠ΅Ρ‚ мСсто для массивчика ΠΈΠ· 73500 элСмСнтов.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ я ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΈΠ· Π΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ большС ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² объявлСнии (35 вмСсто 34 ΠΈ Ρ‚.Π΄.). ΠžΡ‚Π²Π΅Ρ‚ Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Π½ΠΈΠΆΠ΅.

НумСрация элСмСнтов массива

Если Π²Ρ‹ Π½Π΅ ΡƒΠΊΠ°ΠΆΠ΅Ρ‚Π΅ ΠΈΠ½ΠΎΠ΅, элСмСнты массива ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€ΡƒΡŽΡ‚ΡΡ (Ρ‚.Π΅. Π½ΡƒΠΌΠ΅Ρ€ΡƒΡŽΡ‚ΡΡ) начиная с 0; говоря ΠΈΠ½Π°Ρ‡Π΅, ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π² массивС Π±ΡƒΠ΄Π΅Ρ‚ элСмСнт с индСксом 0. По этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π·Π°Π΄Π°ΡŽΡ‰Π΅Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ массива Π² объявлСнии, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ мСньшС числа элСмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ прСдполагаСтся ΠΈΠΌΠ΅Ρ‚ΡŒ. НапримСр, Ссли прСдполагаСтся ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ массив ΠΈΠ· 10 элСмСнтов, для Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 9.

Об этом Π½Π΅ слСдуСт Π·Π°Π±Ρ‹Π²Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° придСтся ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ элСмСнтам массива. Бсылка Ρ‚ΠΈΠΏΠ° intMaccΠΈΠ² (1) Π½Π° самом Π΄Π΅Π»Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌΡƒ элСмСнту Π² массивС.

Если ΠΆΠ΅ Π²Π°ΠΌ Π½Π΅ нравится отсчСт ΠΎΡ‚ 0, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Ρ‡Π°Ρ‚ΡŒ Π½ΡƒΠΌΠ΅Ρ€Π°Ρ†ΠΈΡŽ элСмСнтов Π² любом массивС ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ числа - ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΡ‚ 1. Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ VBA Π½ΡƒΠΌΠ΅Ρ€ΠΎΠ²Π°Ρ‚ΡŒ всС массивы ΠΎΡ‚ 1. помСститС Π² Ρ€Π°Π·Π΄Π΅Π» объявлСний модуля (ΠΏΠ΅Ρ€Π΅Π΄ всСми ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°ΠΌΠΈ) ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€

Option Base 1

ДСйствиС этого ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° касаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ массивов Π²Π½ΡƒΡ‚Ρ€ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ модуля, поэтому ΠΏΡ€ΠΈ нСобходимости Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ модуля.

МоТно Π·Π°Π΄Π°Ρ‚ΡŒ схСмы Π½ΡƒΠΌΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. НапримСр:


Dim sngNumbers (55 Π’ΠΎ 75, 7 Π’o 16, 99)


Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΡŽ имССтся 21 мСсто, с Π½Π°Ρ‡Π°Π»ΠΎΠΌ Π½ΡƒΠΌΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΎΡ‚ 55 Π΄ΠΎ 75; ΠΏΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌΡƒ - 10 мСст с Π½Π°Ρ‡Π°Π»ΠΎΠΌ Π½ΡƒΠΌΠ΅Ρ€Π°Ρ†ΠΈΠΈ с 7, Π° послСднСС ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ 100 мСстС Π½ΡƒΠΌΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ ΠΎΡ‚ 0.

Если ΠΏΡ€ΠΈ объявлСнии массива ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, Ρ‚ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива останСтся фиксированным Π² Ρ…ΠΎΠ΄Π΅ всСго выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ - ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π΅ смоТСт ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ массив мСньшС ΠΈΠ»ΠΈ большС. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ массив фиксированного Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ Π² скобках Π² Π΅Π³ΠΎ объявлСнии ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ значСния для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ массива. НапримСр, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€


Dim strΠ₯ΠΎΡ€ΠΎΡˆΠΈΠ΅ΠœΡ‹ΡΠ»ΠΈ (9, 19) As String


ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ всСгда Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ 30 строк ΠΈ 20 столбцов строковых Π΄Π°Π½Π½Ρ‹Ρ… (ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, массив Π½Π° самом Π΄Π΅Π»Π΅ Π½Π΅ содСрТит Π΄Π°Π½Π½Ρ‹Π΅ Π² строках ΠΈ столбцах, ΠΏΠΎ мыслСнноС прСдставлСниС массива Π² Π²ΠΈΠ΄Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ).

ЀиксированиС Ρ€Π°Π·ΠΌΠ΅Ρ€Π° массива ΠΏΡ€ΠΈ Π΅Π³ΠΎ объявлСнии ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Ρ‚ΡŒ, Ссли Ρ‚ΠΎΡ‡Π½ΠΎ извСстно, Ρ‡Ρ‚ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° массива Π½Π΅ потрСбуСтся.

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