Π Π°Π·Π½ΠΎΠ΅

Π¦ΠΈΠΊΠ» Π² Ρ†ΠΈΠΊΠ»Π΅ vba: ВсС Ρ†ΠΈΠΊΠ»Ρ‹ VBA Π² Excel Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π² ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅

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

ВсС Ρ†ΠΈΠΊΠ»Ρ‹ VBA Π² Excel Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π² ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅

Автор Π”ΠΌΠΈΡ‚Ρ€ΠΈΠΉ Π―ΠΊΡƒΡˆΠ΅Π² На Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ 13 ΠΌΠΈΠ½. ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ΠΎΠ² 12.3k.

Π Π°ΠΌΠ°ΠΊΡ€ΠΈΡˆΠ½Π°, Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊΠΈ индийской мудрости

БСйчас … ΠΌΡ‹ ΠΈΠ΄Π΅ΠΌ ΠΏΠΎ ΠΊΡ€ΡƒΠ³Ρƒ

Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ содСрТит ΠΏΠΎΠ»Π½ΠΎΠ΅ руководство ΠΏΠΎ VBA Do While ΠΈ VBA While Loops. (Если Π²Ρ‹ ΠΈΡ‰Π΅Ρ‚Π΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ†ΠΈΠΊΠ»Π°Ρ… VBA For ΠΈ For Each, ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ сюда)

Π¦ΠΈΠΊΠ» VBA While сущСствуСт, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ совмСстимым со старым ΠΊΠΎΠ΄ΠΎΠΌ. Однако Microsoft Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» Do Loop, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ Π±ΠΎΠ»Π΅Π΅ «структурирован ΠΈ Π³ΠΈΠ±ΠΎΠΊΒ». Оба этих Ρ†ΠΈΠΊΠ»Π° Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² этом постС.

Для быстрого ознакомлСния с этими Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ ΠΊ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ быстрого руководства Π½ΠΈΠΆΠ΅.

Если Π²Ρ‹ ΠΈΡ‰Π΅Ρ‚Π΅ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ содСрТаниС Π½ΠΈΠΆΠ΅.

ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ руководство ΠΏΠΎ VBA While Loops

Π€ΠΎΡ€ΠΌΠ°Ρ‚ Ρ†ΠΈΠΊΠ»Π°ΠžΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠŸΡ€ΠΈΠΌΠ΅Ρ€
Do While … LoopЗапускаСтся 0 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π·, ΠΏΠΎΠΊΠ° условиС выполняСтсяDoΒ WhileΒ result =Β Β«Π’Π΅Ρ€Π½ΠΎΒ»
Loop
Do … Loop WhileЗапускаСтся 1 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π·, ΠΏΠΎΠΊΠ° условиС выполняСтсяDoΒ 
LoopΒ WhileΒ result =Β Β«Π’Π΅Ρ€Π½ΠΎΒ»
Do Until … LoopЗапускаСтся 0 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π·, ΠΏΠΎΠΊΠ° условиС Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎDoΒ UntilΒ result <>Β Β«Π’Π΅Ρ€Π½ΠΎΒ»
Loop
Do … Until LoopЗапускаСтся 1 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π·, ΠΏΠΎΠΊΠ° условиС Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎDoΒ 
LoopΒ UntilΒ result <>Β Β«Π’Π΅Ρ€Π½ΠΎΒ»
While … Wend
R
ЗапускаСтся 0 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π·, ΠΏΠΎΠΊΠ° условиС истинно.
ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: этот Ρ†ΠΈΠΊΠ» считаСтся ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌ.
WhileΒ result =Β Β«Π’Π΅Ρ€Π½ΠΎΒ»
Wend
Exit the Do LoopΠ—Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ DoDoΒ WhileΒ i < 10
Β Β Β i = GetTotal
Β Β Β IfΒ i < 0Β Then
Β Β Β Β Β Β ExitΒ Do
Β Β Β EndΒ If
Loop

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

Если Π²Ρ‹ Π½ΠΈΠΊΠΎΠ³Π΄Π° Ρ€Π°Π½Π΅Π΅ Π½Π΅ использовали Ρ†ΠΈΠΊΠ»Ρ‹, Ρ‚ΠΎΠ³Π΄Π° Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Β«Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ†ΠΈΠΊΠ»Ρ‹ ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ Π²Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹Β» ΠΈΠ· ΠΌΠΎΠ΅Π³ΠΎ поста Π² ΠΆΡƒΡ€Π½Π°Π»Π΅ For Loop.

Π― ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡΡŒ ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΡ‚ΡŒΡΡ Π² основном Π½Π° Do Loop Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅. Как я ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π» Π²Ρ‹ΡˆΠ΅, ΠΌΡ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ, Ρ‡Ρ‚ΠΎ Ρ†ΠΈΠΊΠ» While Wend считаСтся ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌ. Для ΠΏΠΎΠ»Π½ΠΎΡ‚Ρ‹ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ я всС Ρ€Π°Π²Π½ΠΎ Π΅Π³ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ» Π² эту ΡΡ‚Π°Ρ‚ΡŒΡŽ.

Π˜Ρ‚Π°ΠΊ, Π²ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Π·Π°Ρ‡Π΅ΠΌ Π½Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹ Ρ†ΠΈΠΊΠ»Ρ‹ Do While, ΠΊΠΎΠ³Π΄Π° Ρƒ нас ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ Ρ†ΠΈΠΊΠ»Ρ‹ For?

Π¦ΠΈΠΊΠ» For ΠΏΡ€ΠΎΡ‚ΠΈΠ² Ρ†ΠΈΠΊΠ»Π° Do While

Когда ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ†ΠΈΠΊΠ» For Loop, ΠΌΡ‹ Π·Π°Ρ€Π°Π½Π΅Π΅ Π·Π½Π°Π΅ΠΌ, сколько Ρ€Π°Π· ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π΅Π³ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ. НапримСр, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°Ρ…ΠΎΡ‚Π΅Ρ‚ΡŒ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ†ΠΈΠΊΠ» ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, массивС ΠΈΠ»ΠΈ словарС.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΊΠΎΠ΄Π° ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°, сколько Ρ€Π°Π· ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ.

' запускаСтся 5 Ρ€Π°Π·
For i = 1 To 5

' запускаСтся ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ
For i = 1 To coll.Count

' запускаСтся ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта Π² arr
For i = LBound(arr) To coll.lbound(arr)

' запускаСтся ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ значСния ΠΎΡ‚ 1 Π΄ΠΎ значСния Π² lastRow
For i = 1 To lastRow

' запускаСтся ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ
For Each s In coll

Π¦ΠΈΠΊΠ» Do Π΄Ρ€ΡƒΠ³ΠΎΠΉ. Он Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚:

  • Π’ Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ условиС Π²Π΅Ρ€Π½ΠΎ
  • Пока условиС Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ

Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, количСство Ρ†ΠΈΠΊΠ»ΠΎΠ² Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ значСния.

Π˜Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ условиС ΠΈ ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ?

Условия

УсловиС β€” это ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ оцСниваСтся ΠΊΠ°ΠΊ истинноС ΠΈΠ»ΠΈ Π»ΠΎΠΆΠ½ΠΎΠ΅. Они Π² основном ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ Loops ΠΈ If. ΠŸΡ€ΠΈ создании условия Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‚Π°ΠΊΠΈΠ΅ Π·Π½Π°ΠΊΠΈ, ΠΊΠ°ΠΊ >, <, <>,> =, =.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ условий

Π£ΡΠ»ΠΎΠ²ΠΈΠ΅Π˜ΡΡ‚ΠΈΠ½Π°, когда…
x < 5x мСньшС 5
x <= 5x мСньшС Π»ΠΈΠ±ΠΎ Ρ€Π°Π²Π΅Π½ 5
x > 5x большС 5
x >= 5x большС Π»ΠΈΠ±ΠΎ Ρ€Π°Π²Π΅Π½ 5
x = 5x Ρ€Π°Π²Π΅Π½ 5
x <> 5x Π½Π΅ Ρ€Π°Π²Π΅Π½ 5
x > 5 And x < 10x большС 5 И мСньшС 10
x = 2 Or x >10x Ρ€Π°Π²Π΅Π½ 2 Π˜Π›Π˜ большС 10
Range(Β«A1Β») = Β«Π˜Π²Π°Π½Β»Π―Ρ‡Π΅ΠΉΠΊΠ° A1 содСрТит тСкст «Иван»
Range(Β«A1Β») <> Β«Π˜Π²Π°Π½Β»Π―Ρ‡Π΅ΠΉΠΊΠ° A1 Π½Π΅ содСрТит тСкст «Иван»

Π’Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ x = 5 ΠΊΠ°ΠΊ условиС. Π•Π³ΠΎ слСдуСт ΠΏΡƒΡ‚Π°Ρ‚ΡŒ с Ρ… = 5, ΠΏΡ€ΠΈ использовании Π² качСствС назначСния.

НапримСр

' ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚: Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 6 Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π² Ρ…
x = 6

' ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚: Ρ… Ρ€Π°Π²Π΅Π½ 6?
If x = 6

' ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚: Ρ… Ρ€Π°Π²Π΅Π½ 6?
Do While x = 6

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ Β«=Β» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² условиях ΠΈ назначСниях.

ИспользованиС Β«=Β»Π’ΠΈΠΏΠ˜ΠΌΠ΅Π΅Ρ‚ΡΡ Π² Π²ΠΈΠ΄Ρƒ
LoopΒ UntilΒ x = 5УсловиСx Ρ€Π°Π²Π΅Π½ 5?
DoΒ WhileΒ x = 5УсловиСx Ρ€Π°Π²Π΅Π½ 5?
IfΒ x = 5Β ThenУсловиСx Ρ€Π°Π²Π΅Π½ 5?
ForΒ x = 1Β ToΒ 5ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ x = 1, Π·Π°Ρ‚Π΅ΠΌ = 2 ΠΈ Ρ‚.Π΄.
x = 5ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ x=5
b = 6 = 5ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΈ
условиС
ΠŸΡ€ΠΈΡΠ²ΠΎΠΉΡ‚Π΅ b
Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ условия
6 = 5
x = MyFunc(5,6)ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ΠŸΡ€ΠΈΡΠ²ΠΎΠΉΡ‚Π΅ Ρ…
Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅,
Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅
Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ

Π€ΠΎΡ€ΠΌΠ°Ρ‚ Ρ†ΠΈΠΊΠ»Π° Do

Π¦ΠΈΠΊΠ» Do ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Π΅Ρ‚Ρ‹Ρ€ΡŒΠΌΡ способами, ΠΈ это часто Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρƒ. Однако Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· этих Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… способов Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ нСбольшая Ρ€Π°Π·Π½ΠΈΡ†Π°.

Do всСгда Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΏΠ΅Ρ€Π²ΠΎΠΉ строки, Π° Loop всСгда Π² ΠΊΠΎΠ½Ρ†Π΅ послСднСй строки.

Do 
Loop

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ условиС послС любой строки.

Do [условиС]
Loop

Do 
Loop [условиС]

Условию ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΠ΅Ρ‚ While ΠΈΠ»ΠΈ Until, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΄Π°Π΅Ρ‚ Π½Π°ΠΌ эти Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ возмоТности

Do While [условиС]
Loop

Do Until [условиС]
Loop

Do 
Loop While [условиС]

Do 
Loop Until [условиС]

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡΡΠ½ΠΈΡ‚ΡŒ это.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ†ΠΈΠΊΠ»Π° Do

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Π²Π΅Π» список элСмСнтов. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Π²ΠΎΠ΄ΠΈΡ‚ элСмСнт, Π²Ρ‹ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚Π΅ Π΅Π³ΠΎ Π² Β«Immediate WindowΒ». Когда ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Π²ΠΎΠ΄ΠΈΡ‚ ΠΏΡƒΡΡ‚ΡƒΡŽ строку, Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π°ΠΊΡ€Ρ‹Π²Π°Π»ΠΎΡΡŒ.

Π’ этом случаС Ρ†ΠΈΠΊΠ» For Π½Π΅ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Ρ‹ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅, сколько элСмСнтов Π±ΡƒΠ΄Π΅Ρ‚ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ввСсти ΠΏΡƒΡΡ‚ΡƒΡŽ строку ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ΠΈΠ»ΠΈ с сотой ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ. Для этого Ρ‚ΠΈΠΏΠ° сцСнария Π²Ρ‹ Π±Ρ‹ использовали Ρ†ΠΈΠΊΠ» Do.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ это

 Dim sCommand As String

    Do
        ' ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Π²Π²ΠΎΠ΄
        sCommand = InputBox("ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, Π²Π²Π΅Π΄ΠΈΡ‚Π΅ элСмСнт")

        ' ΠŸΠ΅Ρ‡Π°Ρ‚ΡŒ Π² Immediate Window (Ctrl + G для просмотра)
        Debug.Print sCommand

    Loop While sCommand <> ""

Код Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² Ρ†ΠΈΠΊΠ» ΠΈ продолТаСтся Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ достигнСт строки Β«Loop WhileΒ». На этом этапС ΠΎΠ½ провСряСт, оцСниваСтся Π»ΠΈ условиС ΠΊΠ°ΠΊ истинноС ΠΈΠ»ΠΈ Π»ΠΎΠΆΠ½ΠΎΠ΅.

Если условиС оцСниваСтся ΠΊΠ°ΠΊ Π»ΠΎΠΆΠ½ΠΎΠ΅, Ρ‚ΠΎ ΠΊΠΎΠ΄ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° ΠΈ продолТаСтся.
Если условиС оцСниваСтся ΠΊΠ°ΠΊ истинноС, Ρ‚ΠΎ ΠΊΠΎΠ΄ возвращаСтся ΠΊ строкС Do ΠΈ снова ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Ρ‡Π΅Ρ€Π΅Π· Ρ†ΠΈΠΊΠ».
Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ΠΌ условия Π½Π° Π»ΠΈΠ½ΠΈΠΈ Do ΠΈ Π½Π° Π»ΠΈΠ½ΠΈΠΈ Loop ΠΎΡ‡Π΅Π½ΡŒ проста.

Когда условиС находится Π² строкС Do, Ρ†ΠΈΠΊΠ» ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ноль ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π·.
Когда условиС находится Π½Π° Π»ΠΈΠ½ΠΈΠΈ Loop, Ρ†ΠΈΠΊΠ» всСгда Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡ‰Π΅Π½ хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡ‰Π΅Π½ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько Ρ€Π°Π·.

Π’ нашСм послСднСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ условиС находится Π² строкС Loop, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ всСгда Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ хотя Π±Ρ‹ ΠΎΠ΄Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΎΠ±Π΅ вСрсии Ρ†ΠΈΠΊΠ»Π°. Π¦ΠΈΠΊΠ» Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ, ΠΏΠΎΠΊΠ° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ Π²Π²Π΅Π΄Π΅Ρ‚ Π±ΡƒΠΊΠ²Ρƒ Β«Π½Β».

Sub GetInput()

    Dim sCommand As String

    ' УсловиС Π² Π½Π°Ρ‡Π°Π»Π΅
    Do While sCommand <> "Π½"
        sCommand = InputBox("ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, Π²Π²Π΅Π΄ΠΈΡ‚Π΅ элСмСнт для Ρ†ΠΈΠΊΠ»Π° 1")
    Loop

    ' УсловиС Π² ΠΊΠΎΠ½Ρ†Π΅
    Do
        sCommand = InputBox("ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, Π²Π²Π΅Π΄ΠΈΡ‚Π΅ элСмСнт для Ρ†ΠΈΠΊΠ»Π° 2")
    Loop While sCommand <> "Π½"

End Sub

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΎΠ±Π° Ρ†ΠΈΠΊΠ»Π° Π±ΡƒΠ΄ΡƒΡ‚ вСсти сСбя ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ.

Однако, Ссли ΠΌΡ‹ установим для sCommand Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Β«Π½Β» Π΄ΠΎ запуска Ρ†ΠΈΠΊΠ»Π° Β«Do WhileΒ», ΠΊΠΎΠ΄ Π½Π΅ Π²ΠΎΠΉΠ΄Π΅Ρ‚ Π² Ρ†ΠΈΠΊΠ».

Sub GetInput2()

    Dim sCommand As String
    sCommand = "Π½"

    ' Π¦ΠΈΠΊΠ» Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠΎΠΌΠ°Π½Π΄Π° "Π½"
    Do Whilel sCommand <> "Π½"
        sCommand = InputBox("ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, Π²Π²Π΅Π΄ΠΈΡ‚Π΅ элСмСнт для Ρ†ΠΈΠΊΠ»Π° 1")
    Loop

    ' Π¦ΠΈΠΊΠ» всС Ρ€Π°Π²Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡ‰Π΅Π½ хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·
    Do
        sCommand = InputBox("ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, Π²Π²Π΅Π΄ΠΈΡ‚Π΅ элСмСнт для Ρ†ΠΈΠΊΠ»Π° 2")
    Loop While sCommand <> "Π½"

End Sub

Π’Ρ‚ΠΎΡ€ΠΎΠΉ Ρ†ΠΈΠΊΠ» Π² Π²Ρ‹ΡˆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Loop While) всСгда Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·.

While ΠΏΡ€ΠΎΡ‚ΠΈΠ² Until

ΠŸΡ€ΠΈ использовании Do Loop ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Until ΠΈΠ»ΠΈ While.

Until ΠΈ While, ΠΏΠΎ сути, ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½Ρ‹ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Ρƒ. Они ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² VBA Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Ρ‚ΠΎΠΌΡƒ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² английском языкС.

НапримСр:

  • ΠžΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΎΠ΄Π΅ΠΆΠ΄Ρƒ, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ доТдь
  • ΠžΡΡ‚Π°Π²ΡŒ ΠΎΠ΄Π΅ΠΆΠ΄Ρƒ, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΈΠ΄Π΅Ρ‚ доТдь

Π”Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

  • ΠžΡΡ‚Π°Π²Π°ΠΉΡΡ Π² постСли, ΠΏΠΎΠΊΠ° Π½Π΅ станСт свСтло
  • ΠžΡΡ‚Π°Π²Π°ΠΉΡΡ Π² постСли, ΠΏΠΎΠΊΠ° Ρ‚Π΅ΠΌΠ½ΠΎ

Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

  • ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ, ΠΏΠΎΠΊΠ° число Π½Π΅ станСт большС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ дСсяти
  • ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ ΠΏΠΎΠΊΠ° счСт мСньшС дСсяти

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, использованиС Until ΠΈ While β€” это просто ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½Ρ‹ΠΉ способ написания ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ условия.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Until ΠΈ While

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ†ΠΈΠΊΠ»Ρ‹ Β«WhileΒ» ΠΈ Β«UntilΒ» рядом. Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, СдинствСнная Ρ€Π°Π·Π½ΠΈΡ†Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ условиС ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π·Π½Π°ΠΊΠΈ <> ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ Β«Π½Π΅ Ρ€Π°Π²Π½ΠΎΒ».

Sub GetInput()

    Dim sCommand As String

    ' УсловиС Π² Π½Π°Ρ‡Π°Π»Π΅
    Do Until sCommand = "Π½"
        sCommand = InputBox("ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, Π²Π²Π΅Π΄ΠΈΡ‚Π΅ элСмСнт для Ρ†ΠΈΠΊΠ»Π° 1")
    Loop

    Do While sCommand <> "Π½"
        sCommand = InputBox("ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, Π²Π²Π΅Π΄ΠΈΡ‚Π΅ элСмСнт для Ρ†ΠΈΠΊΠ»Π° 1")
    Loop

    ' УсловиС Π² ΠΊΠΎΠ½Ρ†Π΅
    Do
        sCommand = InputBox("ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, Π²Π²Π΅Π΄ΠΈΡ‚Π΅ элСмСнт для Ρ†ΠΈΠΊΠ»Π° 2")
    Loop Until sCommand = "Π½"

    Do
        sCommand = InputBox("ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, Π²Π²Π΅Π΄ΠΈΡ‚Π΅ элСмСнт для Ρ†ΠΈΠΊΠ»Π° 2")
    Loop While sCommand <> "Π½"

End Sub
  • ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Ρ†ΠΈΠΊΠ»: запускаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли sCommand Π½Π΅ Ρ€Π°Π²Π΅Π½ β€˜Π½β€™.
  • Π’Ρ‚ΠΎΡ€ΠΎΠΉ Ρ†ΠΈΠΊΠ»: запускаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли sCommand Π½Π΅ Ρ€Π°Π²Π΅Π½ β€˜Π½β€™.
  • Π’Ρ€Π΅Ρ‚ΠΈΠΉ Ρ†ΠΈΠΊΠ»: Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡ‰Π΅Π½ хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ sCommand.
  • Π§Π΅Ρ‚Π²Π΅Ρ€Ρ‚Ρ‹ΠΉ Ρ†ΠΈΠΊΠ»: Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡ‰Π΅Π½ хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ sCommand.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ использования Until ΠΈ While являСтся ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Когда ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π΅ Π±Ρ‹Π» Π½Π°Π·Π½Π°Ρ‡Π΅Π½, ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Nothing.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ объявляСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΊΠ½ΠΈΠ³ΠΈ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΎΠ½Π° ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Nothing, ΠΏΠΎΠΊΠ° ΠΌΡ‹ Π½Π΅ Π½Π°Π·Π½Π°Ρ‡ΠΈΠΌ Π΅Π΅ Workbook.

 Dim wrk As Workbook

ΠŸΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ Nothing Π½Π΅ являСтся Nothing, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ±ΠΈΡ‚ΡŒ с Ρ‚ΠΎΠ»ΠΊΡƒ.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Ρƒ нас Π΅ΡΡ‚ΡŒ Π΄Π²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: GetFirstWorkbook ΠΈ GetNextWorkbook, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΊΠ½ΠΈΠ³ΠΈ. Код Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ имя Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ ΠΊΠ½ΠΈΠ³ΠΈ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ большС Π½Π΅ Π²Π΅Ρ€Π½ΡƒΡ‚ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‡ΡƒΡŽ ΠΊΠ½ΠΈΠ³Ρƒ.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° здСсь:

Dim wrk As Workbook
    Set wrk = GetFirstWorkbook()

    Do Until wrk Is Nothing
        Debug. Print wrk.Name
        Set wrk = GetNextWorkbook()
    Loop

НаписаниС этого ΠΊΠΎΠ΄Π° с использованиСм Do While Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π±ΠΎΠ»Π΅Π΅ Π·Π°ΠΏΡƒΡ‚Π°Π½Π½Ρ‹ΠΌ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ условиС Not Is Nothing

Dim wrk As Workbook
    Set wrk = GetFirstWorkbook()

    Do While Not wrk Is Nothing
        Debug.Print wrk.Name
        Set wrk = GetNextWorkbook()
    Loop

Π­Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ понятным, ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Ρ‡Π΅Ρ‚ΠΊΠΈΡ… условий β€” всСгда Ρ…ΠΎΡ€ΠΎΡˆΠΎ. ЧСстно говоря, Ρ€Π°Π·Π½ΠΈΡ†Π° малСнькая, ΠΈ Π²Ρ‹Π±ΠΎΡ€ ΠΌΠ΅ΠΆΠ΄Ρƒ Β«WhileΒ» ΠΈ Β«UntilΒ» Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ сводится ΠΊ Π»ΠΈΡ‡Π½ΠΎΠΌΡƒ Π²Ρ‹Π±ΠΎΡ€Ρƒ.

Π¦ΠΈΠΊΠ» Exit Do

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· любого Ρ†ΠΈΠΊΠ»Π° Do с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Exit Do.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования Exit Do

Do While i < 1000
     If Cells(i,1) = "НайдСно" Then 
         Exit Do
     End If
     i = i + 1
Loop 

Π’ этом случаС ΠΌΡ‹ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΠΌ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° Do Loop, Ссли ячСйка содСрТит тСкст «НайдСно».

While Wend

Π­Ρ‚ΠΎΡ‚ Ρ†ΠΈΠΊΠ» Π² VBA, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ совмСстимым со старым ΠΊΠΎΠ΄ΠΎΠΌ. Microsoft Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»Ρ‹ Do, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ Π±ΠΎΠ»Π΅Π΅ структурированы.

Из MSDN: Β«ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Do… Loop обСспСчиваСт Π±ΠΎΠ»Π΅Π΅ структурированный ΠΈ Π³ΠΈΠ±ΠΊΠΈΠΉ способ выполнСния Ρ†ΠΈΠΊΠ»ΠΎΠ²Β».

Π€ΠΎΡ€ΠΌΠ°Ρ‚ Ρ†ΠΈΠΊΠ»Π° VBA While Wend

Π¦ΠΈΠΊΠ» VBA While ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚:

While <УсловиС>
Wend

While Wend ΠΏΡ€ΠΎΡ‚ΠΈΠ² Do

Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ VBA While ΠΈ VBA Do Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ:

  1. While ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ условиС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π½Π°Ρ‡Π°Π»Π΅ Ρ†ΠΈΠΊΠ»Π°.
  2. While Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ вСрсии Until.
  3. НС сущСствуСт ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° для Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° While, ΠΊΠ°ΠΊ Exit For ΠΈΠ»ΠΈ Exit Do.

УсловиС для Ρ†ΠΈΠΊΠ»Π° VBA While Ρ‚Π°ΠΊΠΎΠ΅ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ для Ρ†ΠΈΠΊΠ»Π° VBA Do While. Π”Π²Π° Ρ†ΠΈΠΊΠ»Π° Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠ΄Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅.

Sub GetInput()

    Dim sCommand As String

    Do While sCommand <> "Π½"
        sCommand = InputBox("ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, Π²Π²Π΅Π΄ΠΈΡ‚Π΅ элСмСнт для Ρ†ΠΈΠΊΠ»Π° 1")
    Loop

    While sCommand <> "Π½"
        sCommand = InputBox("ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, Π²Π²Π΅Π΄ΠΈΡ‚Π΅ элСмСнт для Ρ†ΠΈΠΊΠ»Π° 2")
    Wend

End Sub

БСсконСчный Ρ†ΠΈΠΊΠ»

Π”Π°ΠΆΠ΅ Ссли Π²Ρ‹ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ писали ΠΊΠΎΠ΄ Π² своСй ΠΆΠΈΠ·Π½ΠΈ, я ΡƒΠ²Π΅Ρ€Π΅Π½, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΡΠ»Ρ‹ΡˆΠ°Π»ΠΈ Ρ„Ρ€Π°Π·Ρƒ «БСсконСчный Ρ†ΠΈΠΊΠ»Β». Π­Ρ‚ΠΎ Ρ†ΠΈΠΊΠ», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ условиС Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ это происходит, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π·Π°Π±Ρ‹Π»ΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ счСтчик.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ бСсконСчный Ρ†ΠΈΠΊΠ»

Dim cnt As Long
    cnt = 1

    'это бСсконСчный Ρ†ΠΈΠΊΠ»
    Do While cnt <> 5

    Loop

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ cnt установлСн Π² 1, Π½ΠΎ ΠΎΠ½ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ обновляСтся. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ условиС Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ β€” cnt всСгда Π±ΡƒΠ΄Π΅Ρ‚ мСньшС 5.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΊΠΎΠ΄Π΅ cnt обновляСтся ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, поэтому условиС Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ.

Dim cnt As Long
    cnt = 1

    Do While cnt <> 5
        cnt = cnt + 1
    Loop

Как Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, использованиС For Loop бСзопаснСС для подсчСта, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΎ автоматичСски обновляСт счСт Π² Ρ†ΠΈΠΊΠ»Π΅. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ†ΠΈΠΊΠ» с использованиСм For.

Dim i As Long
    For i = 1 To 4

    Next i

Π­Ρ‚ΠΎ явно Π»ΡƒΡ‡ΡˆΠΈΠΉ способ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это. Π¦ΠΈΠΊΠ» For устанавливаСт Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, условиС ΠΈ счСт Π² ΠΎΠ΄Π½Ρƒ строку.

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ бСсконСчный Ρ†ΠΈΠΊΠ», ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ For β€” это ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ большС усилий πŸ™‚

 Dim i As Long
    ' БСсконСчный Ρ†ΠΈΠΊΠ»
    For i = 1 To 4
        ' i Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ достигнСт 4
        i = 1
    Next i

Π Π°Π±ΠΎΡ‚Π° с бСсконСчным Ρ†ΠΈΠΊΠ»ΠΎΠΌ

Когда Ρƒ вас бСсконСчный Ρ†ΠΈΠΊΠ» β€” VBA Π½Π΅ выдаст ΠΎΡˆΠΈΠ±ΠΊΡƒ. Π’Π°Ρˆ ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, Π° Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Visual Basic Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ.

РаньшС Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°, просто Π½Π°ΠΆΠ°Π² Ctrl ΠΈ Break. Π’ настоящСС врСмя Ρ€Π°Π·Π½Ρ‹Π΅ Π½ΠΎΡƒΡ‚Π±ΡƒΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ клавиш. ПолСзно Π·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ это настроСно Π² вашСм Π½ΠΎΡƒΡ‚Π±ΡƒΠΊΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² случаС возникновСния бСсконСчного Ρ†ΠΈΠΊΠ»Π° Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π»Π΅Π³ΠΊΠΎ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄.

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°, ΡƒΠ±ΠΈΠ² процСсс. НаТмитС Ctrl + Shift + Esc. На Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ ΠŸΡ€ΠΎΡ†Π΅ΡΡΡ‹ Π½Π°ΠΉΠ΄ΠΈΡ‚Π΅ Excel / Microsoft Excel. Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ ΠΏΠΎ этому ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Β«Π—Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ процСсс». Π­Ρ‚ΠΎ Π·Π°ΠΊΡ€ΠΎΠ΅Ρ‚ Excel, ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ β€” Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ctrl + Break ΠΈΠ»ΠΈ Π΅Π³ΠΎ эквивалСнт.

ИспользованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Worksheet вмСсто Ρ†ΠΈΠΊΠ»ΠΎΠ²

Иногда Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ листа вмСсто Ρ†ΠΈΠΊΠ»Π°.

НапримСр, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ значСния Π² список ячССк. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π°, Π½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π±ΠΎΠ»Π΅Π΅ эффСктивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Sum. Π­Ρ‚ΠΎ быстрСС ΠΈ экономит ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ листа ΠΎΡ‡Π΅Π½ΡŒ просто. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования Sum ΠΈ Count.

Sub WorksheetFunctions()

    Debug.Print WorksheetFunction.Sum(Range("A1:A10"))

    Debug.Print WorksheetFunction.Count(Range("A1:A10"))

End Sub

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

Sub SumWithLoop()

    Dim total As Long, count As Long
    Dim rg As Range
    For Each rg In Range("A1:A10")
        ' Total
        total = total + rg
        ' Count
        If rg <> "" Then
            count = count + 1
        End If
    Next rg

    Debug.Print total
    Debug.Print count

End Sub

РСзюмС

Π¦ΠΈΠΊΠ» Do While

  • Π¦ΠΈΠΊΠ» Do ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ 4 способами.
  • Π•Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΈΠ»ΠΈ Π² ΠΊΠΎΠ½Ρ†Π΅, Do While .. Loop, Do … Loop While
  • ΠœΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ с Until Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΈΠ»ΠΈ Π² ΠΊΠΎΠ½Ρ†Π΅, Do Until . . Loop, Do … LoopΒ Until
  • While ΠΈ Until ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½Ρ‹Π΅ условия Π΄Ρ€ΡƒΠ³ ΠΊ Π΄Ρ€ΡƒΠ³Ρƒ.
  • БСсконСчный Ρ†ΠΈΠΊΠ» происходит, Ссли вашС условиС Π²Ρ‹Ρ…ΠΎΠ΄Π° Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ.
  • Иногда использованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ листа Π±ΠΎΠ»Π΅Π΅ эффСктивно, Ρ‡Π΅ΠΌ использованиС Ρ†ΠΈΠΊΠ»Π°.

Π¦ΠΈΠΊΠ» While Wend

  • Π¦ΠΈΠΊΠ» Wend Wend устарСл, ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ вмСсто этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» Do.

VBA Excel. Π¦ΠΈΠΊΠ» For… Next

Π¦ΠΈΠΊΠ» For… Next Π² VBA Excel, Π΅Π³ΠΎ синтаксис ΠΈ описаниС ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования Ρ†ΠΈΠΊΠ»Π° For… Next.

Π¦ΠΈΠΊΠ» For… Next Π² VBA Excel ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для выполнСния Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ количСство Ρ€Π°Π·, Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ†ΠΈΠΊΠ»Π° – счСтчиком. ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счСтчика послС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ увСличиваСтся ΠΈΠ»ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ΡΡ Π½Π° число, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Step, ΠΈΠ»ΠΈ, ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ. Когда Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ†ΠΈΠΊΠ» ΠΊ элСмСнтам, количСство ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈ индСксация Π² Π³Ρ€ΡƒΠΏΠΏΠ΅ (Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½, массив, коллСкция) нСизвСстны, слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» For Each… Next.

Бинтаксис Ρ†ΠΈΠΊΠ»Π° For… Next


For counter = start To end [ Step step ]

Β Β Β Β [ statements ]

Β Β Β Β [ Exit For ]

Β Β Β Β [ statements ]

Next [ counter ]


For счСтчик = Π½Π°Ρ‡Π°Π»ΠΎ To ΠΊΠΎΠ½Π΅Ρ† [ Step шаг ]

Β Β Β Β [ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ]

Β Β Β Β [ Exit For ]

Β Β Β Β [ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ]

Next [ счСтчик ]


Π’ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках ΡƒΠΊΠ°Π·Π°Π½Ρ‹ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ Ρ†ΠΈΠΊΠ»Π° For… Next.

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Ρ†ΠΈΠΊΠ»Π° For… Next

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠžΠΏΠΈΡΠ°Π½ΠΈΠ΅
counterΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚. Числовая пСрСмСнная, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰Π°Ρ Ρ€ΠΎΠ»ΡŒ счСтчика, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π΅Ρ‰Π΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ†ΠΈΠΊΠ»Π°.
startΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚. ЧисловоС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π·Π°Π΄Π°ΡŽΡ‰Π΅Π΅ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счСтчика.
endΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚. ЧисловоС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π·Π°Π΄Π°ΡŽΡ‰Π΅Π΅ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счСтчика.
Step*ΠΠ΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π΄Π°Π½ шаг Ρ†ΠΈΠΊΠ»Π°.
stepΠΠ΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚. ЧисловоС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π·Π°Π΄Π°ΡŽΡ‰Π΅Π΅ шаг Ρ†ΠΈΠΊΠ»Π°. ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, Ρ‚Π°ΠΊ ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ.
statementsΠΠ΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ** Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ вашСго ΠΊΠΎΠ΄Π°.
Exit ForΠΠ΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° Π΄ΠΎ Π΅Π³ΠΎ окончания.
Next [ counter ]Π—Π΄Π΅ΡΡŒ counter – Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚. Π­Ρ‚ΠΎ Ρ‚ΠΎ ΠΆΠ΅ самоС имя ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ†ΠΈΠΊΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ здСсь Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ.

*Если Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ Step отсутствуСт, Ρ†ΠΈΠΊΠ» For… Next выполняСтся с шагом ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Ρ€Π°Π²Π½ΠΎΠΌΡƒ 1.

**Если Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ†ΠΈΠΊΠ»Π΅ свой ΠΊΠΎΠ΄, смысл примСнСния Ρ†ΠΈΠΊΠ»Π° тСряСтся.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ†ΠΈΠΊΠ»ΠΎΠ² For… Next

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ†ΠΈΠΊΠ»ΠΎΠ² Π² свой ΠΌΠΎΠ΄ΡƒΠ»ΡŒ VBA, ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΈΡ… Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈ ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹.

ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ Ρ†ΠΈΠΊΠ»

ЗаполняСм Π΄Π΅ΡΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… ячССк ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ столбца Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ листа Excel Ρ†ΠΈΡ„Ρ€Π°ΠΌΠΈ ΠΎΡ‚ 1 Π΄ΠΎ 10:

Sub test1()

Dim i As Long

Β Β For i = 1 To 10

Β Β Β Β Cells(i, 1) = i

Β Β Next

End Sub

ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ Ρ†ΠΈΠΊΠ» с шагом

Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ Ρ†ΠΈΠΊΠ» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Step со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ 3, Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ записываСм Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ столбСц:

Sub test2()

Dim i As Long

Β Β For i = 1 To 10 Step 3

Β Β Β Β Cells(i, 2) = i

Β Β Next

End Sub

Π¦ΠΈΠΊΠ» с ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ

Π­Ρ‚ΠΎΡ‚ Ρ†ΠΈΠΊΠ» заполняСт Π΄Π΅ΡΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… ячССк Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ столбца Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ:

Sub test3()

Dim i As Long

Β Β For i = 0 To -9 Step -1

Β Β Β Β Cells(i + 10, 3) = i + 10

Β Β Next

End Sub

Π£Π²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ шага Π΄ΠΎ -3 ΠΈ записываСм Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π² Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚Ρ‹ΠΉ столбСц Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ листа Excel:

Sub test4()

Dim i As Long

Β Β For i = 0 To -9 Step -3

Β Β Β Β Cells(i + 10, 4) = i + 10

Β Β Next

End Sub

Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ»

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

Sub test5()

Dim i1 As Long, i2 As Long

Β Β For i1 = 1 To 10

‘ΠŸΡΡ‚ΠΎΠΉ ячСйкС Π² строкС i1 присваиваСм 0

Β Β Β Β Cells(i1, 5) = 0

Β Β Β Β Β Β For i2 = 1 To 4

Β Β Β Β Β Β Β Β Cells(i1, 5) = Cells(i1, 5) + Cells(i1, i2)

Β Β Β Β Β Β Next

Β Β Next

End Sub

Π’Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°

Π’ ΡˆΠ΅ΡΡ‚ΠΎΠΉ столбСц Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ листа запишСм названия дСсяти ΠΆΠΈΠ²ΠΎΡ‚Π½Ρ‹Ρ…, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π° For… Next:

Sub test6()

Dim i As Long

Β Β For i = 1 To 10

Β Β Β Β Cells(i, 6) = Choose(i, «ΠœΠ΅Π΄Π²Π΅Π΄ΡŒ», «Π‘Π»ΠΎΠ½», «Π–ΠΈΡ€Π°Ρ„», «ΠΠ½Ρ‚ΠΈΠ»ΠΎΠΏΠ°», _

Β Β Β Β «ΠšΡ€ΠΎΠΊΠΎΠ΄ΠΈΠ»», «Π—Π΅Π±Ρ€Π°», «Π’ΠΈΠ³Ρ€», «Π―Ρ‰Π΅Ρ€ΠΈΡ†Π°», «Π›Π΅Π²», «Π‘Π΅Π³Π΅ΠΌΠΎΡ‚»)

Β Β Next

End Sub

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ†ΠΈΠΊΠ» Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΊΠ°Ρ‚ΡŒ Π² ΡˆΠ΅ΡΡ‚ΠΎΠΌ столбцС ΠΊΡ€ΠΎΠΊΠΎΠ΄ΠΈΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ съСл галоши. Π’ ячСйку сСдьмого столбца Ρ†ΠΈΠΊΠ», ΠΏΠΎΠΊΠ° Π½Π΅ встрСтит ΠΊΡ€ΠΎΠΊΠΎΠ΄ΠΈΠ»Π°, Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ строку Β«Π—Π΄Π΅ΡΡŒ Π±Ρ‹Π» Ρ†ΠΈΠΊΠ»Β», Π° ΠΊΠΎΠ³Π΄Π° ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ ΠΊΡ€ΠΎΠΊΠΎΠ΄ΠΈΠ»Π°, Π·Π°ΠΏΠΈΡˆΠ΅Ρ‚ «Он съСл галоши» ΠΈ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‚ΠΈΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Exit For. Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΈΠ΄Π½ΠΎ ΠΏΠΎ ячСйкам рядом с названиями ΠΆΠΈΠ²ΠΎΡ‚Π½Ρ‹Ρ… Π½ΠΈΠΆΠ΅ ΠΊΡ€ΠΎΠΊΠΎΠ΄ΠΈΠ»Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ тСкста Β«Π—Π΄Π΅ΡΡŒ Π±Ρ‹Π» Ρ†ΠΈΠΊΠ»Β».

Sub test7()

Dim i As Long

Β Β For i = 1 To 10

Β Β Β Β If Cells(i, 6) = «ΠšΡ€ΠΎΠΊΠΎΠ΄ΠΈΠ»» Then

Β Β Β Β Β Β Cells(i, 7) = «ΠžΠ½ съСл галоши»

Β Β Β Β Β Β Exit For

Β Β Β Β Β Β Β Β Else

Β Β Β Β Β Β Cells(i, 7) = «Π—Π΄Π΅ΡΡŒ Π±Ρ‹Π» Ρ†ΠΈΠΊΠ»»

Β Β Β Β End If

Β Β Next

End Sub


Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ†ΠΈΠΊΠ»ΠΎΠ² For… Next ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ²:

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ†ΠΈΠΊΠ»ΠΎΠ² For… Next

Π’Π°ΠΊΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ Π½Π° Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ листС Excel Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅, Ссли ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ запуститС Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅Β Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ VBA всС сСмь ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Ρƒ Ρ†ΠΈΠΊΠ»ΠΎΠ² For… Next.

Π¦ΠΈΠΊΠ» с Π΄Ρ€ΠΎΠ±Π½Ρ‹ΠΌΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ

Атрибуты start, end ΠΈ step ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ прСдставлСны числом, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ»ΠΈ числовым Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ:

For i = 1 To 20 Step 2

For i = a To b Step c

For i = a — 3 To 2b + 1 Step c/2Β Β 

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ вычислСния значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π²Π½Π΅ Ρ†ΠΈΠΊΠ»Π° ΠΈΠ»ΠΈ выраТСния Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Π΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. VBA Excel ΠΎΠΊΡ€ΡƒΠ³Π»ΠΈΡ‚ Π΅Π³ΠΎ Π΄ΠΎ Ρ†Π΅Π»ΠΎΠ³ΠΎ числа, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ бухгалтСрскоС ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅:

‘ЗначСния Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² Π΄ΠΎ округлСния

For i = 1.5 To 10.5 Step 2.51

‘ΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½Π½Ρ‹Π΅ значСния Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ²

For i = 2 To 10 Step 3Β Β 

Π‘Ρ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π΅ Π΄ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ попадания Π² Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° For… Next Π½Π΅ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ нСпрСдсказуСмыС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π΅Π³ΠΎ выполнСния. Если Π±Π΅Π· Π΄Ρ€ΠΎΠ±Π½Ρ‹Ρ… чисСл Π½Π΅ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ, Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ΅ ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅, примСняйтС Π² ΠΊΠΎΠ΄Π΅ VBA Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ листа WorksheetFunction.Round для округлСния числа ΠΏΠ΅Ρ€Π΅Π΄ использованиСм Π΅Π³ΠΎ Π² Ρ†ΠΈΠΊΠ»Π΅ For… Next.

Π¦ΠΈΠΊΠ»Ρ‹ Π² VBA — Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ

Π’ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ ситуации, ΠΊΠΎΠ³Π΄Π° ΠΎΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ VBA трСбуСтся ΡΠΎΠ²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ нСсколько Ρ€Π°Π· подряд ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Π½Π°Π±ΠΎΡ€ дСйствий (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ нСсколько Ρ€Π°Π· ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π°). Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ сдСлано ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ² VBA.

К Ρ†ΠΈΠΊΠ»Π°ΠΌ VBA относятся:

Π”Π°Π»Π΅Π΅ ΠΌΡ‹ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ рассмотрим ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· этих Ρ†ΠΈΠΊΠ»ΠΎΠ².

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ†ΠΈΠΊΠ»Π° Β«ForΒ» Π² Visual Basic

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Ρ†ΠΈΠΊΠ»Π° For Π² Visual Basic ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π΄Π²ΡƒΡ… Ρ„ΠΎΡ€ΠΌ: ΠΊΠ°ΠΊ Ρ†ΠΈΠΊΠ» For … Next ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Ρ†ΠΈΠΊΠ» For Each.

Π¦ΠΈΠΊΠ» Β«For … NextΒ»

Π¦ΠΈΠΊΠ» For … Next ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, которая ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ значСния ΠΈΠ· Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°. Π‘ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ смСной значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ дСйствия, Π·Π°ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½Ρ‹Π΅ Π² Ρ‚Π΅Π»Π΅ Ρ†ΠΈΠΊΠ»Π°. Π­Ρ‚ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΈΠ· простого ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°:

For i = 1 To 10
   Total = Total + iArray(i)
Next i

Π’ этом простом Ρ†ΠΈΠΊΠ»Π΅ For … Next ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ пСрСмСнная i, которая ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ значСния 1, 2, 3, … 10, ΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· этих Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ выполняСтся ΠΊΠΎΠ΄ VBA, находящийся Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π΄Π°Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» суммируСт элСмСнты массива iArray Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Total.

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ шаг приращСния Ρ†ΠΈΠΊΠ»Π° Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½, поэтому для пошагового увСличСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ i ΠΎΡ‚ 1 Π΄ΠΎ 10 ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈΡ€Π°Ρ‰Π΅Π½ΠΈΠ΅ 1. Однако, Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях трСбуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ значСния приращСния для Ρ†ΠΈΠΊΠ»Π°. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова Step, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ простом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅.

For d = 0 To 10 Step 0.1
   dTotal = dTotal + d
Next d

Π’Π°ΠΊ ΠΊΠ°ΠΊ Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π·Π°Π΄Π°Π½ шаг приращСния Ρ€Π°Π²Π½Ρ‹ΠΉ 0.1, Ρ‚ΠΎ пСрСмСнная dTotal для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ повторСния Ρ†ΠΈΠΊΠ»Π° ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ значСния 0.0, 0.1, 0.2, 0.3, … 9.9, 10.0.

Для опрСдСлСния шага Ρ†ΠΈΠΊΠ»Π° Π² VBA ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

For i = 10 To 1 Step -1
   iArray(i) = i
Next i

Π—Π΄Π΅ΡΡŒ шаг приращСния Ρ€Π°Π²Π΅Π½ -1, поэтому пСрСмСнная i с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠ΅ΠΌ Ρ†ΠΈΠΊΠ»Π° ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ значСния 10, 9, 8, … 1.

Π¦ΠΈΠΊΠ» Β«For EachΒ»

Π¦ΠΈΠΊΠ» For Each ΠΏΠΎΡ…ΠΎΠΆ Π½Π° Ρ†ΠΈΠΊΠ» For … Next, Π½ΠΎ вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ-счётчика, Ρ†ΠΈΠΊΠ» For Each выполняСт Π½Π°Π±ΠΎΡ€ дСйствий для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈΠ· ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ†ΠΈΠΊΠ»Π° For Each выполняСтся пСрСчислСниС всСх листов Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ ΠΊΠ½ΠΈΠ³Π΅ Excel:

Dim wSheet As Worksheet

For Each wSheet in Worksheets
   MsgBox "НайдСн лист: " & wSheet.Name
Next wSheet

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ прСрывания Ρ†ΠΈΠΊΠ»Π° Β«Exit ForΒ»

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Exit For примСняСтся для прСрывания Ρ†ΠΈΠΊΠ»Π°. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΊΠΎΠ΄Π΅ встрСчаСтся этот ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»Π° ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², находящихся Π² ΠΊΠΎΠ΄Π΅ сразу послС Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для поиска ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ значСния Π² массивС. Для этого ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ†ΠΈΠΊΠ»Π° просматриваСтся ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт массива. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ искомый элСмСнт Π½Π°ΠΉΠ΄Π΅Π½, ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π½Π΅Ρ‚ нСобходимости – Ρ†ΠΈΠΊΠ» прСрываСтся.

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Exit For продСмонстрировано Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅. Π—Π΄Π΅ΡΡŒ Ρ†ΠΈΠΊΠ» ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅Ρ‚ 100 записСй массива ΠΈ сравниваСт ΠΊΠ°ΠΆΠ΄ΡƒΡŽ со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ dVal. Если совпадСниС Π½Π°ΠΉΠ΄Π΅Π½ΠΎ, Ρ‚ΠΎ Ρ†ΠΈΠΊΠ» прСрываСтся:

For i = 1 To 100
   If dValues(i) = dVal Then
      IndexVal = i
      Exit For
   End If
Next i

Π¦ΠΈΠΊΠ» Β«Do WhileΒ» Π² Visual Basic

Π¦ΠΈΠΊΠ» Do While выполняСт Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° выполняСтся Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ условиС. Π”Π°Π»Π΅Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Sub, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ†ΠΈΠΊΠ»Π° Do While выводятся ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ числа Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π½Π΅ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°ΡŽΡ‰ΠΈΠ΅ 1000:

'ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° 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

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ условиС iFib_Next < 1000 провСряСтся Π² Π½Π°Ρ‡Π°Π»Π΅ Ρ†ΠΈΠΊΠ»Π°. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ссли Π±Ρ‹ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ iFib_Next Π±Ρ‹Π»ΠΎ Π±Ρ‹ большС 1000, Ρ‚ΠΎ Ρ†ΠΈΠΊΠ» Π±Ρ‹ Π½Π΅ выполнялся Π½ΠΈ Ρ€Π°Π·Ρƒ.

Π”Ρ€ΡƒΠ³ΠΎΠΉ способ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» Do While – ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ условиС Π½Π΅ Π² Π½Π°Ρ‡Π°Π»Π΅, Π° Π² ΠΊΠΎΠ½Ρ†Π΅ Ρ†ΠΈΠΊΠ»Π°. Π’ этом случаС Ρ†ΠΈΠΊΠ» Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ хотя Π±Ρ‹ Ρ€Π°Π·, Π½Π΅ зависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, выполняСтся Π»ΠΈ условиС.

Π‘Ρ…Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ Ρ†ΠΈΠΊΠ» Do While с провСряСмым условиСм Π² ΠΊΠΎΠ½Ρ†Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

Do
...
Loop While iFib_Next < 1000

Π¦ΠΈΠΊΠ» Β«Do UntilΒ» Π² Visual Basic

Π¦ΠΈΠΊΠ» Do Until ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° Ρ†ΠΈΠΊΠ» Do While: Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° Π² Ρ‚Π΅Π»Π΅ Ρ†ΠΈΠΊΠ»Π° выполняСтся Ρ€Π°Π· Π·Π° Ρ€Π°Π·ΠΎΠΌ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ условиС выполняСтся (Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ условного выраТСния Ρ€Π°Π²Π΅Π½ True). Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ Sub ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ†ΠΈΠΊΠ»Π° Do Until ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡŽΡ‚ΡΡ значСния ΠΈΠ· всСх ячССк столбца A Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ листа Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π² столбцС Π½Π΅ встрСтится пустая ячСйка:

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

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ условиС IsEmpty(Cells(iRow, 1)) находится Π² Π½Π°Ρ‡Π°Π»Π΅ конструкции Do Until, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Ρ†ΠΈΠΊΠ» Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, Ссли пСрвая взятая ячСйка Π½Π΅ пуста.

Однако, ΠΊΠ°ΠΊ Π±Ρ‹Π»ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… Ρ†ΠΈΠΊΠ»Π° Do While, Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ситуациях Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ†ΠΈΠΊΠ» Π±Ρ‹Π» Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, Π½Π΅ зависимо ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° условного выраТСния. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС условноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² ΠΊΠΎΠ½Ρ†Π΅ Ρ†ΠΈΠΊΠ»Π°, Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

Do
...
Loop Until IsEmpty(Cells(iRow, 1))

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

VBA ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Ρ†ΠΈΠΊΠ»Π°. Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ†ΠΈΠΊΠ»Ρ‹

7.1 ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Ρ†ΠΈΠΊΠ»Π°
7.2 Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ†ΠΈΠΊΠ»Ρ‹


7.1 ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Ρ†ΠΈΠΊΠ»Π°.

Π¦ΠΈΠΊΠ»Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΈΠ»ΠΈ нСсколько строк ΠΊΠΎΠ΄Π° нСсколько Ρ€Π°Π·. VBA ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ†ΠΈΠΊΠ»Ρ‹:


For...Next
For Each...Next
Do... Loop

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ For . . . Next. Когда число ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΉ извСстно Π·Π°Ρ€Π°Π½Π΅Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ†ΠΈΠΊΠ» For . . . Next. Π’ Ρ†ΠΈΠΊΠ»Π΅ For ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ пСрСмСнная, называСмая ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ†ΠΈΠΊΠ»Π° ΠΈΠ»ΠΈ счСтчиком Ρ†ΠΈΠΊΠ»Π°, которая увСличиваСтся ΠΈΠ»ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ΡΡ Π½Π° Π·Π°Π΄Π°Π½Π½ΡƒΡŽ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π°. Бинтаксис этой конструкции ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:


For counter = start To end [Step increment]
 ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ 
Next [counter]

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ counter (счСтчик), start (Π½Π°Ρ‡Π°Π»ΠΎ Ρ†ΠΈΠΊΠ»Π°), end (ΠΊΠΎΠ½Π΅Ρ† Ρ†ΠΈΠΊΠ»Π°) ΠΈ increment (ΠΏΡ€ΠΈΡ€Π°Ρ‰Π΅Π½ΠΈΠ΅) ΡΠ²Π»ΡΡŽΡ‚ΡΡ числовыми.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ increment ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, Ρ‚Π°ΠΊ ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ. Если ΠΎΠ½ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»Π΅Π½, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ start Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ мСньшС ΠΈΠ»ΠΈ Ρ€Π°Π²Π΅Π½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ end, ΠΈΠ½Π°Ρ‡Π΅ Ρ†ΠΈΠΊΠ» Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ. Если ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ increment ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»Π΅Π½, Ρ‚ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ start Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ большС ΠΈΠ»ΠΈ Ρ€Π°Π²Π΅Π½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° end, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ»ΠΎΡΡŒ Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π°. Если ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Step Π½Π΅ Π·Π°Π΄Π°Π½, Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° increment ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ€Π°Π²Π½ΠΎ 1.

VBA выполняСт Ρ†ΠΈΠΊΠ» For Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ:

1. УстанавливаСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ†ΠΈΠΊΠ»Π° counter Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ start.

2. Π‘Ρ€Π°Π²Π½ΠΈΠ²Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ†ΠΈΠΊΠ»Π° counter ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° end. Если пСрСмСнная counter большС, VBA Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»Π°. (Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° increment ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‚ΠΎ VBA ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»Π° ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ†ΠΈΠΊΠ»Π° counter мСньшС значСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° end.)

3. ВыполняСт ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π° statements.

4. Π£Π²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ†ΠΈΠΊΠ»Π° counter Π½Π° 1 ΠΈΠ»ΠΈ Π½Π° Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ значСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° increment, Ссли ΠΎΠ½ Π·Π°Π΄Π°Π½.

5. ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΠ΅Ρ‚ шаги со 2 ΠΏΠΎ 4.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€: Π’Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ f(t)

ΠΏΡ€ΠΈ Π·Π°Π΄Π°Π½Π½Ρ‹Ρ… a, b, n, Ссли t измСняСтся ΠΎΡ‚ a Π΄ΠΎ b с шагом Dt=(b-a)/(n-1).


Sub ΠΏΡ€ΠΈΠΌΠ΅Ρ€3()
Dim f() As Single
Dim a As Single, b As Single, t As Single, dt As Single
Dim i As Integer, n As Integer
Call read("a1", a) : Call read("b1", b) : Call read("c1", n)
ReDim f(1 To n - 1)
dt = (b - a) / (n - 1) : t = a
Call out("a2", "i") : Call out("b2", "t") : Call out("c2", "f(t)")
For i = 1 To n - 1
t = t + dt
If t <= -1 Then
f(i) = -1
ElseIf t > 1 Then
f(i) = 1
Else
f(i) = t
End If
Call out("a" & (2 + i), i) : Call out("b" & (2 + i), t) : Call out("c" & (2 + i), f(i))
Next i
End Sub

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ For Each . . . Next

Π¦ΠΈΠΊΠ» For Each . . . Next ΠΏΠΎΡ…ΠΎΠΆ Π½Π° Ρ†ΠΈΠΊΠ» For . . . Next, Π½ΠΎ ΠΎΠ½ повторяСт Π³Ρ€ΡƒΠΏΠΏΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта ΠΈΠ· Π½Π°Π±ΠΎΡ€Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΠ»ΠΈ ΠΈΠ· массива, вмСсто повторСния ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ число Ρ€Π°Π·. Он особСнно ΠΏΠΎΠ»Π΅Π·Π΅Π½, ΠΊΠΎΠ³Π΄Π° нСизвСстно, сколько элСмСнтов содСрТится Π² Π½Π°Π±ΠΎΡ€Π΅.

Бинтаксис конструкции Ρ†ΠΈΠΊΠ»Π° For Each . . . Next Ρ‚Π°ΠΊΠΎΠ²:


For Each element In group
  ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ 
Next element

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ограничСния ΠΏΡ€ΠΈ использовании Ρ†ΠΈΠΊΠ»Π° For Each . . . Next:

 Для Π½Π°Π±ΠΎΡ€ΠΎΠ² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ element ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠ° variant, ΠΎΠ±Ρ‰Π΅ΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠ° object ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ, пСрСчислСнным Π² Object Browser

 Для массивов ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ element ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠ° Variant

 НСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» For Each . . . Next с массивом, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Ρ‚ΠΈΠΏ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ пСрСмСнная Ρ‚ΠΈΠΏΠ° variant Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Ρ‚ΠΈΠΏΠ°

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ Do…Loop

Π¦ΠΈΠΊΠ» Do примСняСтся для выполнСния Π±Π»ΠΎΠΊΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ΅ число Ρ€Π°Π·. БущСствуСт нСсколько разновидностСй конструкции Do . . . Loop, Π½ΠΎ каТдая ΠΈΠ· Π½ΠΈΡ… вычисляСт Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅-условиС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°. Как ΠΈ Π² случаС конструкции If . . . Then условиС Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½ΠΎΠΉ ΠΈΠ»ΠΈ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠΌΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ False (Π½ΡƒΠ»ΡŒ) ΠΈΠ»ΠΈ True (Π½Π΅ Π½ΡƒΠ»ΡŒ).

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ конструкции Do . . . Loop ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ условия являСтся True (Π˜ΡΡ‚ΠΈΠ½Π°):


Do While условиС
  ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ 
Loop

Выполняя этот Ρ†ΠΈΠΊΠ», VBA сначала провСряСт условиС. Если условиС Π»ΠΎΠΆΠ½ΠΎ (False), ΠΎΠ½ пропускаСт всС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Ρ†ΠΈΠΊΠ»Π°. Если ΠΎΠ½ΠΎ истинно (True), VBA выполняСт ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Ρ†ΠΈΠΊΠ»Π°, снова возвращаСтся ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ Do While ΠΈ снова провСряСт условиС.

Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ†ΠΈΠΊΠ», прСдставлСнный Π΄Π°Π½Π½ΠΎΠΉ конструкциСй, ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ любоС число Ρ€Π°Π·, ΠΏΠΎΠΊΠ° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ условия являСтся Π½Π΅ Π½ΡƒΠ»ΡŒ ΠΈΠ»ΠΈ True (Π˜ΡΡ‚ΠΈΠ½Π°). ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π° Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π½ΠΈ Ρ€Π°Π·Ρƒ, Ссли ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ условия ΠΎΠ½ΠΎ оказываСтся Π»ΠΎΠΆΠ½Ρ‹ΠΌ (False).

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€: Π’Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ сумму ряда

с Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ.


Sub ΠΏΡ€ΠΈΠΌΠ΅Ρ€4()
Dim e As Single, x As Single, s As Single
Dim m As Single, p As Single, i As Single
Call read("a1", x) : Call read("b1", e)
s = 0: i = 1: m = 1: p = -1
Call out("a2", "i") : Call out("b2", "m") : Call out("c2", "s")
Do While Abs(m) >= e
p = -p * x
m = p / i
s = s + m
Call out("a" & (2 + i), i) : Call out("b" & (2 + i), Abs(m)) : Call out("c" & (2 + i), s)
i = i + 1
Loop
End Sub

Другая Ρ€Π°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒ конструкции Do . . . Loop сначала выполняСт ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π°, Π° Π·Π°Ρ‚Π΅ΠΌ провСряСт условиС послС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ выполнСния. Π­Ρ‚Π° Ρ€Π°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π° выполнятся ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·:


Do
  ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ 
Loop 
While условиС

Π”Π²Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ разновидности конструкции Ρ†ΠΈΠΊΠ»Π° Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌ, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Ρ†ΠΈΠΊΠ» выполняСтся, ΠΏΠΎΠΊΠ° условиС Π»ΠΎΠΆΠ½ΠΎ (False):

Β Π¦ΠΈΠΊΠ» Π½Π΅ выполняСтся Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΈΠ»ΠΈ выполняСтся ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·:

Do Until условиС

ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Loop

Β Π¦ΠΈΠΊΠ» выполняСтся ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·:

Do

ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹

Loop Until условиС

7.2 Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ†ΠΈΠΊΠ»Ρ‹.

МоТно ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ структуры управлСния Π²Π½ΡƒΡ‚Ρ€ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΡ… структур управлСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π±Π»ΠΎΠΊ If . . . Then Π²Π½ΡƒΡ‚Ρ€ΡŒ Ρ†ΠΈΠΊΠ»Π° For . . . Next). Говорят, Ρ‡Ρ‚ΠΎ структура управлСния, помСщСнная Π²Π½ΡƒΡ‚Ρ€ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ структуры управлСния, являСтся Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ.

Π“Π»ΡƒΠ±ΠΈΠ½Π° влоТСния ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… структур Π² VBA Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π°. Для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ читаСмости ΠΊΠΎΠ΄Π° принята ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° смСщСния Ρ‚Π΅Π»Π° конструкции принятия Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ Ρ†ΠΈΠΊΠ»Π° Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π² случаС использования Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… структур управлСния.

ΠŸΡ€ΠΈ Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π² Ρ†ΠΈΠΊΠ» ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ нСсколько Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ†ΠΈΠΊΠ»ΠΎΠ² говорят ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»Π°Ρ…, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ внСшниС (ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅) ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ (Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅) Ρ†ΠΈΠΊΠ»Ρ‹.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ суммирования элСмСнтов Aij ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ A(n,m) построчно.


Sub ΠΏΡ€ΠΈΠΌΠ΅Ρ€5()
Dim a() As Single, s() As Single
Dim n As Integer, m As Integer
Dim i As Integer, j As Integer
Call read("a1", n): Call read("b1", m)
ReDim a(1 To n, 1 To m), s(1 To n)
'Π§Ρ‚Π΅Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹
For i = 1 To n
For j = 1 To m
Call readcell(i + 1, j, a(i, j))
Next j
Next i
'ВычислСниС
For i = 1 To n
s(i) = 0
For j = 1 To m
s(i) = s(i) + a(i, j)
Next j
Call outcell(i + 1, m + 1, s(i))
Next i
End Sub

Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Next Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Ρ†ΠΈΠΊΠ» For, Π° послСдний ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Next Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ внСшний Ρ†ΠΈΠΊΠ» For. Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΈ для Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² If, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ End If автоматичСски ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ для закрытия блиТайшСго ΠΊ Π½Π΅ΠΌΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° If. Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ структуры Do . . . Loop Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌ ΠΆΠ΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: самый дальний ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Loop соотвСтствуСт самому Π΄Π°Π»ΡŒΠ½Π΅ΠΌΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ Do.

ΠŸΡ€ΠΈ Π²Π²ΠΎΠ΄Π΅/Π²Ρ‹Π²ΠΎΠ΄Π΅ элСмСнтов Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Π½Π° Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ лист Microsoft Excel ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°:


Sub readcell(i As Integer, j As Integer, val As Variant)
val = Лист1.Cells(i, j).Value
End Sub
Sub outcell(i As Integer, j As Integer, val As Variant)
Лист1.Cells(i, j).Value = val
End Sub

Π³Π΄Π΅ I — Π½ΠΎΠΌΠ΅Ρ€ строки, j — Π½ΠΎΠΌΠ΅Ρ€ столбца Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ листа.

Π’Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· структур управлСния

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Exit позволяСт Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ нСпосрСдствСнно ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° For, Ρ†ΠΈΠΊΠ»Π° Do, ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Sub ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Function. Бинтаксис ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Exit прост:


For counter = start To end [Step -increment]
[Π±Π»ΠΎΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²]
[Exit For]
[Π±Π»ΠΎΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²] 
Next [counter]
Do [(While | Until} условиС]
[Π±Π»ΠΎΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²]
[Exit Do]
[Π±Π»ΠΎΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²] 
Loop

Exit For Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° For ΠΈ Exit Do Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° Do ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ сколько ΡƒΠ³ΠΎΠ΄Π½ΠΎ Ρ€Π°Π·.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Exit Do Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ со всСми разновидностями синтаксиса Ρ†ΠΈΠΊΠ»Π° Do.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Exit For ΠΈ Exit Do ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ, Ссли Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ Ρ†ΠΈΠΊΠ» Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ, Π½Π΅ продолТая Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΡ… ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ ΠΈΠ»ΠΈ Π½Π΅ оТидая выполнСния Π±Π»ΠΎΠΊΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π² Ρ‚Π΅Π»Π΅ Ρ†ΠΈΠΊΠ»Π°.

ΠŸΡ€ΠΈ использовании ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Exit для Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ†ΠΈΠΊΠ»Π° зависят ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»Π°:

Β ΠŸΡ€ΠΈ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΌ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ†ΠΈΠΊΠ»Π° ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ большС Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ числа Ρ†ΠΈΠΊΠ»ΠΎΠ²

Β ΠŸΡ€ΠΈ ΠΏΡ€Π΅ΠΆΠ΄Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΌ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π° пСрСмСнная Ρ†ΠΈΠΊΠ»Π° сохраняСт своС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ½Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π° с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΏΡ€Π°Π²ΠΈΠ»

Β ΠŸΡ€ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π° ΠΏΠΎ ΠΊΠΎΠ½Ρ†Ρƒ Π½Π°Π±ΠΎΡ€Π° пСрСмСнная Ρ†ΠΈΠΊΠ»Π° ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Nothing (НичСго), Ссли ΠΎΠ½Π° являСтся ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠ° object (ΠžΠ±ΡŠΠ΅ΠΊΡ‚), ΠΈΠ»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Empty (ΠŸΡƒΡΡ‚ΠΎ), Ссли ΠΎΠ½Π° являСтся ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠ° Variant

Π Π°Π±ΠΎΡ‚Π° с Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ Π² VBA:loop, for each, for next

ΠœΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ситуация, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° нСсколько Ρ€Π°Π·. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ случаС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ: сначала выполняСтся ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΈ Ρ‚. Π”.

Π―Π·Ρ‹ΠΊΠΈ программирования ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ структуры управлСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Π±ΠΎΠ»Π΅Π΅ слоТныС ΠΏΡƒΡ‚ΠΈ выполнСния.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ†ΠΈΠΊΠ»Π° позволяСт Π½Π°ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΈΠ»ΠΈ Π³Ρ€ΡƒΠΏΠΏΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² нСсколько Ρ€Π°Π·. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΎΠ±Ρ‰ΠΈΠΉ Π²ΠΈΠ΄ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Ρ†ΠΈΠΊΠ»Π° Π² VBA.

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

for Ρ†ΠΈΠΊΠ»

Π¦ΠΈΠΊΠ» for — это структура управлСния ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠ΅ΠΌ, которая позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ эффСктивно ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ количСство Ρ€Π°Π·.

Бинтаксис

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ синтаксис Ρ†ΠΈΠΊΠ»Π° for Π² VBA.

For counter = start To end [Step stepcount]
   [statement 1]
   [statement 2]
   ....
   [statement n]
   [Exit For]
   [statement 11]
   [statement 22]
   ....
   [statement n]
Next

Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° ΠΏΠΎΡ‚ΠΎΠΊΠ°

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΠΎΡ‚ΠΎΠΊ управлСния Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Loop —

  • ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ шаг выполняСтся. Π­Ρ‚ΠΎΡ‚ шаг позволяСт ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ управлСния ΠΊΠΎΠ½Ρ‚ΡƒΡ€Π°ΠΌΠΈ ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ счСтчика шагов.
  • Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, условиС оцСниваСтся. Если это ΠΏΡ€Π°Π²Π΄Π°, выполняСтся Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π°. Если ΠΎΠ½ΠΎ Π»ΠΎΠΆΠ½ΠΎ, Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° Π½Π΅ выполняСтся, ΠΈ ΠΏΠΎΡ‚ΠΎΠΊ управлСния ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ сразу послС Ρ†ΠΈΠΊΠ»Π° For.
  • ПослС выполнСния Ρ†ΠΈΠΊΠ»Π° Ρ†ΠΈΠΊΠ»Π° For ΠΏΠΎΡ‚ΠΎΠΊ управлСния ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ. Π­Ρ‚ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ позволяСт Π²Π°ΠΌ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ управлСния Ρ†ΠΈΠΊΠ»ΠΎΠΌ. Он обновляСтся Π½Π° основС значСния счСтчика шагов.
  • УсловиС Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ оцСниваСтся снова. Если это ΠΏΡ€Π°Π²Π΄Π°, Ρ†ΠΈΠΊΠ» выполняСтся, ΠΈ процСсс повторяСтся (Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π°, Π·Π°Ρ‚Π΅ΠΌ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ шаг, Π° Π·Π°Ρ‚Π΅ΠΌ снова условиС). ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ условиС становится Π»ΠΎΠΆΠ½Ρ‹ΠΌ, Ρ†ΠΈΠΊΠ» For заканчиваСтся.

ΠΏΡ€ΠΈΠΌΠ΅Ρ€

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.

Private Sub Constant_demo_Click()
   Dim a As Integer
   a = 10
   
   For i = 0 To a Step 2
      MsgBox "The value is i is : " & i
   Next
End Sub

Когда ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄ компилируСтся ΠΈ выполняСтся, ΠΎΠ½ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

The value is i is : 0
The value is i is : 2
The value is i is : 4
The value is i is : 6
The value is i is : 8
The value is i is : 10

ВыполняСт ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² нСсколько Ρ€Π°Π· ΠΈ сокращаСт ΠΊΠΎΠ΄, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ†ΠΈΠΊΠ»Π°.

for … loop

Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΈΠ»ΠΈ Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта Π² массивС ΠΈΠ»ΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ.

Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½ For Loop; ΠΎΠ΄Π½Π°ΠΊΠΎ Ρ†ΠΈΠΊΠ» выполняСтся для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта Π² массивС ΠΈΠ»ΠΈ Π³Ρ€ΡƒΠΏΠΏΠ΅. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, счСтчик шагов Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² этом Ρ‚ΠΈΠΏΠ΅ Ρ†ΠΈΠΊΠ»Π°. Он Π² основном ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ с массивами ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² контСкстС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ рСкурсивно.

Бинтаксис

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ синтаксис Ρ†ΠΈΠΊΠ»Π° For Each Π² VBA.

For Each element In Group
   [statement 1]
   [statement 2]
   ....
   [statement n]
   [Exit For]
   [statement 11]
   [statement 22]
Next

ΠΏΡ€ΠΈΠΌΠ΅Ρ€

Private Sub Constant_demo_Click()  
   'fruits is an array
   fruits = Array("apple", "orange", "cherries")
   Dim fruitnames As Variant
 
   'iterating using For each loop.
   For Each Item In fruits
      fruitnames = fruitnames & Item & Chr(10)
   Next
   
   MsgBox fruitnames
End Sub

Когда Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ выполняСтся, ΠΎΠ½ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ всС ΠΈΠΌΠ΅Π½Π° Ρ„Ρ€ΡƒΠΊΡ‚ΠΎΠ² с ΠΎΠ΄Π½ΠΈΠΌ элСмСнтом Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строкС.

apple
orange
cherries

Π­Ρ‚ΠΎ выполняСтся, Ссли Π² Π³Ρ€ΡƒΠΏΠΏΠ΅ Π΅ΡΡ‚ΡŒ хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ элСмСнт ΠΈ повторяСтся для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта Π² Π³Ρ€ΡƒΠΏΠΏΠ΅.

while..wend loop

Π’ Ρ†ΠΈΠΊΠ»Π΅ While While … Wend , Ссли условиС Ρ€Π°Π²Π½ΠΎ True, всС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ встрСтится ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово Wend.

Если условиС Π»ΠΎΠΆΠ½ΠΎ, Ρ†ΠΈΠΊΠ» Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ, ΠΈ элСмСнт управлСния ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ послС ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова Wend .

Бинтаксис

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ синтаксис Ρ†ΠΈΠΊΠ»Π° While..Wend Π² VBA.

While condition(s)
   [statements 1]
   [statements 2]
   ...
   [statements n]
Wend

Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° ΠΏΠΎΡ‚ΠΎΠΊΠ°

ΠΏΡ€ΠΈΠΌΠ΅Ρ€

Private Sub Constant_demo_Click()
   Dim Counter :  Counter = 10   
   
   While Counter < 15     ' Test value of Counter.
      Counter = Counter + 1   ' Increment Counter.
      msgbox "The Current Value of the Counter is : " & Counter
   Wend   ' While loop exits if Counter Value becomes 15.
End Sub

Когда Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ выполняСтся, ΠΎΠ½ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π² ΠΏΠΎΠ»Π΅ сообщСния.

The Current Value of the Counter is : 11
The Current Value of the Counter is : 12
The Current Value of the Counter is : 13
The Current Value of the Counter is : 14
The Current Value of the Counter is : 15

Π­Ρ‚ΠΎ провСряСт условиС ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π°.

Π¦ΠΈΠΊΠ» do..while

Do … while Ρ†ΠΈΠΊΠ» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ Π½Π°Π±ΠΎΡ€ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², ΠΏΠΎΠΊΠ° условиС истинно. УсловиС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΎ Π² Π½Π°Ρ‡Π°Π»Π΅ Ρ†ΠΈΠΊΠ»Π° ΠΈΠ»ΠΈ Π² ΠΊΠΎΠ½Ρ†Π΅ Ρ†ΠΈΠΊΠ»Π°.

Бинтаксис

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ синтаксис Ρ†ΠΈΠΊΠ»Π° Do … While Π² VBA.

Do While condition
   [statement 1]
   [statement 2]
   ...
   [statement n]
   [Exit Do]
   [statement 1]
   [statement 2]
   ...
   [statement n]
Loop           

Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° ΠΏΠΎΡ‚ΠΎΠΊΠ°

ΠΏΡ€ΠΈΠΌΠ΅Ρ€

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ†ΠΈΠΊΠ» Do … while для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ состояния Π² Π½Π°Ρ‡Π°Π»Π΅ Ρ†ΠΈΠΊΠ»Π°. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли условиС становится True.

Private Sub Constant_demo_Click()
   Do While i < 5
      i = i + 1
      msgbox "The value of i is : " & i
   Loop
End Sub

Когда выполняСтся Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΎΠ½ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π²ΠΎΠ΄ Π² ΠΎΠΊΠ½Π΅ сообщСния.

The value of i is : 1
The value of i is : 2
The value of i is : 3
The value of i is : 4
The value of i is : 5

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ синтаксис

БущСствуСт Ρ‚Π°ΠΊΠΆΠ΅ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ синтаксис для Do … while loop, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ провСряСт состояниС Π² ΠΊΠΎΠ½Ρ†Π΅ Ρ†ΠΈΠΊΠ»Π°. ОсновноС Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ этими двумя синтаксисами ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅.

Do 
   [statement 1]
   [statement 2]
   ...
   [statement n]
   [Exit Do]
   [statement 1]
   [statement 2]
   ...
   [statement n]
Loop While condition

ΠΏΡ€ΠΈΠΌΠ΅Ρ€

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ†ΠΈΠΊΠ» Do … while для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ состояния Π² ΠΊΠΎΠ½Ρ†Π΅ Ρ†ΠΈΠΊΠ»Π°. ЗаявлСния Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, Π΄Π°ΠΆΠ΅ Ссли условиС False.

Private Sub Constant_demo_Click() 
   i = 10
   Do
      i = i + 1
      MsgBox "The value of i is : " & i
   Loop While i < 3 'Condition is false.Hence loop is executed once.
End Sub

Когда выполняСтся Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΎΠ½ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π²ΠΎΠ΄ Π² ΠΎΠΊΠ½Π΅ сообщСния.

The value of i is : 11

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ do..While Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° условиС Ρ€Π°Π²Π½ΠΎ True. (Π’. Π•.) ΠŸΠ΅Ρ‚Π»Ρ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒΡΡ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° условиС Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ False.

do..intil loop

Do … intil Ρ†ΠΈΠΊΠ» Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ использован, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ Π½Π°Π±ΠΎΡ€ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², ΠΏΠΎΠΊΠ° условиС Π»ΠΎΠΆΠ½ΠΎ. УсловиС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΎ Π² Π½Π°Ρ‡Π°Π»Π΅ Ρ†ΠΈΠΊΠ»Π° ΠΈΠ»ΠΈ Π² ΠΊΠΎΠ½Ρ†Π΅ Ρ†ΠΈΠΊΠ»Π°.

Бинтаксис

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ синтаксис Ρ†ΠΈΠΊΠ»Π° Do..Until Π² VBA.

Do Until condition
   [statement 1]
   [statement 2]
   ...
   [statement n]
   [Exit Do]
   [statement 1]
   [statement 2]
   ...
   [statement n]
Loop    

Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° ΠΏΠΎΡ‚ΠΎΠΊΠ°

ΠΏΡ€ΠΈΠΌΠ΅Ρ€

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Do … Π”ΠΎ Ρ†ΠΈΠΊΠ»Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ условиС Π² Π½Π°Ρ‡Π°Π»Π΅ Ρ†ΠΈΠΊΠ»Π°. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли условиС Π»ΠΎΠΆΠ½ΠΎ. Он Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°, ΠΊΠΎΠ³Π΄Π° условиС становится истинным.

Private Sub Constant_demo_Click() 
   i = 10
   Do Until i>15  'Condition is False.Hence loop will be executed
      i = i + 1
      msgbox ("The value of i is : " & i)
   Loop 
End Sub

Когда выполняСтся Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΎΠ½ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π²ΠΎΠ΄ Π² ΠΎΠΊΠ½Π΅ сообщСния.

The value of i is : 11
The value of i is : 12
The value of i is : 13
The value of i is : 14
The value of i is : 15
The value of i is : 16

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ синтаксис

БущСствуСт Ρ‚Π°ΠΊΠΆΠ΅ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ синтаксис Do … Π”ΠΎ Ρ†ΠΈΠΊΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ провСряСт условиС Π² ΠΊΠΎΠ½Ρ†Π΅ Ρ†ΠΈΠΊΠ»Π°. ОсновноС Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ этими двумя синтаксисами ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ.

Do 
   [statement 1]
   [statement 2]
   ...
   [statement n]
   [Exit Do]
   [statement 1]
   [statement 2]
   ...
   [statement n]
Loop Until condition

Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° ΠΏΠΎΡ‚ΠΎΠΊΠ°

ΠΏΡ€ΠΈΠΌΠ΅Ρ€

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Do … Π”ΠΎ Ρ†ΠΈΠΊΠ»Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ условиС Π² ΠΊΠΎΠ½Ρ†Π΅ Ρ†ΠΈΠΊΠ»Π°. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, Π΄Π°ΠΆΠ΅ Ссли условиС Ρ€Π°Π²Π½ΠΎ True.

Private Sub Constant_demo_Click()  
   i = 10
   Do 
      i = i + 1
      msgbox "The value of i is : " & i
   Loop Until i more15 'Condition is True.Hence loop is executed once.
End Sub

Когда выполняСтся Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΎΠ½ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π²ΠΎΠ΄ Π² ΠΎΠΊΠ½Π΅ сообщСния.

The value of i is : 11

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ do..Until Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° условиС False. (Π’. Π•.) ΠŸΠ΅Ρ‚Π»Ρ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒΡΡ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° условиС Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ истинным.

Записи управлСния Ρ†ΠΈΠΊΠ»ΠΎΠΌ

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ управлСния Ρ†ΠΈΠΊΠ»ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ исполнСниС ΠΈΠ· своСй ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Когда Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΈΠ· области дСйствия, всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Ρ†ΠΈΠΊΠ»Π° Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ.

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠ΅ заявлСниС ΠΈ описаниС

Π’Ρ‹Ρ…ΠΎΠ΄ для ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°

Π’Ρ‹Ρ…ΠΎΠ΄ for ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ , ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ , Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· For Loop Π½Π° основС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅Π². Когда Exit For выполняСтся, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ сразу послС Ρ†ΠΈΠΊΠ»Π° For Loop.

Бинтаксис

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ синтаксис Exit For Statement Π² VBA.

Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° ΠΏΠΎΡ‚ΠΎΠΊΠ°

ΠΏΡ€ΠΈΠΌΠ΅Ρ€

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Exit For . Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счСтчика достигаСт 4, Ρ†ΠΈΠΊΠ» For Loop Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ, ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΡŽ сразу послС Ρ†ΠΈΠΊΠ»Π° For Loop.

Private Sub Constant_demo_Click()
   Dim a As Integer
   a = 10
   
   For i = 0 To a Step 2 'i is the counter variable and it is incremented by 2
      MsgBox ("The value is i is : " & i)
      If i = 4 Then
         i = i * 10 'This is executed only if i=4
         MsgBox ("The value is i is : " & i)
         Exit For 'Exited when i=4
      End If
   Next
End Sub

Когда Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ выполняСтся, ΠΎΠ½ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π²ΠΎΠ΄ Π² ΠΎΠΊΠ½Π΅ сообщСний.

The value is i is : 0
The value is i is : 2
The value is i is : 4
The value is i is : 40

Π—Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ†ΠΈΠΊΠ»Π° For ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ сразу послС Ρ†ΠΈΠΊΠ»Π°

Exit Do

Exit Do ЗаявлСниС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ , ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ , Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· Do Loops Π½Π° основС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅Π². Он ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ Π² Do Do … While, Ρ‚Π°ΠΊ ΠΈ Do … Π”ΠΎ Ρ†ΠΈΠΊΠ»ΠΎΠ².

Когда Exit Do выполняСтся, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ сразу послС Do Loop.

Бинтаксис

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ синтаксис выраТСния Exit Do Π² VBA.

ΠΏΡ€ΠΈΠΌΠ΅Ρ€

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Exit Do . Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счСтчика достигаСт 10, выходная линия Do Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ, ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ сразу послС Ρ†ΠΈΠΊΠ»Π° For Loop.

Private Sub Constant_demo_Click()
   i = 0
   Do While i <= 100
      If i > 10 Then
         Exit Do   ' Loop Exits if i>10
      End If
      MsgBox ("The Value of i is : " & i)
      i = i + 2
   Loop
End Sub

Когда выполняСтся Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΎΠ½ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π²ΠΎΠ΄ Π² ΠΎΠΊΠ½Π΅ сообщСния.

The Value of i is : 0
The Value of i is : 2
The Value of i is : 4
The Value of i is : 6
The Value of i is : 8
The Value of i is : 10

Π—Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Do While ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ сразу послС Ρ†ΠΈΠΊΠ»Π°

Β Π‘ ΡƒΠ²Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Π°Π²Ρ‚ΠΎΡ€Ρ‹ сайта ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°ΠΏΠΈΡ

ΠŸΠΎΠ½Ρ€Π°Π²ΠΈΠ»Π°ΡΡŒ ΡΡ‚Π°Ρ‚ΡŒΡ? ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚Π΅ΡΡŒ Сю с Π΄Ρ€ΡƒΠ·ΡŒΡΠΌΠΈ ΠΈ Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΎΡ‚Π·Ρ‹Π² Π² коммСнтариях!

Π¦ΠΈΠΊΠ»Ρ‹ VBA: for, while ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅

Π”ΠΎΠ±Ρ€ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ суток! Π”Π°Π½Π½ΡƒΡŽ ΡΡ‚Π°Ρ‚ΡŒΡŽ я Ρ€Π΅ΡˆΠΈΠ» ΠΏΠΎΡΠ²ΡΡ‚ΠΈΡ‚ΡŒ Ρ€ΡƒΠ±Ρ€ΠΈΠΊΠ΅ ΠΏΠΎ основам программирования Π² Visual Basic for Application. И сСгодня ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ Ρ†ΠΈΠΊΠ»Π°Ρ… Π² VBA, Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ ΠΈΡ… синтаксис ΠΈ рассмотрим нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ часто Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ программисту.

Π‘Π½Π°Ρ‡Π°Π»Π° напомню, Ρ‡Ρ‚ΠΎ Ρ†ΠΈΠΊΠ» β€” процСсс повторСния части ΠΊΠΎΠ΄Π°, выполняСмый, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ ΠΈΠ»ΠΈ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ Π½Π°ΠΌΠΈ условиС.

Π’ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ синтаксис ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ†ΠΈΠΊΠ»ΠΎΠ² Π² VBA:

Π¦ΠΈΠΊΠ» For Π² VBA

Π¦ΠΈΠΊΠ» for Π² VBA ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ Π·Π°Ρ†ΠΈΠΊΠ»ΠΈΠ²Π°Π½ΠΈΠΈ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΊΠΎΠ΄Π°, Ссли Π½Π°ΠΌ извСстно ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ counter β€” счСтчика, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΡ‹ Π²Ρ‹ΠΉΠ΄Π΅ΠΌ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°.
Π’ΠΎΠ·ΡŒΠΌΡ‘ΠΌ для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° самый распространённый ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

Π‘Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив ΠΈΠ· 5 Ρ†Π΅Π»Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ

Dim mas(5) As Integer
For i% = 0 To 4
    mas(i) = Int((10 * Rnd) + 1)
Next i

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ вашС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π² этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ нСявноС объявлСниС ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ Π² VBA. i% β€” ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ нСявноС объявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ i Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ integer. Вакая конструкция ΠΏΠΎ сути замСняСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ: dim i as integer. Π­Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для сокращСния ΠΊΠΎΠ΄Π° ΠΈ для удобства написания ΠΈ чтСния. Π’ старых вСрсиях VBA Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π·Π½Π°ΠΊ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° послС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ использования нСявной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Π’ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΠΈΡ… вСрсиях достаточно всСго ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·.

VBA для Ρ†ΠΈΠΊΠ»Π° for Π΄Π°Ρ‘Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Step. Как ясно ΠΈΠ· ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π°, это шаг, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ наш ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π». По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΎΠ½ Ρ€Π°Π²Π΅Π½ 1. ΠŸΠΎΠΏΡƒΠ»ΡΡ€Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ использования встрСчаСтся Π² случаях, ΠΊΠΎΠ³Π΄Π° counter связан с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°. НапримСр, ΠΏΡ€ΠΈ написании ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, связанных с функциями.

Найти пСрСсСчСниС Π³Ρ€Π°Ρ„ΠΈΠΊΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ y = 5*x + 5 с осью ΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚

Function expr(x As Integer) As Integer
    expr = 5 * x + 5
End Function
Sub CodeTown()
    Dim i As Integer
    For i = -10 To 10 Step 1
        If expr(i) = 0 Then MsgBox "ΠŸΡ€ΠΈ Y = 0, Π₯ = "+ CStr(i)
    Next i
End Sub

Π’Π΅ΠΏΠ΅Ρ€ΡŒ прСдставим, Ρ‡Ρ‚ΠΎ Ρƒ нас достаточно большой Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΈ ΠΌΡ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΠΌ Π·Π°ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ лишниС ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ. На этот случай сущСствуСт ΠΊΠΎΠΌΠ°Π½Π΄Π° Exit For. ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡˆΠ΅ΠΌ наш послСдний ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с Π½ΠΎΠ²ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ.

Function expr(x As Integer) As Integer
    expr = 5 * x + 5
End Function
Sub CodeTown()
    Dim i As Integer
    For i = -10 To 10 Step 1
        If expr(i) = 0 Then
            MsgBox "ΠŸΡ€ΠΈ Y = 0, Π₯ = "+ CStr(i)
            Exit For
        End If
    Next i
End Sub

C ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Exit ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ любого Ρ†ΠΈΠΊΠ»Π° Π² VBA. Достаточно ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ послС Exit Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°. Π’Π°ΠΊΠΆΠ΅ ΠΈΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ любой ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π¦ΠΈΠΊΠ» For Each Π² VBA

For Each Π² VBA основан Π½Π° ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π΅ всСх элСмСнтов, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π² массивС, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ ΠΈΠ»ΠΈ Π³Ρ€ΡƒΠΏΠΏΠ΅.
Π‘Π°ΠΌΡ‹ΠΉ популярный Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π΅Π³ΠΎ использования β€” ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ страниц Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ ΠΊΠ½ΠΈΠ³Π΅.

ВывСсти названия всСх листов Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ ΠΊΠ½ΠΈΠ³Π΅

For Each ws In ThisWorkbook.Worksheets
    MsgBox ws.Name
Next ws

И Π΅Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ интСрСсный ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΡˆΡ€ΠΈΡ„Ρ‚Π° ΠΈ Π²Ρ‹Ρ€Π°Π²Π½ΠΈΡ‚ΡŒ ΠΏΠΎ Ρ†Π΅Π½Ρ‚Ρ€Ρƒ тСкст Π² label

For Each element In UserForm1.Controls
    If InStr(1, UserForm1.Controls.Item(i%).Name, "Label") > 0 Then
        UserForm1.Controls.Item(i%).TextAlign = fmTextAlignCenter
        UserForm1.Controls.Item(i%).Font.Size = 20
        i% = i% + 1
    End If
Next element

Π’ΡƒΡ‚ слСдуСт ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‡Π΅Ρ€Π΅Π· Controls ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Π»ΡŽΠ±ΠΎΠΌΡƒ элСмСнту Ρ„ΠΎΡ€ΠΌΡ‹. Если ΠΎΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ°ΠΊ ΠΌΡ‹ сдСлали Π²Ρ‹ΡˆΠ΅, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Π³Ρ€ΡƒΠΏΠΏΡ‹ элСмСнтов ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΡ… свойства. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС, Ρ€Π°Π·ΠΌΠ΅Ρ€ ΡˆΡ€ΠΈΡ„Ρ‚Π° ΠΈ Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅.

Π¦ΠΈΠΊΠ» While Π² VBA

Π¦ΠΈΠΊΠ»Ρ‹ Π² VBA, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ структуру Do..Loop (это while ΠΈ until Ρ†ΠΈΠΊΠ»Ρ‹) ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ с Ρ€Π°Π·Π½Ρ‹ΠΌ располоТСниСм Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° условия. Как Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ΅ Π²Ρ‹ΡˆΠ΅, условиС ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒΡΡ послС выполнСния ΠΎΠ΄Π½ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ, Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄ запуском Ρ†ΠΈΠΊΠ»Π°.
Π‘Π°ΠΌΡ‹ΠΉ популярный ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

ΠžΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ сгСнСрированный массив ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠ°

Dim mas(5) As Integer
For i% = 0 To 4
    mas(i%) = Int((10 * Rnd) + 1)
Next i
Dim count As Integer, temp As Integer
count = 1
Do While count > 0
    count = 0
    For i% = 0 To 3
        If mas(i) > mas(i + 1) Then
            temp = mas(i)
            mas(i) = mas(i + 1)
            mas(i + 1) = temp
            count = count + 1
        End If
    Next i%
Loop

Π’ Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ отсортировали массив с Ρ€Π°Π½Π΄ΠΎΠΌΠ½Ρ‹ΠΌΠΈ значСниями Π² порядкС возрастания. ΠœΠ΅Ρ‚ΠΎΠ΄ ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠ° считаСтся достаточно Π΄ΠΎΠ»Π³ΠΈΠΌ, Π½ΠΎ простым Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π’ основном, ΠΈΠΌ ΡΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ нСбольшиС числовыС массивы.

Π¦ΠΈΠΊΠ» Until Π² VBA

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, отличия ΠΎΡ‚ while ΠΊΡ€Π°ΠΉΠ½Π΅ нСсущСствСнныС. Π¦ΠΈΠΊΠ» Until Π² VBA ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ конструкции while NOT (condition). Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΏΡ€ΠΈΠ²Π΅Π΄Ρƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

Π—Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ввСсти число

Dim temp As Variant
Do
    temp = InputBox("Π’Π²Π΅Π΄ΠΈΡ‚Π΅ число")
Loop Until IsNumeric(temp)

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ? ΠŸΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π·Π°ΠΊΡ€ΠΎΠ΅Ρ‚ ΠΎΠΊΠ½ΠΎ Π²Π²ΠΎΠ΄Π°, это Π΅Π³ΠΎ Π½Π΅ спасёт, ΠΎΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ вновь ΠΈ вновь ΠΏΠΎΠΊΠ° ΠΎΠ½ Π½Π΅ Π²Π²Π΅Π΄Ρ‘Ρ‚ любоС число.

На этом ΠΌΡ‹ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠΌ. БСгодня ΠΌΡ‹ рассмотрСли Π²Π°ΠΆΠ½ΡƒΡŽ Ρ‚Π΅ΠΌΡƒ Ρ†ΠΈΠΊΠ»ΠΎΠ² Π² VBA, Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π»ΠΈ основныС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ всС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΏΠΎ этой ΠΎΠ±ΡˆΠΈΡ€Π½ΠΎΠΉ Ρ‚Π΅ΠΌΠ΅ слоТно Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒ, Π½ΠΎ, Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, основы Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ. ΠžΡΡ‚Π°Π²Π»ΡΠΉΡ‚Π΅ ваши ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, Ссли Ρƒ вас Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΈ вопросы.
Π‘ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ исходник

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ ссылкой:

ΠŸΠΎΡ…ΠΎΠΆΠ΅Π΅

ИспользованиС Do… ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Loop (VBA)



  • Π§Ρ‚Π΅Π½ΠΈΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 2Β ΠΌΠΈΠ½

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Loop для выполнСния Π±Π»ΠΎΠΊΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ΅ число Ρ€Π°Π·.You can use Do…Loop statements to run a block of statements an indefinite number of times. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‚ΡΡ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° сохраняСтся условиС True, ΠΈΠ»ΠΈ ΠΏΠΎΠΊΠ° условиС Π½Π΅ станСт True.The statements are repeated either while a condition is True or until a condition becomes True.

ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, ΠΏΠΎΠΊΠ° условиС ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ trueRepeating statements while a condition is True

БущСствуСт Π΄Π²Π° способа использования ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова while для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ условия Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ Do… ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Loop .There are two ways to use the While keyword to check a condition in a Do…Loop statement. ΠŸΠ΅Ρ€Π΅Π΄ Π²Ρ…ΠΎΠ΄ΠΎΠΌ Π² Ρ†ΠΈΠΊΠ» ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ условиС ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π΅Π³ΠΎ послС запуска Ρ†ΠΈΠΊΠ»Π° хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·.You can check the condition before you enter the loop, or you can check it after the loop has run at least once.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ChkFirstWhile ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ…ΠΎΠ΄ΠΎΠΌ Π² Ρ†ΠΈΠΊΠ» провСряСтся условиС.In the following ChkFirstWhile procedure, you check the condition before you enter the loop. Если myNum Π·Π°Π΄Π°Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 9, Π° Π½Π΅ 20, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π² Ρ†ΠΈΠΊΠ»Π΅ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ.If myNum is set to 9 instead of 20, the statements inside the loop will never run. Π’ ChkLastWhile ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π² Ρ†ΠΈΠΊΠ»Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ условиС станСт Π»ΠΎΠΆΠ½Ρ‹ΠΌ.In the ChkLastWhile procedure, the statements inside the loop run only once before the condition becomes False.

Sub ChkFirstWhile() 
    counter = 0 
    myNum = 20 
    Do While myNum > 10 
        myNum = myNum - 1 
        counter = counter + 1 
    Loop 
    MsgBox "The loop made " & counter & " repetitions." 
End Sub 
 
Sub ChkLastWhile() 
    counter = 0 
    myNum = 9 
    Do 
        myNum = myNum - 1 
        counter = counter + 1 
    Loop While myNum > 10 
    MsgBox "The loop made " & counter & " repetitions." 
End Sub

ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° условиС Π½Π΅ станСт истиннымRepeating statements until a condition becomes True

БущСствуСт Π΄Π²Π° способа использования ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова Until для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ условия Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ Do…Loop.There are two ways to use the Until keyword to check a condition in a Do…Loop statement. ΠŸΠ΅Ρ€Π΅Π΄ Π²Ρ…ΠΎΠ΄ΠΎΠΌ Π² Ρ†ΠΈΠΊΠ» (ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ChkFirstUntil ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅) ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ условиС (ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅) ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π΅Π³ΠΎ послС выполнСния Ρ†ΠΈΠΊΠ»Π° ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· (ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ChkLastUntil ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅).You can check the condition before you enter the loop (as shown in the ChkFirstUntil procedure), or you can check it after the loop has run at least once (as shown in the ChkLastUntil procedure). ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»ΠΎΠ² продолТаСтся, ΠΏΠΎΠΊΠ° сохраняСтся условиС False.Looping continues while the condition remains False.

Sub ChkFirstUntil() 
    counter = 0 
    myNum = 20 
    Do Until myNum = 10 
        myNum = myNum - 1 
        counter = counter + 1 
    Loop 
    MsgBox "The loop made " & counter & " repetitions." 
End Sub 
 
Sub ChkLastUntil() 
    counter = 0 
    myNum = 1 
    Do 
        myNum = myNum + 1 
        counter = counter + 1 
    Loop Until myNum = 10 
    MsgBox "The loop made " & counter & " repetitions." 
End Sub

Π’Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Do… ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Loop Π² Ρ†ΠΈΠΊΠ»Π΅Exiting a Do…Loop statement from inside the loop

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Do… Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ Ρ†ΠΈΠΊΠ» с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Exit Do .You can exit a Do…Loop by using the Exit Do statement. НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· бСсконСчного Ρ†ΠΈΠΊΠ»Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Exit Do Π² Π±Π»ΠΎΠΊΠ΅ истинного ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° If… Then… ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ else ΠΈΠ»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Select Case .For example, to exit an endless loop, use the Exit Do statement in the True statement block of either an If…Then…Else statement or a Select Case statement. Если условиС Π±ΡƒΠ΄Π΅Ρ‚ False, Ρ†ΠΈΠΊΠ» запустится ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.If the condition is False, the loop will run as usual.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ myNum присваиваСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ создаСт бСсконСчный Ρ†ΠΈΠΊΠ».In the following example myNum is assigned a value that creates an endless loop. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ If…Then…Else провСряСт это условиС, Π° Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΈΠ· бСсконСчного Ρ†ΠΈΠΊΠ»Π°.The If…Then…Else statement checks for this condition, and then exits, preventing endless looping.

Sub ExitExample() 
    counter = 0 
    myNum = 9 
    Do Until myNum = 10 
        myNum = myNum - 1 
        counter = counter + 1 
        If myNum < 10 Then Exit Do 
    Loop 
    MsgBox "The loop made " & counter & " repetitions." 
End Sub

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ бСсконСчный Ρ†ΠΈΠΊΠ», Π½Π°ΠΆΠΌΠΈΡ‚Π΅ клавиши ESC ΠΈΠ»ΠΈ CTRL+BREAK.To stop an endless loop, press ESC or CTRL+BREAK.

Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅See also

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΈ обратная связьSupport and feedback

Π•ΡΡ‚ΡŒ вопросы ΠΈΠ»ΠΈ ΠΎΡ‚Π·Ρ‹Π²Ρ‹, ΠΊΠ°ΡΠ°ΡŽΡ‰ΠΈΠ΅ΡΡ Office VBA ΠΈΠ»ΠΈ этой ΡΡ‚Π°Ρ‚ΡŒΠΈ?Have questions or feedback about Office VBA or this documentation? Руководство ΠΏΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠΌ способам получСния ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΠΎΡ‚Π·Ρ‹Π²ΠΎΠ² см. Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Office VBA ΠΈ обратная связь.Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.



For Next, Do While, Do until, For Each (с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ)

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΎΡ‚Π΄Π°Ρ‡Ρƒ ΠΎΡ‚ Excel ΠΈ VBA, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ эффСктивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»Ρ‹.

Π’ VBA Ρ†ΠΈΠΊΠ»Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Π½Π°Π±ΠΎΡ€ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² / Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΎΠ΄ΠΈΠ½ Π·Π° Π΄Ρ€ΡƒΠ³ΠΈΠΌ. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°.

Π’ΠΎΡ‚ простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования Ρ†ΠΈΠΊΠ»ΠΎΠ² VBA Π² Excel.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρƒ вас Π΅ΡΡ‚ΡŒ Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ всС ячСйки Π² Ρ‡Π΅Ρ‚Π½Ρ‹Π΅ строки. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» VBA для просмотра Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΈ Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π½ΠΎΠΌΠ΅Ρ€Π° строки ячСйки.Если ΠΎΠ½ окаТСтся Ρ€ΠΎΠ²Π½Ρ‹ΠΌ, Π²Ρ‹ Π΄Π°Π΄ΠΈΡ‚Π΅ Π΅ΠΌΡƒ Ρ†Π²Π΅Ρ‚, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΊΠ°ΠΊ Π΅ΡΡ‚ΡŒ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΎΡ‡Π΅Π½ΡŒ просто Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ†ΠΈΠΊΠ» Π² Excel VBA (ΠΈ Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ условного форматирования).

Π’ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π³ΠΎΡ€Π°Π·Π΄ΠΎ большС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»ΠΎΠ² VBA Π² Excel, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π²Π°ΠΌ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°Π΄Π°Ρ‡ΠΈ.

Π’ΠΎΡ‚ Π΅Ρ‰Π΅ нСсколько практичСских ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², Π³Π΄Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ Ρ†ΠΈΠΊΠ»Ρ‹ VBA:

  • Π¦ΠΈΠΊΠ» ΠΏΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρƒ ячССк ΠΈ Π°Π½Π°Π»ΠΈΠ· ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ячСйки (Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚Π΅ ячСйки с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ тСкстом Π² Π½Π΅ΠΌ).
  • ΠŸΠ΅Ρ€Π΅Π±Ρ€Π°Ρ‚ΡŒ всС Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ листы ΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ / ΡΠ½ΡΡ‚ΡŒ Π·Π°Ρ‰ΠΈΡ‚Ρƒ).
  • ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ всС ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ ΠΊΠ½ΠΈΠ³ΠΈ (ΠΈ сохранитС ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΊΠ½ΠΈΠ³Ρƒ ΠΈΠ»ΠΈ Π·Π°ΠΊΡ€ΠΎΠΉΡ‚Π΅ всС, ΠΊΡ€ΠΎΠΌΠ΅ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ).
  • ΠŸΠ΅Ρ€Π΅Π±Ρ€Π°Ρ‚ΡŒ всС символы Π² ячСйкС (ΠΈ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ Ρ‡ΠΈΡΠ»ΠΎΠ²ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΈΠ· строки).
  • ΠŸΠ΅Ρ€Π΅Π±Ρ€Π°Ρ‚ΡŒ всС значСния Π² массивС.
  • ΠŸΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΈΡ‚Π΅ всС Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹ / ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ (ΠΈ Π·Π°Π΄Π°ΠΉΡ‚Π΅ Ρ€Π°ΠΌΠΊΡƒ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ Ρ†Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π°).

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ всСго ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»Ρ‹ Π² Excel VBA, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ‚ΠΈΠΏΠ°Ρ… ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ синтаксисС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ….

Π’ этом руководствС я ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Ρ†ΠΈΠΊΠ»ΠΎΠ² Excel VBA ΠΈ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€ΡŽ нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΉ ΡƒΡ‡Π΅Π±Π½ΠΈΠΊ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ я ΠΏΠΎΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ ΠΎΡ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» VBA Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄Π΅Ρ‚Π°Π»ΡŒ. Π― Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ Π²Π°ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ эту страницу Π² Π·Π°ΠΊΠ»Π°Π΄ΠΊΠΈ для дальнСйшСго использования.

Если Π²Ρ‹ заинтСрСсованы Π² ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ VBA простым способом, ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с ΠΌΠΎΠΈΠΌ курсом Online Excel VBA Training .

Для ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ†ΠΈΠΊΠ»Π°

Π¦ΠΈΠΊΠ» «Для ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎΒ» позволяСт Π²Π°ΠΌ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ количСство Ρ€Π°Π·.

НапримСр, Ссли я ΠΏΡ€ΠΎΡˆΡƒ вас ΡΠ»ΠΎΠΆΠΈΡ‚ΡŒ Ρ†Π΅Π»Ρ‹Π΅ числа ΠΎΡ‚ 1 Π΄ΠΎ 10 Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠ»ΠΎΠΆΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π° числа, Π·Π°Ρ‚Π΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ число ΠΊ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ, Π·Π°Ρ‚Π΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΠΎΠ΅ число ΠΊ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ, ΠΈ Ρ‚. Π”.

НС ΠΏΡ€Π°Π²Π΄Π° Π»ΠΈ?

Π’Π° ΠΆΠ΅ Π»ΠΎΠ³ΠΈΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Ρ†ΠΈΠΊΠ»Π΅ For Next Π² VBA.

Π’Ρ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅, сколько Ρ€Π°Π· Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ†ΠΈΠΊΠ» запускался, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠ΄ выполнял ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΏΡ€ΠΈ запускС Ρ†ΠΈΠΊΠ»Π°.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ синтаксис Ρ†ΠΈΠΊΠ»Π° For Next:

 For Counter = Start To End [Step Value]
[Π‘Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° для выполнСния]
Next [counter] 

Π’ Ρ†ΠΈΠΊΠ»Π΅ For Next Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ счСтчик (ΠΈΠ»ΠΈ Π»ΡŽΠ±ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для запуска Ρ†ΠΈΠΊΠ»Π°.Π­Ρ‚ΠΎΡ‚ счСтчик позволяСт Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ этот Ρ†ΠΈΠΊΠ» Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ количСство Ρ€Π°Π·.

НапримСр, Ссли я Ρ…ΠΎΡ‡Ρƒ ΡΠ»ΠΎΠΆΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ 10 ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ†Π΅Π»Ρ‹Ρ… чисСл, Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ΅Π³ΠΎ счСтчика Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ 1 Π΄ΠΎ 10.

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ†ΠΈΠΊΠ» For Next.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1 — Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… 10 ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ†Π΅Π»Ρ‹Ρ… чисСл

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ 10 ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ†Π΅Π»Ρ‹Ρ… чисСл с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π° For Next.

Π—Π°Ρ‚Π΅ΠΌ отобразится ΠΎΠΊΠ½ΠΎ сообщСния, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅ сумму этих чисСл.

 Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π½ΠΎΠΌΠ΅Ρ€Π° ()
Вусклый ΠΈΡ‚ΠΎΠ³ ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число
Вусклый счСт ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число
Π˜Ρ‚ΠΎΠ³ΠΎ = 0
Для количСства = ΠΎΡ‚ 1 Π΄ΠΎ 10
Π˜Ρ‚ΠΎΠ³ΠΎ = Π˜Ρ‚ΠΎΠ³ΠΎ + ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ
Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ счСт
MsgBox Π˜Ρ‚ΠΎΠ³ΠΎ
End Sub 

Π’ этом ΠΊΠΎΠ΄Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Total устанавливаСтся Π² 0 ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠΌ Π² Ρ†ΠΈΠΊΠ» For Next.

Попав Π² Ρ†ΠΈΠΊΠ», ΠΎΠ½ сохраняСт ΠΎΠ±Ρ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ послС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, послС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°, ΠΊΠΎΠ³Π΄Π° счСтчик Ρ€Π°Π²Π΅Π½ 1, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Β«TotalΒ» становится Ρ€Π°Π²Π½Ρ‹ΠΌ 1, Π° послС Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° ΠΎΠ½ΠΎ становится Ρ€Π°Π²Π½Ρ‹ΠΌ 3 (1 + 2), ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

И, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, ΠΏΠΎ ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π° пСрСмСнная Total содСрТит сумму ΠΏΠ΅Ρ€Π²Ρ‹Ρ… 10 ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ†Π΅Π»Ρ‹Ρ… чисСл.

Π—Π°Ρ‚Π΅ΠΌ MsgBox просто ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² ΠΎΠΊΠ½Π΅ сообщСния.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2 — Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… 5 Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ†Π΅Π»Ρ‹Ρ… чисСл

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΡƒΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΏΡΡ‚ΡŒ Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ†Π΅Π»Ρ‹Ρ… чисСл (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 2,4,6,8 ΠΈ 10), Π²Π°ΠΌ понадобится Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ с условиСм, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ‚Π½Ρ‹Π΅ Ρ†Π΅Π»Ρ‹Π΅ числа. числа ΠΈ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹Π΅ числа.

Π’ΠΎΡ‚ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ это сдСлаСт:

 Sub AddEvenNumbers ()
Вусклый ΠΈΡ‚ΠΎΠ³ ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число
Вусклый счСт ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число
Π˜Ρ‚ΠΎΠ³ΠΎ = 0
Для Count = ΠΎΡ‚ 2 Π΄ΠΎ 10 Π¨Π°Π³ 2
Π˜Ρ‚ΠΎΠ³ΠΎ = Π˜Ρ‚ΠΎΠ³ΠΎ + ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ
Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ счСт
MsgBox Π˜Ρ‚ΠΎΠ³ΠΎ
End Sub 

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π°Ρ‡Π°Π»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Count с 2 ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ использовали Β« Step 2 Β».

Когда Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Β«Step 2Β» , ΠΎΠ½ сообщаСт ΠΊΠΎΠ΄Ρƒ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Β«CountΒ» Π½Π° 2 ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ запускС Ρ†ΠΈΠΊΠ»Π°.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счСтчика начинаСтся с 2, Π° Π·Π°Ρ‚Π΅ΠΌ становится 4, 6, 8 ΠΈ 10 ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ возникновСния Ρ†ΠΈΠΊΠ»Π°.

ΠŸΠ Π˜ΠœΠ•Π§ΠΠΠ˜Π•. Π”Ρ€ΡƒΠ³ΠΎΠΉ способ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это — Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ†ΠΈΠΊΠ» ΠΎΡ‚ 1 Π΄ΠΎ 10 ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Ρ‡Π΅Ρ‚Π½ΠΎΠ΅ ΠΈΠ»ΠΈ Π½Π΅Ρ‡Π΅Ρ‚Π½ΠΎΠ΅ число. Однако использованиС Step Π² этом случаС являСтся Π±ΠΎΠ»Π΅Π΅ эффСктивным способом, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ†ΠΈΠΊΠ» выполнялся 10 Ρ€Π°Π·, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 5 Ρ€Π°Π·.

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ шага Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС счСтчик начинаСтся с Π±ΠΎΠ»Π΅Π΅ высокого значСния ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒΡΡ Π½Π° ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ шага.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 3 — Π’Π²ΠΎΠ΄ сСрийного Π½ΠΎΠΌΠ΅Ρ€Π° Π² Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Π΅ ячСйки

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» For Next для просмотра ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² (Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ячСйки, Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ листы ΠΈΠ»ΠΈ ΠΊΠ½ΠΈΠ³ΠΈ),

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ быстро Π²Π²ΠΎΠ΄ΠΈΡ‚ сСрийныС Π½ΠΎΠΌΠ΅Ρ€Π° Π²ΠΎ всСх Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Ρ… ячСйках.

 Sub EnterSerialNumber ()
Dim Rng As Range
Вусклый счСтчик ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число
Dim RowCount ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число
Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Rng = Π’Ρ‹Π±ΠΎΡ€
RowCount = Rng.Rows.Count
Для счСтчика = 1 Π΄ΠΎ RowCount
ActiveCell.Offset (Π‘Ρ‡Π΅Ρ‚Ρ‡ΠΈΠΊ - 1, 0). Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = Π‘Ρ‡Π΅Ρ‚Ρ‡ΠΈΠΊ
Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ счСтчик
End Sub 

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄ сначала подсчитываСт количСство Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Ρ… строк, Π° Π·Π°Ρ‚Π΅ΠΌ присваиваСт это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ RowCount. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ запускаСм Ρ†ΠΈΠΊΠ» ΠΎΡ‚ Β«1 Π΄ΠΎ RowCountΒ».

Π’Π°ΠΊΠΆΠ΅ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹ΠΌ количСством строк, ΠΌΡ‹ установили для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Rng Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Selection (со строкой Β«Set Rng = SelectionΒ»). Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Β«RngΒ» для ссылки Π½Π° Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π² нашСм ΠΊΠΎΠ΄Π΅.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 4 — Π—Π°Ρ‰ΠΈΡ‚Π° всСх Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… листов Π² Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» «Для ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎΒ», Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ всС Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ листы Π² Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅ ΠΈ Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ (ΠΈΠ»ΠΈ ΡΠ½ΡΡ‚ΡŒ Π·Π°Ρ‰ΠΈΡ‚Ρƒ) ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… листов.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сдСлаСт это:

 Sub ProtectWorksheets ()
Dim i ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число
Для i = 1 Π’ ActiveWorkbook.Worksheets.Count
Π Π°Π±ΠΎΡ‡ΠΈΠ΅ листы (i) .Protect
Π”Π°Π»Π΅Π΅ я
End Sub 

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄ подсчитываСт количСство листов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ActiveWorkbook.Π Π°Π±ΠΎΡ‡ΠΈΠ΅ листы.Π‘Ρ‡Π΅Ρ‚. Π­Ρ‚ΠΎ сообщаСт VBA, сколько Ρ€Π°Π· Ρ†ΠΈΠΊΠ» Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ.

Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ случаС ΠΎΠ½ обращаСтся ΠΊ I-ΠΉ ΠΊΠ½ΠΈΠ³Π΅ (с использованиСм Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… листов (i)) ΠΈ Π·Π°Ρ‰ΠΈΡ‰Π°Π΅Ρ‚ Π΅Π΅.

Π­Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ для снятия Π·Π°Ρ‰ΠΈΡ‚Ρ‹ с листов. ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ строку Worksheets (i) .Protect to Worksheets (i) .UnProtect .

Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ†ΠΈΠΊΠ»Ρ‹ Β«For NextΒ»

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ†ΠΈΠΊΠ»Ρ‹ Β«For NextΒ», Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡƒΡŽ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΡŽ Π² Excel. Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» Β«For NextΒ» Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² Ρ†ΠΈΠΊΠ»Π΅ Β«For NextΒ» Π΅ΡΡ‚ΡŒ Ρ†ΠΈΠΊΠ» Β«For NextΒ».

ΠŸΠΎΠ·Π²ΠΎΠ»ΡŒΡ‚Π΅ ΠΌΠ½Π΅ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Π°ΠΌ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ это Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π² ΠΌΠΎΠ΅ΠΉ систСмС ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎ 5 Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… ΠΊΠ½ΠΈΠ³, ΠΈ я Ρ…ΠΎΡ‡Ρƒ Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ всС Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ листы Π²ΠΎ всСх этих ΠΊΠ½ΠΈΠ³Π°Ρ….

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сдСлаСт это:

 Sub ProtectWorksheets ()
Dim i ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число
Dim j ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число
Для i = 1 To Workbooks.Count
Для j = 1 To Workbooks (i) .Worksheets.Count
Π Π°Π±ΠΎΡ‡ΠΈΠ΅ Ρ‚Π΅Ρ‚Ρ€Π°Π΄ΠΈ (i). Π Π°Π±ΠΎΡ‡ΠΈΠ΅ листы (j) .Protect
Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ j
Π”Π°Π»Π΅Π΅ я
End Sub 

Π­Ρ‚ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» For Next, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ использовали ΠΎΠ΄ΠΈΠ½ Ρ†ΠΈΠΊΠ» For Next Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ EXIT For Π² Ρ†ΠΈΠΊΠ»Π°Ρ… For Next

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Exit For ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° For Next.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ†ΠΈΠΊΠ» For Next Π·Π°Π²Π΅Ρ€ΡˆΠ°Π»ΡΡ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ условия.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠ³Π΄Π° Ρƒ вас Π΅ΡΡ‚ΡŒ Π½Π°Π±ΠΎΡ€ чисСл Π² столбцС A, ΠΈ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ всС ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ числа красным ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠΌ. Π’ этом случаС Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ячСйку Π½Π° ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ Π΅Π΅ значСния, Π° Π·Π°Ρ‚Π΅ΠΌ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ†Π²Π΅Ρ‚ ΡˆΡ€ΠΈΡ„Ρ‚Π°.

Но Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠ΄ Π±Ρ‹Π» Π±ΠΎΠ»Π΅Π΅ эффСктивным, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ сначала ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Π΅ΡΡ‚ΡŒ Π»ΠΈ Π² спискС ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ значСния.Если Π½Π΅Ρ‚ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Exit For, Ρ‡Ρ‚ΠΎΠ±Ρ‹ просто Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· ΠΊΠΎΠ΄Π°.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π΅Π»Π°Π΅Ρ‚ это:

 Sub HghlightNegative ()
Dim Rng As Range
Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Rng = Range ("A1", Range ("A1"). End (xlDown))
Counter = Rng.Count
Для i = 1 счСтчик
Если WorksheetFunction.Min (Rng)> = 0, Ρ‚ΠΎΠ³Π΄Π° Π²Ρ‹ΠΉΡ‚ΠΈ для
Если Rng (i) .Value <0, Ρ‚ΠΎ Rng (i) .Font.Color = vbRed
Π”Π°Π»Π΅Π΅ я
End Sub 

Когда Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Exit For Π²ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π΅ For Next, ΠΎΠ½ Π²Ρ‹ΠΉΠ΄Π΅Ρ‚ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ выполняСтся, ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ строки Π² ΠΊΠΎΠ΄Π΅ послС Ρ†ΠΈΠΊΠ»Π° For Next. .

НапримСр, Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠ΄Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Β«Exit ForΒ» Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ вас ΠΈΠ· Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ Ρ†ΠΈΠΊΠ»Π°, Π½ΠΎ внСшний Ρ†ΠΈΠΊΠ» ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ.

 Sub SampleCode ()
Для i = ΠΎΡ‚ 1 Π΄ΠΎ 10
Для j = ΠΎΡ‚ 1 Π΄ΠΎ 10
Π’Ρ‹Ρ…ΠΎΠ΄ для
Π”Π°Π»Π΅Π΅ J
Π”Π°Π»Π΅Π΅ я
End Sub 

Π¦ΠΈΠΊΠ» Do While

Π¦ΠΈΠΊΠ» Β«Do WhileΒ» позволяСт ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ условия ΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ», ΠΏΠΎΠΊΠ° это условиС выполняСтся (ΠΈΠ»ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ИБВИНА).

Π’ Ρ†ΠΈΠΊΠ»Π΅ Do While Loop Π΅ΡΡ‚ΡŒ Π΄Π²Π° Ρ‚ΠΈΠΏΠ° синтаксиса.

 Do [Пока условиС]
[Π‘Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° для выполнСния]
ΠŸΠ΅Ρ‚Π»Ρ 

ΠΈ

 Do
[Π‘Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° для выполнСния]
Π¦ΠΈΠΊΠ» [условиС while] 

Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ этими двумя состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ случаС сначала провСряСтся условиС «Пока» ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ любого Π±Π»ΠΎΠΊΠ° ΠΊΠΎΠ΄Π°, Π° Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ случаС сначала выполняСтся Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π°, Π° Π·Π°Ρ‚Π΅ΠΌ провСряСтся условиС «Пока». .

Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ссли условиС «Пока» ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Β«Π›ΠΎΠΆΡŒΒ» Π² ΠΎΠ±ΠΎΠΈΡ… случаях, ΠΊΠΎΠ΄ всС Ρ€Π°Π²Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ случаС (ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ условиС «Пока» провСряСтся послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ Π±Ρ‹Π» Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·).

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² использования Ρ†ΠΈΠΊΠ»ΠΎΠ² Do While Π² VBA.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… 10 ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ†Π΅Π»Ρ‹Ρ… чисСл с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ VBA

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π΅ΡΡΡ‚ΡŒ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ†Π΅Π»Ρ‹Ρ… чисСл с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π° Do While Π² VBA.

Для этого Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» Do While, ΠΏΠΎΠΊΠ° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ число Π½Π΅ станСт мСньшС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ 10.Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ число станСт большС 1o, ваш Ρ†ΠΈΠΊΠ» остановится.

Π’ΠΎΡ‚ ΠΊΠΎΠ΄ VBA, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ запустит этот Ρ†ΠΈΠΊΠ» Do While ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² ΠΎΠΊΠ½Π΅ сообщСния.

 Sub AddFirst10PositiveIntegers ()
Dim i ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число
я = 1
Π”Π΅Π»Π°ΡŽ ΠΏΠΎΠΊΠ° я <= 10
Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ + i
я = я + 1
ΠŸΠ΅Ρ‚Π»Ρ
Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ MsgBox
End Sub 

Π’Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Β«iΒ» Π½Π΅ станСт 11. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ½ΠΎ станСт Ρ€Π°Π²Π½Ρ‹ΠΌ 11, Ρ†ΠΈΠΊΠ» Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ (ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ условиС While становится Π»ΠΎΠΆΠ½Ρ‹ΠΌ).

Π’Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° ΠΌΡ‹ использовали ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Result, которая содСрТит ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ПослС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ†ΠΈΠΊΠ»Π° Π² ΠΎΠΊΠ½Π΅ сообщСния отобраТаСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Β«ResultΒ».

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2 - Π’Π²ΠΎΠ΄ Π΄Π°Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ мСсяца

Допустим, Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ввСсти всС Π΄Π°Ρ‚Ρ‹ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ мСсяца Π² столбСц Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ листа.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Ρ†ΠΈΠΊΠ»Π° Do While:

 Sub EnterCurrentMonthDates ()
Π—Π°Ρ‚Π΅ΠΌΠ½ΠΈΡ‚ΡŒ CMDate ΠΊΠ°ΠΊ Π΄Π°Ρ‚Ρƒ
Dim i ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число
я = 0
CMDate = DateSerial (Π“ΠΎΠ΄ (Π”Π°Ρ‚Π°), ΠœΠ΅ΡΡΡ† (Π”Π°Ρ‚Π°), 1)
ΠœΠ΅ΡΡΡ† (CMDate) = ΠœΠ΅ΡΡΡ† (Π”Π°Ρ‚Π°)
Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ («А1Β»).Π‘ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ (i, 0) = CMDate
я = я + 1
CMDate = CMDate + 1
ΠŸΠ΅Ρ‚Π»Ρ
End Sub 

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄ Π²Π²ΠΎΠ΄ΠΈΡ‚ всС Π΄Π°Ρ‚Ρ‹ Π² ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ столбСц Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ листа (начиная с A1). Π¦ΠΈΠΊΠ»Ρ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‚ΡΡ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ мСсяца Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ CMDate Π½Π΅ совпадСт со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ мСсяца.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Exit Do

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Exit Do, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ΄ выполняСт строку Β«Exit DoΒ», ΠΎΠ½ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° Do While ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ строкС сразу послС Ρ†ΠΈΠΊΠ»Π°.

НапримСр, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ввСсти Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ 10 Π΄Π°Ρ‚, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±ΡƒΠ΄ΡƒΡ‚ Π²Π²Π΅Π΄Π΅Π½Ρ‹ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ 10 Π΄Π°Ρ‚.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ сдСлаСт это:

 Sub EnterCurrentMonthDates ()
Π—Π°Ρ‚Π΅ΠΌΠ½ΠΈΡ‚ΡŒ CMDate ΠΊΠ°ΠΊ Π΄Π°Ρ‚Ρƒ
Dim i ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число
я = 0
CMDate = DateSerial (Π“ΠΎΠ΄ (Π”Π°Ρ‚Π°), ΠœΠ΅ΡΡΡ† (Π”Π°Ρ‚Π°), 1)
ΠœΠ΅ΡΡΡ† (CMDate) = ΠœΠ΅ΡΡΡ† (Π”Π°Ρ‚Π°)
Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ("A1"). Π‘ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ (i, 0) = CMDate
я = я + 1
Если i> = 10, Ρ‚ΠΎ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· Do
CMDate = CMDate + 1
ΠŸΠ΅Ρ‚Π»Ρ
End Sub 

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ IF ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, большС Π»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ i 10 ΠΈΠ»ΠΈ Π½Π΅Ρ‚.Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Β«iΒ» становится Ρ€Π°Π²Π½Ρ‹ΠΌ 10, выполняСтся инструкция Exit Do ΠΈ Ρ†ΠΈΠΊΠ» Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ.

Π¦ΠΈΠΊΠ» Β«Π”ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ°Β»

Π¦ΠΈΠΊΠ» Β«Π”ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ°Β» ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° Ρ†ΠΈΠΊΠ»Ρ‹ Β«Π”ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ°Β».

Π’ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Β«Do WhileΒ» Ρ†ΠΈΠΊΠ» выполняСтся Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ условиС, Π° Π² Β«Do WhileΒ» - Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ условиС.

Π’ Ρ†ΠΈΠΊΠ»Π΅ Β«Π”ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ°Β» Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π΄Π²Π° Ρ‚ΠΈΠΏΠ° синтаксиса.

 Do [Π”ΠΎ условия]
[Π‘Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° для выполнСния]
ΠŸΠ΅Ρ‚Π»Ρ 

ΠΈ

 Do
[Π‘Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° для выполнСния]
Π¦ΠΈΠΊΠ» [условиС Π΄ΠΎ] 

Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ этими двумя состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ сначала провСряСтся условиС «Пока» Π΄ΠΎ выполнСния любого Π±Π»ΠΎΠΊΠ° ΠΊΠΎΠ΄Π°, Π° Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ случаС сначала выполняСтся Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π°, Π° Π·Π°Ρ‚Π΅ΠΌ провСряСтся условиС «Пока». .

Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ссли условиС «Пока» ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ИБВИНА Π² ΠΎΠ±ΠΎΠΈΡ… случаях, ΠΊΠΎΠ΄ всС Ρ€Π°Π²Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ случаС (ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ условиС «Пока» провСряСтся послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ Π±Ρ‹Π» Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·).

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² использования Ρ†ΠΈΠΊΠ»ΠΎΠ² Do until Π² VBA.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. ВсС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ для Do While Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ для Do While. Они Π±Ρ‹Π»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Π°ΠΌ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ†ΠΈΠΊΠ» Do until.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… 10 ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ†Π΅Π»Ρ‹Ρ… чисСл с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ VBA.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π΅ΡΡΡ‚ΡŒ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ†Π΅Π»Ρ‹Ρ… чисСл с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π° Β«Π”ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€Β» Π² VBA.

Для этого Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ число Π½Π΅ станСт мСньшС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ 10. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ число станСт большС 1o, ваш Ρ†ΠΈΠΊΠ» остановится.

Π’ΠΎΡ‚ ΠΊΠΎΠ΄ VBA, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ запустит этот Ρ†ΠΈΠΊΠ» ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² ΠΎΠΊΠ½Π΅ сообщСния.

 Sub AddFirst10PositiveIntegers ()
Dim i ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число
я = 1
Π”ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° я> 10
Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ + i
я = я + 1
ΠŸΠ΅Ρ‚Π»Ρ
Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ MsgBox
End Sub 

Π’Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Β«iΒ» Π½Π΅ станСт Ρ€Π°Π²Π½Ρ‹ΠΌ 11.Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ½ΠΎ становится Ρ€Π°Π²Π½Ρ‹ΠΌ 11, Ρ†ΠΈΠΊΠ» Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ (ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ условиС Β«Π”ΠΎΒ» становится истинным).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2 - Π’Π²ΠΎΠ΄ Π΄Π°Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ мСсяца

Допустим, Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ввСсти всС Π΄Π°Ρ‚Ρ‹ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ мСсяца Π² столбСц Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ листа.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Ρ†ΠΈΠΊΠ»Π° Β«Π”ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ°Β»:

 Sub EnterCurrentMonthDates ()
Π—Π°Ρ‚Π΅ΠΌΠ½ΠΈΡ‚ΡŒ CMDate ΠΊΠ°ΠΊ Π΄Π°Ρ‚Ρƒ
Dim i ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число
я = 0
CMDate = DateSerial (Π“ΠΎΠ΄ (Π”Π°Ρ‚Π°), ΠœΠ΅ΡΡΡ† (Π”Π°Ρ‚Π°), 1)
Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ Π΄ΠΎ мСсяца (CMDate) <> Month (Date)
Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ («А1Β»).Π‘ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ (i, 0) = CMDate
я = я + 1
CMDate = CMDate + 1
ΠŸΠ΅Ρ‚Π»Ρ
End Sub 

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄ Π²Π²ΠΎΠ΄ΠΈΡ‚ всС Π΄Π°Ρ‚Ρ‹ Π² ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ столбСц Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ листа (начиная с A1). Π¦ΠΈΠΊΠ» продолТаСтся Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠœΠ΅ΡΡΡ† ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ CMDate Π½Π΅ станСт Ρ€Π°Π²Π½Ρ‹ΠΌ ΠœΠ΅ΡΡΡ†Ρƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ мСсяца.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Exit Do

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Exit Do, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°.

Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ΄ выполняСт строку Β«Exit DoΒ», ΠΎΠ½ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° Do until ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ строкС сразу послС Ρ†ΠΈΠΊΠ»Π°.

НапримСр, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ввСсти Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ 10 Π΄Π°Ρ‚, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±ΡƒΠ΄ΡƒΡ‚ Π²Π²Π΅Π΄Π΅Π½Ρ‹ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ 10 Π΄Π°Ρ‚.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ сдСлаСт это:

 Sub EnterCurrentMonthDates ()
Π—Π°Ρ‚Π΅ΠΌΠ½ΠΈΡ‚ΡŒ CMDate ΠΊΠ°ΠΊ Π΄Π°Ρ‚Ρƒ
Dim i ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число
я = 0
CMDate = DateSerial (Π“ΠΎΠ΄ (Π”Π°Ρ‚Π°), ΠœΠ΅ΡΡΡ† (Π”Π°Ρ‚Π°), 1)
Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ Π΄ΠΎ мСсяца (CMDate) <> Month (Date)
Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ("A1"). Π‘ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ (i, 0) = CMDate
я = я + 1
Если i> = 10, Ρ‚ΠΎ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· Do
CMDate = CMDate + 1
ΠŸΠ΅Ρ‚Π»Ρ
End Sub 

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π΅, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Β«iΒ» становится 10, выполняСтся статус Exit Do ΠΈ Ρ†ΠΈΠΊΠ» Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ.

For Each

Π’ VBA Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‡ΠΈΠ²Π°Ρ‚ΡŒ Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ†ΠΈΠΊΠ» Β«For EachΒ».

Π’ΠΎΡ‚ нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ Π² Excel VBA:

  • ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡ всСх ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… ΠΊΠ½ΠΈΠ³.
  • ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡ всСх листов Π² ΠΊΠ½ΠΈΠ³Π΅.
  • ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡ всСх ячССк Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Ρ… ячССк.
  • ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡ всСх Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌ ΠΈΠ»ΠΈ Ρ„ΠΈΠ³ΡƒΡ€ Π² ΠΊΠ½ΠΈΠ³Π΅.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ†ΠΈΠΊΠ» Β«For EachΒ», Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠΉΡ‚ΠΈΡΡŒ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π½Π°Π΄ Π½ΠΈΠΌ ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ дСйствиС.

НапримСр, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ всС Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ листы Π² ΠΊΠ½ΠΈΠ³Π΅ ΠΈ Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ ΠΈΡ…, ΠΈΠ»ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ всС Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ячСйки ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅.

ΠŸΡ€ΠΈ использовании Ρ†ΠΈΠΊΠ»Π° Β«For EachΒ» (Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»ΠΎΠΌ Β«For Each-NextΒ») Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ, сколько ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² содСрТится Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ.

Π¦ΠΈΠΊΠ» Β«For EachΒ» Π±ΡƒΠ΄Π΅Ρ‚ автоматичСски ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ дСйствиС. НапримСр, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ всС листы Π² ΠΊΠ½ΠΈΠ³Π΅, ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ, нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Π΅ΡΡ‚ΡŒ Π»ΠΈ Ρƒ вас ΠΊΠ½ΠΈΠ³Π° с 3 листами ΠΈΠ»ΠΈ 30 листами.

Π’ΠΎΡ‚ синтаксис Ρ†ΠΈΠΊΠ»Π° For Each-Next Π² Excel VBA.

 Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ
[Π‘Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° для выполнСния]
Next [element] 

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² использования Ρ†ΠΈΠΊΠ»Π° For Each Π² Excel.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1. ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ всС Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ листы Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ ΠΊΠ½ΠΈΠ³Π΅ (ΠΈ Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚Π΅ Π΅Π΅)

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρƒ вас Π΅ΡΡ‚ΡŒ рабочая ΠΊΠ½ΠΈΠ³Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ всС Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ листы.

НиТС Ρ†ΠΈΠΊΠ»Π° For Each-Next это Π»Π΅Π³ΠΊΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ:

 Sub ProtectSheets ()
Dim ws ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ лист
Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ws Π² ActiveWorkbook.Π Π°Π±ΠΎΡ‡ΠΈΠ΅ листы
ws.Protect
Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ws
End Sub 

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π΅ ΠΌΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Β«wsΒ» ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ листа. Π­Ρ‚ΠΎ сообщаСт VBA, Ρ‡Ρ‚ΠΎ Β«wsΒ» слСдуСт ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ листа Π² ΠΊΠΎΠ΄Π΅.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Β«For EachΒ» для прохоТдСния ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Β«wsΒ» (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ листа) Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ всСх Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… листов Π² Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅ (прСдоставлСнной ActiveWorkbook.Worksheets).

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ†ΠΈΠΊΠ»ΠΎΠ², Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΡ‹ ΠΏΡ‹Ρ‚Π°Π»ΠΈΡΡŒ Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ всС Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ листы Π² ΠΊΠ½ΠΈΠ³Π΅, здСсь Π½Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡ‚ΡŒΡΡ ΠΎ Ρ‚ΠΎΠΌ, сколько листов Π² ΠΊΠ½ΠΈΠ³Π΅.

Нам Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡ… ΠΏΠΎΠ΄ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ†ΠΈΠΊΠ». Π¦ΠΈΠΊΠ» For Each Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ всС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΎΠ΄ΠΈΠ½ Π·Π° Π΄Ρ€ΡƒΠ³ΠΈΠΌ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2 - ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ всС ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ ΠΊΠ½ΠΈΠ³ΠΈ (ΠΈ сохранитС всС)

Если Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с нСсколькими ΠΊΠ½ΠΈΠ³Π°ΠΌΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ³ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ всС эти ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ.

НиТС ΠΊΠΎΠ΄ VBA ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это для нас:

 Sub SaveAllWorkbooks ()
Dim wb As Workbook
Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π‘Π‘ Π² ΠΊΠ½ΠΈΠ³Π°Ρ…
wb.Save
Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ wb
End Sub 

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π² этом ΠΊΠΎΠ΄Π΅ Π²Ρ‹ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ запрос Π½Π° сохранСниС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ мСстС (ΠΏΡ€ΠΈ сохранСнии Π΅Π΅ Π² ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π°Π·).

Он сохраняСт Π΅Π³ΠΎ Π² ΠΏΠ°ΠΏΠΊΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ (Π² ΠΌΠΎΠ΅ΠΌ случаС это Π±Ρ‹Π»Π° ΠΏΠ°ΠΏΠΊΠ° Β«Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹Β»). Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ Π»ΡƒΡ‡ΡˆΠ΅ всСго Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° эти Ρ„Π°ΠΉΠ»Ρ‹ ΡƒΠΆΠ΅ сохранСны, Π²Ρ‹ вноситС измСнСния ΠΈ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ быстро ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ всС ΠΊΠ½ΠΈΠ³ΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 3 - ΠŸΠ΅Ρ€Π΅Π±Ρ€Π°Ρ‚ΡŒ всС ячСйки Π² Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅ (Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ значСния)

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ†ΠΈΠΊΠ» «Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎΒ», Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ всС ячСйки Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ ΠΈΠ»ΠΈ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΌ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅.

Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ячСйку ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ дСйствиС Π½Π° Π΅Π΅ основС.

НапримСр, Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ ΠΏΠΎ всСм ячСйкам Π² Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅ ΠΈ мСняСт Ρ†Π²Π΅Ρ‚ ячССк с ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ значСниями Π½Π° красный.

 Sub HighlightNegativeCells ()
Dim Cll As Range
Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°
Если Cll.Value <0, Ρ‚ΠΎ
Cll.Interior.Color = vbRed
ΠšΠΎΠ½Π΅Ρ†, Ссли
Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Cll
End Sub 

(ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ я использовал Cll Π² качСствС ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ для Cell. РСкомСндуСтся Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Sheets ΠΈΠ»ΠΈ Range, Π² качСствС ΠΈΠΌΠ΅Π½ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…)

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

Если Ρƒ вас Π½Π΅Ρ‚ выдСлСния ΠΈ вмСсто этого Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ VBA выдСлял всС Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Π΅ ячСйки Π² столбцС, начиная с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ячСйки (Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ клавиши Control + Shift + стрСлка Π²Π½ΠΈΠ· для Π²Ρ‹Π±ΠΎΡ€Π° всСх Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Ρ… ячССк), Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

 Sub HighlightNegativeCells ()
Dim Cll As Range
Dim Rng As Range
УстановитС Rng = Range ("A1", Range ("A1").ΠšΠΎΠ½Π΅Ρ† (xlDown))
Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π·Π²ΠΎΠ½ΠΊΠ° Π² Rng
Если Cll.Value <0, Ρ‚ΠΎ
Cll.Interior.Color = vbRed
ΠšΠΎΠ½Π΅Ρ†, Ссли
Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Cll
End Sub 

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ значСния, сколько Ρ‚Π°ΠΌ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Ρ… ячССк. Он начнСтся с ячСйки A1 ΠΈ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ всС смСТныС Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Π΅ ячСйки Π² столбцС.

Π’Π°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»ΡΡ‚ΡŒ ячСйку A1. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ ΡƒΠ΄Π°Π»Π΅Π½Π½ΡƒΡŽ ячСйку, ΠΈ ΠΏΡ€ΠΈ запускС ΠΊΠΎΠ΄Π° ΠΎΠ½ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ всС ячСйки Π² столбцС A (начиная с A1) ΠΈ Ρ€Π°ΡΠΊΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ячСйки.

Β«Exit ForΒ» Statment

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Β«Exit ForΒ» Π² Ρ†ΠΈΠΊΠ»Π΅ For Each-Next, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ это дСлаСтся ΠΏΡ€ΠΈ соблюдСнии ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ условия.

НапримСр, Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ 3, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ просматриваСм Π½Π°Π±ΠΎΡ€ ячССк, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ эффСктивным ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Π΅ΡΡ‚ΡŒ Π»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ значСния ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Если Π½Π΅Ρ‚ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ просто Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° ΠΈ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ врСмя ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ VBA.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΊΠΎΠ΄ VBA, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сдСлаСт это:

 Sub HighlightNegativeCells ()
Dim Cll As Range
Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°
Если WorksheetFunction.Мин (Π’Ρ‹Π±ΠΎΡ€)> = 0 Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ΠΉΡ‚ΠΈ для
Если Cll.Value <0, Ρ‚ΠΎ
Cll.Interior.Color = vbRed
ΠšΠΎΠ½Π΅Ρ†, Ссли
Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Cll
End Sub 

Π“Π΄Π΅ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ VBA

Π₯ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π½Π°Ρ‚ΡŒ, Π³Π΄Π΅ находится ΠΊΠΎΠ΄ VBA Π² вашСй ΠΊΠ½ΠΈΠ³Π΅ Excel?

Excel ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ΅Ρ€Π²Π΅Ρ€Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ VBA, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡƒΡŽ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ VBA. Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ Π² ΠΎΠΊΠ½ΠΎ ΠΊΠΎΠ΄Π° модуля VB Editor.

Π’ΠΎΡ‚ шаги, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это:

  1. ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ.
  2. Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΎΠΏΡ†ΠΈΡŽ Visual Basic.Π­Ρ‚ΠΎ ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ VB Π² бэкэндС.
  3. Π’ ΠΏΠ°Π½Π΅Π»ΠΈ Project Explorer Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ VB Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ любой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΊΠ½ΠΈΠ³ΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄. Если Π²Ρ‹ Π½Π΅ Π²ΠΈΠ΄ΠΈΡ‚Π΅ Project Explorer, ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡƒ View ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Project Explorer.
  4. ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π²ΠΎ Π²ΠΊΠ»Π°Π΄ΠΊΡƒ "Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ" ΠΈ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ "ΠœΠΎΠ΄ΡƒΠ»ΡŒ". Π­Ρ‚ΠΎ вставит ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ модуля для вашСй ΠΊΠ½ΠΈΠ³ΠΈ.
  5. Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈ Π²ΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΊΠΎΠ΄ Π² ΠΎΠΊΠ½ΠΎ модуля.

Π’Π°ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΡ‚ΡŒΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ руководства ΠΏΠΎ Excel:

Excel VBA Loop - Easy Excel Macros

ΠžΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚ΡƒΡ€ | Двойная пСтля | Вройная пСтля | Π‘Π΄Π΅Π»Π°ΠΉ, ΠΏΠΎΠΊΠ° Ρ†ΠΈΠΊΠ»

Π¦ΠΈΠΊΠ» - ΠΎΠ΄ΠΈΠ½ ΠΈΠ· самых ΠΌΠΎΡ‰Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² программирования.Π¦ΠΈΠΊΠ» Π² Excel VBA позволяСт ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ячССк с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ всСго Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… строк ΠΊΠΎΠ΄Π°.

ΠžΠ΄Π½ΠΎΠΊΠΎΠ½Ρ‚ΡƒΡ€Π½Ρ‹ΠΉ

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Ρ†ΠΈΠΊΠ» для ΠΎΠ±Ρ…ΠΎΠ΄Π° ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ячССк.

ΠŸΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π½Π° лист ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ строки ΠΊΠΎΠ΄Π°:

Dim i ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число

Для i = ΠΎΡ‚ 1 Π΄ΠΎ 6
Π―Ρ‡Π΅ΠΉΠΊΠΈ (i, 1). Value = 100
Next i

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π½Π° листС:

ОбъяснСниС: Π‘Ρ‚Ρ€ΠΎΠΊΠΈ ΠΊΠΎΠ΄Π° ΠΌΠ΅ΠΆΠ΄Ρƒ For ΠΈ Next Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ ΡˆΠ΅ΡΡ‚ΡŒ Ρ€Π°Π·.Для i = 1 Excel VBA Π²Π²ΠΎΠ΄ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 100 Π² ячСйку Π½Π° пСрСсСчСнии строки 1 ΠΈ столбца 1. Когда Excel VBA достигаСт Next i, ΠΎΠ½ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ i Π½Π° 1 ΠΈ возвращаСтся ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ For. Для i = 2 Excel VBA Π²Π²ΠΎΠ΄ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 100 Π² ячСйку Π½Π° пСрСсСчСнии строки 2 ΠΈ столбца 1 ΠΈ Ρ‚. Π”.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: рСкомСндуСтся всСгда Π΄Π΅Π»Π°Ρ‚ΡŒ отступ (Ρ‚Π°Π±ΡƒΠ»ΡΡ†ΠΈΡŽ) ΠΊΠΎΠ΄Π° ΠΌΠ΅ΠΆΠ΄Ρƒ словами For ΠΈ Next. Π­Ρ‚ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ вашСго ΠΊΠΎΠ΄Π°.

Двойная пСтля

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ Ρ†ΠΈΠΊΠ» для ΠΎΠ±Ρ…ΠΎΠ΄Π° Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ячССк.

ΠŸΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π½Π° лист ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ строки ΠΊΠΎΠ΄Π°:

Dim i ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число, j ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число

Для i = ΠΎΡ‚ 1 Π΄ΠΎ 6
Для j = ΠΎΡ‚ 1 Π΄ΠΎ 2
Π―Ρ‡Π΅ΠΉΠΊΠΈ (i, j). Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = 100
Π”Π°Π»Π΅Π΅ j
Π”Π°Π»Π΅Π΅ i

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π½Π° листС:

ОбъяснСниС: Для i = 1 ΠΈ j = 1 Excel VBA Π²Π²ΠΎΠ΄ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 100 Π² ячСйку Π½Π° пСрСсСчСнии строки 1 ΠΈ столбца 1. Когда Excel VBA достигаСт Next j, ΠΎΠ½ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ j Π½Π° 1 ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΊ For j. ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅.Для i = 1 ΠΈ j = 2 Excel VBA Π²Π²ΠΎΠ΄ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 100 Π² ячСйку Π½Π° пСрСсСчСнии строки 1 ΠΈ столбца 2. Π—Π°Ρ‚Π΅ΠΌ Excel VBA ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ Next j, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ j выполняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚ 1 Π΄ΠΎ 2. Когда Excel VBA достигаСт Next i , ΠΎΠ½ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ i Π½Π° 1 ΠΈ возвращаСтся ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ For i. Для i = 2 ΠΈ j = 1 Excel VBA Π²Π²ΠΎΠ΄ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 100 Π² ячСйку Π½Π° пСрСсСчСнии строки 2 ΠΈ столбца 1 ΠΈ Ρ‚. Π”.

Вройная пСтля

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Ρ€ΠΎΠΉΠ½ΠΎΠΉ Ρ†ΠΈΠΊΠ» для ΠΎΠ±Ρ…ΠΎΠ΄Π° Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Ρ… Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠ² Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… листах Excel.

ΠŸΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π½Π° лист ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ строки ΠΊΠΎΠ΄Π°:

Dim c ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅, i ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅, j ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅

Для c = ΠΎΡ‚ 1 Π΄ΠΎ 3
Для i = ΠΎΡ‚ 1 Π΄ΠΎ 6
Для j = ΠΎΡ‚ 1 Π΄ΠΎ 2
Π Π°Π±ΠΎΡ‡ΠΈΠ΅ листы (c) .Cells (i, j) .Value = 100
Π”Π°Π»Π΅Π΅ j
Π”Π°Π»Π΅Π΅ i
Π”Π°Π»Π΅Π΅ c

ОбъяснСниС: ЕдинствСнноС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, внСсСнноС ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΊΠΎΠ΄ΠΎΠΌ для Π΄Π²ΠΎΠΉΠ½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°, состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Ρ†ΠΈΠΊΠ» ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ листы (c).ΠΏΠ΅Ρ€Π΅Π΄ ячСйками, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΌ листС для c = 1, Π²Ρ‚ΠΎΡ€ΠΎΠΌ листС для c = 2 ΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΌ листС для c = 3. Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ» Excel, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ этот Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

Π¦ΠΈΠΊΠ» выполнСния Ρ†ΠΈΠΊΠ»Π°

Помимо Ρ†ΠΈΠΊΠ»Π° For Next, Π² Excel VBA Π΅ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ†ΠΈΠΊΠ»Ρ‹. НапримСр, Ρ†ΠΈΠΊΠ» Β«Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ, ΠΏΠΎΠΊΠ°Β». Код, ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½Π½Ρ‹ΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ Do While ΠΈ Loop, Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒΡΡ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Ρ‡Π°ΡΡ‚ΡŒ послС Do While ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true.

1. ΠŸΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π½Π° лист ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ строки ΠΊΠΎΠ΄Π°:

Dim i ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число
i = 1

Π”Π΅Π»Π°Ρ‚ΡŒ, ΠΏΠΎΠΊΠ° i <6
Π―Ρ‡Π΅ΠΉΠΊΠΈ (i, 1).Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = 20
i = i + 1
ΠŸΠ΅Ρ‚Π»Ρ

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π½Π° листС:

ОбъяснСниС: ΠΏΠΎΠΊΠ° i мСньшС 6, Excel VBA Π²Π²ΠΎΠ΄ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 20 Π² ячСйку Π½Π° пСрСсСчСнии строки i ΠΈ столбца 1 ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ i Π½Π° 1. Π’ Excel VBA (ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… языках программирования) символ ' = 'Π·Π½Π°Ρ‡ΠΈΡ‚ становится. Π­Ρ‚ΠΎ Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ€Π°Π²Π½Ρ‹Ρ…. Π˜Ρ‚Π°ΠΊ, i = i + 1 ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ i становится i + 1. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами: Π²ΠΎΠ·ΡŒΠΌΠΈΡ‚Π΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ i ΠΈ ΠΏΡ€ΠΈΠ±Π°Π²ΡŒΡ‚Π΅ ΠΊ Π½Π΅ΠΌΡƒ 1.НапримСр, Ссли i = 1, i становится 1 + 1 = 2. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 20 Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½ΠΎ Π² столбСц A ΠΏΡΡ‚ΡŒ Ρ€Π°Π· (Π° Π½Π΅ ΡˆΠ΅ΡΡ‚ΡŒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Excel VBA останавливаСтся, ΠΊΠΎΠ³Π΄Π° i становится Ρ€Π°Π²Π½Ρ‹ΠΌ 6).

2. Π’Π²Π΅Π΄ΠΈΡ‚Π΅ числа Π² столбСц A.

3. ΠŸΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π½Π° лист ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ строки ΠΊΠΎΠ΄Π°:

Dim i ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число
i = 1

Do While Cells (i, 1) .Value <> ""
Cells (i, 2) .Value = Cells (i, 1) .Value + 10
i = i + 1
ΠŸΠ΅Ρ‚Π»Ρ

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π½Π° листС:

ОбъяснСниС: ΠΏΠΎΠΊΠ° Cells (i, 1).Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ пустоС (<> ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π½Π΅ Ρ€Π°Π²Π½ΠΎ), Excel VBA Π²Π²ΠΎΠ΄ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² ячСйку Π½Π° пСрСсСчСнии строки i ΠΈ столбца 2, Ρ‡Ρ‚ΠΎ Π½Π° 10 большС, Ρ‡Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² ячСйкС Π½Π° пСрСсСчСнии строки i ΠΈ столбца 1. . Excel VBA останавливаСтся, ΠΊΠΎΠ³Π΄Π° i Ρ€Π°Π²Π½ΠΎ 7, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Cells (7, 1) .Value пусто. Π­Ρ‚ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ способ ΠΏΠ΅Ρ€Π΅Π±Ρ€Π°Ρ‚ΡŒ любоС количСство строк Π½Π° листС.

Ρ†ΠΈΠΊΠ»ΠΎΠ² Excel VBA - для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ, для ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ, для выполнСния, Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΈ Π΄Ρ€.

Для эффСктивной Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² VBA Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»Ρ‹.

Π¦ΠΈΠΊΠ»Ρ‹

ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ количСство Ρ€Π°Π· ΠΈΠ»ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² Π½Π°Π±ΠΎΡ€Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

Π‘Π½Π°Ρ‡Π°Π»Π° ΠΌΡ‹ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ Π²Π°ΠΌ нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, Π½Π° Ρ‡Ρ‚ΠΎ способны ΠΏΠ΅Ρ‚Π»ΠΈ. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ Π½Π°ΡƒΡ‡ΠΈΠΌ вас всСму, Ρ‡Ρ‚ΠΎ касаСтся ΠΏΠ΅Ρ‚Π΅Π»ΡŒ.

БыстрыС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ†ΠΈΠΊΠ»Π° VBA

для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ΅Ρ‚Π»ΠΈ

For Each Loops выполняСт Ρ†ΠΈΠΊΠ» ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ листу Π² ΠΊΠ½ΠΈΠ³Π΅ ΠΈΠ»ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ячСйкС Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅.

Π¦ΠΈΠΊΠ» ΠΏΠΎ всСм листам Π² ΠΊΠ½ΠΈΠ³Π΅

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ всС листы Π² ΠΊΠ½ΠΈΠ³Π΅, показывая ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ лист:

Sub LoopThroughSheets ()

Dim ws As Worksheet

Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ws Π² Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ…

WS.Visible = True

Next

End Sub

Π¦ΠΈΠΊΠ» ΠΏΠΎ всСм ячСйкам Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ячССк, провСряя, являСтся Π»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ячСйки ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΈΠ»ΠΈ Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌ:

Sub If_Loop ()

Dim Cell as Range

Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ячСйки Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ("A2: A6")

Если Cell.Value> 0, Ρ‚ΠΎ

Cell.Offset (0, 1) .Value = "ΠŸΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ "

ElseIf Cell.Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ <0 Π’ΠΎΠ³Π΄Π°

Cell.Offset (0, 1) .Value = "Negative"

Else

Cell.Offset (0, 1) .Value = "Zero"

End If

Next Cell

End Sub

AutoMacro - Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΊΠΎΠ΄Π° VBA

для ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ†ΠΈΠΊΠ»ΠΎΠ²

Π”Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚ΠΈΠΏ Ρ†ΠΈΠΊΠ»Π° Β«ForΒ» - это Ρ†ΠΈΠΊΠ» For Next. Π¦ΠΈΠΊΠ» For Next Loop позволяСт Π²Π°ΠΌ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ Ρ†Π΅Π»Ρ‹Π΅ числа.

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ Ρ†Π΅Π»Ρ‹Π΅ числа ΠΎΡ‚ 1 Π΄ΠΎ 10, отобраТая ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ с ΠΎΠΊΠ½ΠΎΠΌ сообщСния:

Sub ForLoop ()

Dim i As Integer

For i = 1 To 10

MsgBox i

Next i

End Sub

Π¦ΠΈΠΊΠ»Ρ‹ выполнСния Ρ†ΠΈΠΊΠ»Π° "Пока"

Do While Loops Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Ρ†ΠΈΠΊΠ»ΠΈΠ²Π°Ρ‚ΡŒΡΡ, ΠΏΠΎΠΊΠ° выполняСтся условиС.Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ Ρ†Π΅Π»Ρ‹Π΅ числа ΠΎΡ‚ 1 Π΄ΠΎ 10, отобраТая ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ с ΠΎΠΊΠ½ΠΎΠΌ сообщСния.

Sub DoWhileLoop ()

Dim n As Integer

n = 1

Do While n <11

MsgBox n

n = n + 1

Loop

End Sub

Π”ΠΎ Ρ†ΠΈΠΊΠ»ΠΎΠ²

И Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, Ρ†ΠΈΠΊΠ» Β«Π”ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Β», Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π² Ρ†ΠΈΠΊΠ»Π΅, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ условиС.Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ Π΄Π΅Π»Π°Π΅Ρ‚ Ρ‚ΠΎ ΠΆΠ΅ самоС, Ρ‡Ρ‚ΠΎ ΠΈ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… Π΄Π²ΡƒΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ….

Sub DoUntilLoop ()

Dim n As Integer

n = 1

Π”ΠΎ n> = 10

MsgBox n

n = n + 1

Loop

End Sub

ΠœΡ‹ обсудим это Π½ΠΈΠΆΠ΅, Π½ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎ остороТным ΠΏΡ€ΠΈ создании Ρ†ΠΈΠΊΠ»ΠΎΠ² Do While ΠΈΠ»ΠΈ Do Not, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ бСсконСчный Ρ†ΠΈΠΊΠ».

ΠŸΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒ Ρ†ΠΈΠΊΠ»ΠΎΠ² VBA

Π­Ρ‚ΠΎ снимок экрана Β«Loop BuilderΒ» ΠΈΠ· нашСй надстройки Premium VBA: AutoMacro. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ Ρ†ΠΈΠΊΠ»ΠΎΠ² позволяСт быстро ΠΈ Π»Π΅Π³ΠΊΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»Ρ‹ для ΠΎΠ±Ρ…ΠΎΠ΄Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΠ»ΠΈ чисСл. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ дСйствия с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ ΠΈ / ΠΈΠ»ΠΈ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ критСриям.

Надстройка Ρ‚Π°ΠΊΠΆΠ΅ содСрТит мноТСство Π΄Ρ€ΡƒΠ³ΠΈΡ… построитСлСй ΠΊΠΎΠ΄Π°, ΠΎΠ±ΡˆΠΈΡ€Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΊΠΎΠ΄Π° VBA ΠΈ Π½Π°Π±ΠΎΡ€ инструмСнтов кодирования. Π­Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для любого Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° VBA.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ рассмотрим Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΏΠ΅Ρ‚Π΅Π»ΡŒ.

VBA для ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ†ΠΈΠΊΠ»Π°

Бинтаксис Ρ†ΠΈΠΊΠ»Π°

Π¦ΠΈΠΊΠ» For Next Loop позволяСт Π²Π°ΠΌ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ количСство Ρ€Π°Π·. Бинтаксис:

[Dim Counter as Integer]

For Counter = Start to End [Step Value]

[Do Something]

Next [Counter]

Π“Π΄Π΅ элСмСнты Π² скобках Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹.

  • [Dim Counter as Long] - ΠžΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ счСтчика. ВрСбуСтся, Ссли Option Explicit объявлСн Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ части вашСго модуля.
  • Π‘Ρ‡Π΅Ρ‚Ρ‡ΠΈΠΊ - ЦСлочислСнная пСрСмСнная, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ для подсчСта
  • Start - ΠΠ°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1)
  • ΠšΠΎΠ½Π΅Ρ† - ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 10)
  • [Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ шага] - ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ n Ρ†Π΅Π»Ρ‹Ρ… чисСл вмСсто ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ 1 Ρ†Π΅Π»ΠΎΠ³ΠΎ числа. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΉΡ‚ΠΈ Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ с ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€,Π¨Π°Π³ -1)
  • [Π‘Π΄Π΅Π»Π°ΠΉΡ‚Π΅ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ] - Код, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒΡΡ
  • Next [Counter] - ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ закрытия Ρ†ΠΈΠΊΠ»Π° For Next. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ счСтчик ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Однако я Π½Π°ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ счСтчик, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°.

Если это сбиваСт с Ρ‚ΠΎΠ»ΠΊΡƒ, Π½Π΅ Π²ΠΎΠ»Π½ΡƒΠΉΡ‚Π΅ΡΡŒ. Рассмотрим нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ²:

Π‘Ρ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ Π΄ΠΎ 10

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄ΠΎ 10 с использованиСм Ρ†ΠΈΠΊΠ»Π° For-Next:

Sub ForEach_CountTo10 ()

Dim n As Integer

For n = 1 To 10

MsgBox n

Next n

End Sub

Для шага Ρ†ΠΈΠΊΠ»Π°

Π‘Ρ‡ΠΈΡ‚Π°ΠΉ Π΄ΠΎ 10 - Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ‚Π½Ρ‹Π΅ числа

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄ΠΎ 10, считая Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ‚Π½Ρ‹Π΅ числа:

Sub ForEach_CountTo10_Even ()

Dim n As Integer

For n = 2 To 10 Step 2

MsgBox n

Next n

End Sub

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Β«Π¨Π°Π³ 2Β».Π­Ρ‚ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ†ΠΈΠΊΠ»Ρƒ For Β«ΠΏΡ€ΠΎΠΉΡ‚ΠΈΒ» Ρ‡Π΅Ρ€Π΅Π· счСтчик Π½Π° 2. ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ шага для ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ:

для шага Ρ†ΠΈΠΊΠ»Π° - ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ

ΠžΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ отсчСт ΠΎΡ‚ 10

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ отсчСт Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ с 10:

Sub ForEach_Countdown_Inverse ()

Dim n As Integer

For n = 10 To 1 Step -1

MsgBox n

Next n

MsgBox Β«Lift OffΒ»

End Sub11

Π£Π΄Π°Π»ΠΈΡ‚ΡŒ строки, Ссли ячСйка пуста

Π― Ρ‡Π°Ρ‰Π΅ всСго использовал Ρ†ΠΈΠΊΠ» For-Loop с ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ шагом, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹ ячССк, удаляя строки, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ критСриям.Если Π²Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅Ρ‚Π΅ ΠΎΡ‚ Π²Π΅Ρ€Ρ…Π½ΠΈΡ… строк ΠΊ Π½ΠΈΠΆΠ½ΠΈΠΌ строкам, ΠΏΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ строк Π²Ρ‹ испортитС свой счСтчик.

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹ строки с пустыми ячСйками (начиная с Π½ΠΈΠΆΠ½Π΅ΠΉ строки):

Sub ForEach_DeleteRows_BlankCells ()

Dim n As Integer

For n = 10 To 1 Step -1

If Range ("a" & n) .Value = "" Π’ΠΎΠ³Π΄Π°

Range ("a" & n) .EntireRow.Delete

End If

Next n

End Sub

Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ для Ρ†ΠΈΠΊΠ»Π°

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Β«Π²Π»ΠΎΠΆΠΈΡ‚ΡŒΒ» ΠΎΠ΄ΠΈΠ½ Ρ†ΠΈΠΊΠ» For Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ†ΠΈΠΊΠ» For.ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Nested For Loops для создания Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ умноТСния:

Sub Nested_ForEach_MultiplicationTable ()

Вусклая строка ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число, столбСц ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число

Для строки = ΠΎΡ‚ 1 Π΄ΠΎ 9

Для столбца = ΠΎΡ‚ 1 Π΄ΠΎ 9

Π―Ρ‡Π΅ΠΉΠΊΠΈ (строка + 1, столбСц + 1) .Value = строка * столбСц

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ столбСц

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ строка

End Sub

Π’Ρ‹Ρ…ΠΎΠ΄ для

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Exit For позволяСт Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° For Next.

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Exit For вмСстС с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ If, выходя ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° For Next Loop, Ссли выполняСтся ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ условиС.

НапримСр, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» For Loop для поиска ячСйки. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ эта ячСйка Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΉΠ΄Π΅Π½Π°, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄.

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ строки с 1 ΠΏΠΎ 1000, ΠΈΡ‰Π° Β«ΠΎΡˆΠΈΠ±ΠΊΡƒΒ» Π² столбцС A. Если ΠΎΠ½Π° Π½Π°ΠΉΠ΄Π΅Π½Π°, ΠΊΠΎΠ΄ Π²Ρ‹Π±Π΅Ρ€Π΅Ρ‚ ячСйку, ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅Π΄ΠΈΡ‚ вас ΠΎ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠΉ ошибкС ΠΈ Π²Ρ‹ΠΉΠ΄Π΅Ρ‚ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°:

Sub ExitFor_Loop ()

Dim i As Integer

For i = 1 To 1000

If Range ("A" & i).Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = "ошибка" Π’ΠΎΠ³Π΄Π°

Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ("A" & i). Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅

MsgBox "ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π° ошибка"

Π’Ρ‹Ρ…ΠΎΠ΄ для

ΠšΠΎΠ½Π΅Ρ† Если

Π”Π°Π»Π΅Π΅ i

ΠšΠΎΠ½Π΅Ρ† ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Π’Π°ΠΆΠ½ΠΎ: Π’ случаС Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ² For, Exit For Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Ρ†ΠΈΠΊΠ» For, Π° Π½Π΅ всС Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ†ΠΈΠΊΠ»Ρ‹.

ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ для

VBA Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Β«ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒΒ», которая Π΅ΡΡ‚ΡŒ Π² Visual Basic. ВмСсто этого Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Β«Π’Ρ‹Ρ…ΠΎΠ΄Β».

VBA для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°

VBA For Each Loop Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ всС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ:

  • ВсС ячСйки Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅
  • ВсС листы Π² ΠΊΠ½ΠΈΠ³Π΅
  • ВсС Ρ„ΠΎΡ€ΠΌΡ‹ Π½Π° листС
  • ВсС ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ ΠΊΠ½ΠΈΠ³ΠΈ

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Nested For Each Loops для:

  • ВсС ячСйки Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ Π½Π° всСх листах
  • ВсС Ρ„ΠΎΡ€ΠΌΡ‹ Π½Π° всСх листах
  • ВсС листы Π²ΠΎ всСх ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… ΠΊΠ½ΠΈΠ³Π°Ρ…
  • ΠΈ Ρ‚Π°ΠΊ далСС…

Бинтаксис:

Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ

[Π‘Π΄Π΅Π»Π°ΠΉΡ‚Π΅ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ]

Π”Π°Π»Π΅Π΅ [ΠžΠ±ΡŠΠ΅ΠΊΡ‚]

Π“Π΄Π΅:

  • ΠžΠ±ΡŠΠ΅ΠΊΡ‚ - пСрСмСнная, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π°Ρ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½, Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ лист, Ρ€Π°Π±ΠΎΡ‡ΡƒΡŽ ΠΊΠ½ΠΈΠ³Ρƒ, Ρ„ΠΎΡ€ΠΌΡƒ ΠΈ Ρ‚. Π”.(Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, RNG)
  • ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡ - ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Range (Β«a1: a10Β»)
  • [Π‘Π΄Π΅Π»Π°ΠΉΡ‚Π΅ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ] - Π‘Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° для запуска Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅
  • Π‘Π»Π΅Π΄. [ΠžΠ±ΡŠΠ΅ΠΊΡ‚] - Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. [ΠžΠ±ΡŠΠ΅ΠΊΡ‚] Π½Π΅ являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, Π½ΠΎ Π½Π°ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ рСкомСндуСтся.

для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ячСйки Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ячСйку Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅:

Sub ForEachCell_inRange ()

Вусклая ячСйка ΠΊΠ°ΠΊ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½

Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ячСйки Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ("a1: a10")

ячСйка.Value = cell.Offset (0,1) .Value

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ячСйка

End Sub

для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ листа Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Ρ‚Π΅Ρ‚Ρ€Π°Π΄ΠΈ

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ всС листы Π² ΠΊΠ½ΠΈΠ³Π΅, снимая Π·Π°Ρ‰ΠΈΡ‚Ρƒ с ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ листа:

Sub ForEachSheet_inWorkbook ()

Dim ws As Worksheet

For Each ws In Worksheets

ws.Unprotect "password"

Next ws

End Sub

для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ сохранит ΠΈ Π·Π°ΠΊΡ€ΠΎΠ΅Ρ‚ всС ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ ΠΊΠ½ΠΈΠ³ΠΈ:

Sub ForEachWB_inWorkbooks ()

Dim wb As Workbook

Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ wb Π² ΠΊΠ½ΠΈΠ³Π°Ρ…

wb.Π—Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ SaveChanges: = True

Next wb

End Sub

для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ Π½Π° листС

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ ΡƒΠ΄Π°Π»ΠΈΡ‚ всС Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ Π½Π° Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ листС.

Sub ForEachShape ()

Dim shp As Shape

Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ shp Π² ActiveSheet.Shapes

shp.Delete

Next shp

End Sub

для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ листС Π² ΠΊΠ½ΠΈΠ³Π΅

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ For Each Loops.Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ пройдСмся ΠΏΠΎ всСм Ρ„ΠΈΠ³ΡƒΡ€Π°ΠΌ Π½Π° всСх листах Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ:

Sub ForEachShape_inAllWorksheets ()

Dim shp As Shape, ws As Worksheet

For Each ws In Worksheets

For each shp In ws.Shapes

ΠšΠΎΠ½Ρ†Π΅Π²ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π½ΠΈΠΊ

для каТдого - IF Loop

Как ΠΌΡ‹ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΈ Ρ€Π°Π½Π΅Π΅, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ If Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°, выполняя дСйствия Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ соблюдСнии ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅Π².

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ скроСт всС пустыС строки Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅:

Sub ForEachCell_inRange ()

Вусклая ячСйка ΠΊΠ°ΠΊ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½

Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ячСйки Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ("a1: a10")

Если cell.Value = "" Π’ΠΎΠ³Π΄Π° _

cell.EntireRow.Hidden = True

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ячСйка

End Sub

Π¦ΠΈΠΊΠ» выполнСния Ρ†ΠΈΠΊΠ»Π° Π² VBA

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ VBA Do While ΠΈ Do While (см. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·Π΄Π΅Π») ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠΈ.Они Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ Ρ†ΠΈΠΊΠ», ΠΏΠΎΠΊΠ° (ΠΈΠ»ΠΈ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ°) Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ условиС.

Π¦ΠΈΠΊΠ» Do While Loop Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ Ρ†ΠΈΠΊΠ», ΠΏΠΎΠΊΠ° выполняСтся условиС.

Π’ΠΎΡ‚ синтаксис Do while:

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ условиС

[Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ]

Π¦ΠΈΠΊΠ»

Π“Π΄Π΅:

  • УсловиС - УсловиС для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ
  • [Π‘Π΄Π΅Π»Π°ΠΉΡ‚Π΅ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ] - ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΠ΅ΠΌΡ‹ΠΉ Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π°

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ†ΠΈΠΊΠ» Do While с условиСм Π² ΠΊΠΎΠ½Ρ†Π΅ Ρ†ΠΈΠΊΠ»Π°:

Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ

[Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ]

Π—Π°Ρ†ΠΈΠΊΠ»ΠΈΡ‚ΡŒ, ΠΏΠΎΠΊΠ° УсловиС

ΠœΡ‹ продСмонстрируСм ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ, Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ:

Π”Π΅Π»Π°ΠΉ, ΠΏΠΎΠΊΠ°

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ†ΠΈΠΊΠ»Π° Do While, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ продСмонстрировали Ρ€Π°Π½Π΅Π΅:

Sub DoWhileLoop ()

Dim n As Integer

n = 1

Do While n <11

MsgBox n

n = n + 1

Loop

End Sub

Π¦ΠΈΠΊΠ» Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ запустим Ρ‚Ρƒ ΠΆΠ΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ пСрСмСстим условиС Π² ΠΊΠΎΠ½Π΅Ρ† Ρ†ΠΈΠΊΠ»Π°:

Sub DoLoopWhile ()

Dim n As Integer

n = 1

Do

MsgBox n

n = n + 1

Loop While n <11

End Sub

VBA Π”ΠΎ Ρ†ΠΈΠΊΠ»Π°

Do until Loops Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ Ρ†ΠΈΠΊΠ» Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ условиС.Бинтаксис ΠΏΠΎ сущСству Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅, ΠΊΠ°ΠΊ Ρƒ Ρ†ΠΈΠΊΠ»ΠΎΠ² Do While:

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΄ΠΎ условия

[Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ]

Π¦ΠΈΠΊΠ»

ΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ условиС ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ΄Ρ‚ΠΈ Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΈΠ»ΠΈ Π² ΠΊΠΎΠ½Ρ†Π΅ Ρ†ΠΈΠΊΠ»Π°:

Do

[Do Something]

Π¦ΠΈΠΊΠ» Π΄ΠΎ состояния

Π”ΠΎ

Π­Ρ‚ΠΎΡ‚ Ρ†ΠΈΠΊΠ» do until Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄ΠΎ 10, ΠΊΠ°ΠΊ ΠΈ Π² Π½Π°ΡˆΠΈΡ… ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…

Sub DoUntilLoop ()

Dim n As Integer

n = 1

Π”ΠΎ n> 10

MsgBox n

n = n + 1

Loop

End Sub

Π¦ΠΈΠΊΠ» Π΄ΠΎ

Π­Ρ‚ΠΎΡ‚ Ρ†ΠΈΠΊΠ» Π΄ΠΎ Ρ†ΠΈΠΊΠ»Π° Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄ΠΎ 10:

Sub DoLoopUntil ()

Dim n As Integer

n = 1

Do

MsgBox n

n = n + 1

Π¦ΠΈΠΊΠ» Π΄ΠΎ n> 10

End Sub

Π’Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°

Подобно использованию Exit For для Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° For, Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Exit Do для Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° Do

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Exit Do:

Sub ExitDo_Loop ()

Dim i As Integer

i = 1

Do until i> 1000

If Range ("A" & i).Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = "ошибка" Π—Π°Ρ‚Π΅ΠΌ

Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ("A" & i). Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅

MsgBox "ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π° ошибка"

Exit Do

End If

i = i + 1

Loop

End Sub

ΠšΠΎΠ½Π΅Ρ‡Π½Π°Ρ ΠΈΠ»ΠΈ разрывная пСтля

Как ΠΌΡ‹ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΈ Π²Ρ‹ΡˆΠ΅, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Exit For ΠΈΠ»ΠΈ Exit Do для Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ†ΠΈΠΊΠ»ΠΎΠ²:

Однако эти ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π² ваш ΠΊΠΎΠ΄ ΠΏΠ΅Ρ€Π΅Π΄ запуском Ρ†ΠΈΠΊΠ»Π°.

Если Π²Ρ‹ ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ Β«Ρ€Π°Π·ΠΎΡ€Π²Π°Ρ‚ΡŒΒ» Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Ρ†ΠΈΠΊΠ», Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°ΠΆΠ°Ρ‚ΡŒ Π½Π° ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π΅ ESC ΠΈΠ»ΠΈ CTRL + Pause Break .Однако это ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΡΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. Если это Π½Π΅ сработаСт, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠΆΠ΄Π°Ρ‚ΡŒΡΡ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ†ΠΈΠΊΠ»Π° ΠΈΠ»ΠΈ, Π² случаС бСсконСчного Ρ†ΠΈΠΊΠ»Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ CTRL + ALT + Delete , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ Excel.

Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ я ΡΡ‚Π°Ρ€Π°ΡŽΡΡŒ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»ΠΎΠ² Do: ΠΏΡ€ΠΎΡ‰Π΅ случайно ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ бСсконСчный Ρ†ΠΈΠΊΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ заставит вас ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Excel, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΏΠΎΡ‚Π΅Ρ€Π΅ вашСй Ρ€Π°Π±ΠΎΡ‚Ρ‹.

Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ†ΠΈΠΊΠ»ΠΎΠ²

Π‘ΠΊΠ²ΠΎΠ·Π½Ρ‹Π΅ строки

Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ всС строки Π² столбцС:

Public Sub LoopThroughRows ()

Dim cell As Range

For each cell In Range ("A: A")

Ff cell.Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ <> "" Π·Π°Ρ‚Π΅ΠΌ MsgBox cell.address & ":" & cell.value

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ячСйка

End Sub

ΠŸΡ€ΠΎΡ…ΠΎΠ΄Π½Ρ‹Π΅ ΠΊΠΎΠ»ΠΎΠ½Π½Ρ‹

Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ цикличСски ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ всС столбцы Π² строкС:

Public Sub LoopThroughColumns ()

Dim cell As Range

For Each cell In Range ("1: 1")

If cell.Value <> "" Π—Π°Ρ‚Π΅ΠΌ MsgBox cell.Address & ":" & ΠΊΠ»Π΅Ρ‚ΠΊΠ°.Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ячСйка

End Sub

ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΏΠ°ΠΏΠΊΠ΅

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ всС Ρ„Π°ΠΉΠ»Ρ‹ Π² ΠΏΠ°ΠΏΠΊΠ΅, создавая список:

1

2

3

4

5

6

7

8

9

10

11

12

13

140002

18

19

Sub LoopThroughFiles ()

Dim oFSO As Object

Dim oFolder As Object

Dim oFile As Object

Dim i As Integer

Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ oFSO = CreateObject. ("FileSystemObject ")

Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ oFolder = oFSO.GetFolder (" C: \ Demo)

i = 2

Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ oFile In oFolder.Files

Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ("Aue" & i) Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ("Aue" & i) = oFile.Name

i = i + 1

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ oFile

End Sub

Массив сквозного ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π°

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ массив Β«arrListΒ»:

Для i = LBound (arrList) To UBound (arrList)

MsgBox arrList (i)

Next i

Ѐункция LBound ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ «ниТнюю Π³Ρ€Π°Π½ΠΈΡ†ΡƒΒ» массива, Π° UBound - Β«Π²Π΅Ρ€Ρ…Π½ΡŽΡŽ Π³Ρ€Π°Π½ΠΈΡ†ΡƒΒ».

ΠŸΠ΅Ρ‚Π»ΠΈ Π² доступС VBA

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² Access VBA. Однако Π² Access ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Recordset, Π° Π½Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Range.

1

2

3

4

5

6

7

8

9

10

11

12

13

140002

18

Sub LoopThroughRecords ()

ΠŸΡ€ΠΈ ошибкС Π’ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ

Dim dbs As Database

Dim rst As Recordset

Set dbs = CurrentDb

Set rst = dbs.OpenRecordset ("tblClients", dbOpenDynaset)

Π‘ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ

.MoveLast

.MoveFirst

Π”ΠΎ .EOF = True

MsgBox (rst.Fields ("ClientName"

0002000

0003 End With

rst.Close

Set rst = Nothing

Set dbs = Nothing

End Sub

VBA Do Loop - Руководство, ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Do Loop

Do Loop Π² VBA

Do Loop VBA - это ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π» Π²Π½ΡƒΡ‚Ρ€ΠΈ макроса VBA Macros Установка макросов Π² Excel VBA довольно проста.Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° макросов Excel VBA Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π½Π°Ρ‡Π°Π»ΠΎ со строки sub () ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ ΠΊΠΎΠ΄Π° макроса. это Π±ΡƒΠ΄Π΅Ρ‚ Β«Π·Π°Ρ†ΠΈΠΊΠ»ΠΈΠ²Π°Ρ‚ΡŒΡΡΒ» ΠΈΠ»ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒΡΡ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΈ. ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ†ΠΈΠΊΠ» Π½Π° ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ числа Ρ€Π°Π·, ΠΏΠΎΠΊΠ° опрСдСлСнная пСрСмСнная Π½Π΅ прСвысит ΠΏΠΎΡ€ΠΎΠ³ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΏΠΎΠΊΠ° опрСдСлСнная ячСйка Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Π½Π°. ЀактичСски, Ρ†ΠΈΠΊΠ»Ρ‹ довольно Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ Π² Ρ‚ΠΎΠΌ смыслС, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΡΠ²ΠΈΡ‚ΡŒ творчСский ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ критСриям, Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‰ΠΈΠΌ Ρ†ΠΈΠΊΠ», Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΎΠ½ ΠΈΠ»ΠΈ ΠΎΠ½Π° ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Ρ†ΠΈΠΊΠ»Ρ‹ VBA. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ ΠΏΡ€ΠΈ создании финансовой ΠΌΠΎΠ΄Π΅Π»ΠΈ. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ финансовоС ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅? ЀинансовоС ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ выполняСтся Π² Excel для прогнозирования финансовых ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ.ΠžΠ±Π·ΠΎΡ€ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ финансовоС ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΊΠ°ΠΊ ΠΈ Π·Π°Ρ‡Π΅ΠΌ Π΅Π³ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ. Π±ΠΎΠ»Π΅Π΅ эффСктивным.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Do Loop Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, Π° ΠΊΠΎΠ΄ для выполнСния содСрТится Π² этих Π΄Π²ΡƒΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°Ρ…. Π­Ρ‚ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° структуру макроса, Π³Π΄Π΅ вСсь ΠΊΠΎΠ΄ макроса содСрТится Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Sub, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ запускаСт макрос, ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° End Sub, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΅Π³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚. ΠœΠ°ΠΊΡ€ΠΎΡΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ нСсколько ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ², Π° Ρ†ΠΈΠΊΠ»Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ сСбя Π΄ΠΎ бСсконСчности.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС, запуститС наш ΠΎΠ½Π»Π°ΠΉΠ½-курс финансового модСлирования Excel VBA!

Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Ρ†ΠΈΠΊΠ»ΠΎΠ²

БущСствуСт нСсколько Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Ρ†ΠΈΠΊΠ»ΠΎΠ², ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠΎ-своСму.

  • Π¦ΠΈΠΊΠ» Β«Π”ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€Β»
  • Π¦ΠΈΠΊΠ» «Пока»
  • Для Ρ†ΠΈΠΊΠ»Π° VBA для Ρ†ΠΈΠΊΠ»Π° Π’ Ρ†ΠΈΠΊΠ»Π΅ Β«ForΒ» VBA процСсс Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒΡΡ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ количСство Ρ€Π°Π·, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΈ. VBA For Loops ΠΌΠ΅Π½Π΅Π΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½Ρ‹, Ρ‡Π΅ΠΌ Do Loops.

Π¦ΠΈΠΊΠ» Β«Π”ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€Β»

Π¦ΠΈΠΊΠ» Β«Π”ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€Β» Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒΡΡ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΈ.ΠšΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉ вставляСтся сразу послС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Β«Π΄Π΅Π»Π°Ρ‚ΡŒ Π΄ΠΎΒ». Π¦ΠΈΠΊΠ» заканчиваСтся ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ Β«LoopΒ». ΠŸΡ€ΠΎΡΡ‚Ρ‹ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ этого Ρ†ΠΈΠΊΠ»Π° являСтся ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ счСтчика Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΎΠ½ Π½Π΅ достигнСт Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ числа, ΠΊΠ°ΠΊ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½ΠΈΠΆΠ΅.

Dim n ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число

N = 0

Π”ΠΎ n = 10

n = n + 1

Loop

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ установили ΠΈΠ·Π²Π΅ΡΡ‚Π½ΡƒΡŽ Ρ†Π΅Π»ΠΎΡ‡ΠΈΡΠ»Π΅Π½Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΊΠ°ΠΊ Β«nΒ». ΠœΠ°ΠΊΡ€ΠΎΡ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ сохраняСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0 Π² n.Когда ΠΎΠ½ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π² Ρ†ΠΈΠΊΠ» Do until, ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉ n = 10 Π½Π΅Π²Π΅Ρ€Π΅Π½, поэтому процСсс Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° выполняСтся. ΠŸΠ΅Ρ€Π²Π°Ρ итСрация добавляСт 1 ΠΊ n, прСвращая Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² 1. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ n ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π½Π΅ Ρ€Π°Π²Π½ΠΎ 10, процСсс Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒΡΡ 10 Ρ€Π°Π·, ΠΏΠΎΠΊΠ° n Π½Π΅ станСт 10. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ n = 10, макрос ΠΏΡ€ΠΎΠΉΠ΄Π΅Ρ‚ Ρ†ΠΈΠΊΠ» ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΡΡ‚Π°Π²ΡˆΠ΅ΠΉΡΡ части. макрос.

Π­Ρ‚ΠΎΡ‚ Ρ‚ΠΈΠΏ Ρ†ΠΈΠΊΠ»Π° с использованиСм Ρ†Π΅Π»ΠΎΠ³ΠΎ числа ΠΏΠΎΠ»Π΅Π·Π΅Π½ для выполнСния процСсса ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ количСство Ρ€Π°Π·. НапримСр, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π΅ΡΡΡ‚ΡŒ строк Π² столбцС A тСкстом «Компания nΒ».Π­Ρ‚ΠΎ дСлаСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Dim n ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число

N = 0

Π”ΠΎ n = 10

n = n + 1

Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ (Β«AΒ» ΠΈ n). = «Компания» & n

Π¦ΠΈΠΊΠ»

Запуск этого макроса Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ ячСйку A1 ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ 1, ячСйку A2 - ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ 2 ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅, ΠΏΠΎΠΊΠ° ячСйка A10 Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ 10. Π’ ячСйкС A10 дСйствиС do Π΄ΠΎ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΈ n = 10 Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹, поэтому макрос Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ Ρ†ΠΈΠΊΠ» ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС, запуститС наш ΠΎΠ½Π»Π°ΠΉΠ½-курс ΠΏΠΎ финансовому ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Excel VBA!

Π¦ΠΈΠΊΠ» Do While

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Ρ†ΠΈΠΊΠ»Π° do while, Ρ†ΠΈΠΊΠ» Do While Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ†ΠΈΠΊΠ» Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉ Π½Π΅ станСт Π»ΠΎΠΆΠ½Ρ‹ΠΌ. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Ρ†ΠΈΠΊΠ» Do Loop Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ, ΠΏΠΎΠΊΠ° Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΈ. Π­Ρ‚ΠΎ выглядит ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π° do until. Если Π±Ρ‹ ΠΌΡ‹ использовали Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ макроса, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅, Π½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΠ»ΠΈ do Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π° do while, макрос просто пропустил Ρ†ΠΈΠΊΠ».Π­Ρ‚ΠΎ связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ n Ρ€Π°Π²Π½ΠΎ 0 Π² Π½Π°Ρ‡Π°Π»Π΅ процСсса, Π° Ρ†ΠΈΠΊΠ» Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ n = 10. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ n ΠΌΠΎΠΆΠ΅Ρ‚ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 10 Π² процСссС Ρ†ΠΈΠΊΠ»Π°, ΠΎΠ½ΠΎ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ 10, ΠΈ поэтому Ρ†ΠΈΠΊΠ» Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½.

ВмСсто этого, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‚ ΠΆΠ΅ процСсс Π² Ρ†ΠΈΠΊΠ»Π΅ do while, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСравСнство.

Dim n ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число

N = 0

Do while n <11

n = n + 1

Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ (Β«AΒ» ΠΈ n).Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = «Компания» & n

Π¦ΠΈΠΊΠ»

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ нСравСнство ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ 11 вмСсто 10. Π­Ρ‚ΠΎ связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ макрос Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΎΠ½ Π½Π΅ достигнСт ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ 10. Если ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉ Ρ†ΠΈΠΊΠ»Π° Π±Ρ‹Π» установлСн Π½Π° n <10, Ρ†ΠΈΠΊΠ» закончится Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ 9, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° n мСньшС 10. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ 10 Π½Π΅ мСньшС 10, ΠΎΠ½ закончится прямо ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ достигнСт ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ 10.

НСсколько ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅Π² с использованиСм И ΠΈ Π˜Π›Π˜ с Do Loop

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этих Ρ†ΠΈΠΊΠ»ΠΎΠ² Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ нСсколько ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅Π², Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ² Π΄Π²Π° выраТСния, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ AND ΠΈΠ»ΠΈ OR.Π­Ρ‚ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ говорят сами Π·Π° сСбя.

Π¦ΠΈΠΊΠ» do until с двумя критСриями, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ AND, Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΎΠ±Π° критСрия Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹. Π¦ΠΈΠΊΠ» do until с двумя критСриями, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ OR, Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ любой ΠΈΠ· ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅Π².

Π¦ΠΈΠΊΠ» do while с двумя критСриями AND Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ, ΠΏΠΎΠΊΠ° Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΎΠ±Π° критСрия.

Π¦ΠΈΠΊΠ» do while с двумя критСриями Π˜Π›Π˜ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ, ΠΏΠΎΠΊΠ° выполняСтся хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅Π².

ИспользованиС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅Π² ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½Ρ‹ΠΌ Π² финансовом ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ.НапримСр, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π²Π° коэффициСнта Π»Π΅Π²Π΅Ρ€ΠΈΠ΄ΠΆΠ° ΠšΠΎΡΡ„Ρ„ΠΈΡ†ΠΈΠ΅Π½Ρ‚Ρ‹ Π»Π΅Π²Π΅Ρ€ΠΈΠ΄ΠΆΠ° ΠšΠΎΡΡ„Ρ„ΠΈΡ†ΠΈΠ΅Π½Ρ‚ Π»Π΅Π²Π΅Ρ€ΠΈΠ΄ΠΆΠ° ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π» Π½Π° ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π΄ΠΎΠ»Π³Π°, понСсСнного Ρ…ΠΎΠ·ΡΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΡΡƒΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ ΠΏΠΎ нСскольким Π΄Ρ€ΡƒΠ³ΠΈΠΌ счСтам Π² Π΅Π³ΠΎ балансС, ΠΎΡ‚Ρ‡Π΅Ρ‚Π΅ ΠΎ прибылях ΠΈ ΡƒΠ±Ρ‹Ρ‚ΠΊΠ°Ρ… ΠΈΠ»ΠΈ ΠΎΡ‚Ρ‡Π΅Ρ‚Π΅ ΠΎ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΈ Π΄Π΅Π½Π΅ΠΆΠ½Ρ‹Ρ… срСдств. Π¨Π°Π±Π»ΠΎΠ½ Excel находится Π²Ρ‹ΡˆΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅Π΄ запуском ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ макроса.

НСчисловыС ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΈ Π² Ρ†ΠΈΠΊΠ»Π΅ Do

Π’ Ρ†ΠΈΠΊΠ»Π΅ For описанный Π²Ρ‹ΡˆΠ΅ процСсс ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ. Π¦ΠΈΠΊΠ» for VBA Π’ Ρ†ΠΈΠΊΠ»Π΅ For VBA процСсс Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒΡΡ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ количСство Ρ€Π°Π·, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΈ.VBA For Loops ΠΌΠ΅Π½Π΅Π΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½Ρ‹, Ρ‡Π΅ΠΌ Do Loops. ΠΈΠΌΠ΅Π΅Ρ‚ прСимущСство ΠΏΠ΅Ρ€Π΅Π΄ Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ do, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ автоматичСски создаСт ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ вмСсто n Π·Π° ΠΎΠ΄ΠΈΠ½ простой шаг. Однако Ρ†ΠΈΠΊΠ»Ρ‹ do ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ прСимущСства ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ for.

Π’ Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Ρ†ΠΈΠΊΠ»Ρ‹ for ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с числовыми ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ, Ρ†ΠΈΠΊΠ»Ρ‹ do ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ строки ΠΈ Π΄Π°Ρ‚Ρ‹. Π¦ΠΈΠΊΠ» do ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅. НапримСр, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Ρ…ΠΎΡ‡Π΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ макрос запускался Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² 2017 Π³ΠΎΠ΄Ρƒ ΠΈ Π½Π΅ запускался ΠΏΠΎ ΠΏΡ€ΠΎΡˆΠ΅ΡΡ‚Π²ΠΈΠΈ Π³ΠΎΠ΄Π°.Π­Ρ‚ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄Π°Ρ‚Ρ‹ ΠΈ установки критСрия Β«Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ Π΄ΠΎ [DateVariable]Β» = 01.01.2018.

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, вмСсто этого ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ макрос запускался Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° опрСдСлСнная ячСйка пуста, Π° Π½Π΅ запускался, ΠΊΠΎΠ³Π΄Π° эта ячСйка Π±Ρ‹Π»Π° Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π°. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚Π°ΠΊΠΈΡ… ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅Π², ΠΊΠ°ΠΊ Β«Π”ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°Β» (Β«A5Β»). Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = «». Π—Π½Π°ΠΊ «» ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΏΡƒΡΡ‚ΡƒΡŽ ячСйку. ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Π―Ρ‡Π΅ΠΉΠΊΠ°, содСрТащая ΠΏΡ€ΠΎΠ±Π΅Π», ΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ пустой, Π½ΠΎ VBAExcel Π½Π΅ считаСт Π΅Π΅ пустой. VBAVBA ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Visual Basic для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.Excel VBA - это язык программирования Microsoft для Excel ΠΈ всСх Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Microsoft Office, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Word ΠΈ PowerPoint. ВсС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠ°ΠΊΠ΅Ρ‚Π° Office ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΎΠ±Ρ‰ΠΈΠΉ язык программирования.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС, запуститС наш ΠΎΠ½Π»Π°ΠΉΠ½-курс финансового модСлирования Excel VBA!

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ рСсурсы

Π‘Π»Π°Π³ΠΎΠ΄Π°Ρ€ΠΈΠΌ вас Π·Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ этого руководства CFI ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» Do Π² VBA. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ свои Π½Π°Π²Ρ‹ΠΊΠΈ финансового модСлирования, Π²Π°ΠΌ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ рСсурсы CFI:

  • VBA Excel ExampleExcel VBA examplesExcel VBA позволяСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ макросы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ процСссы Π² Excel.Π’ этом руководствС Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Excel VBA, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ макрос, настраивая макрос, ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ ΠΊΠ°ΠΊ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° Π΄Π°Π½Π½Ρ‹Π΅.
  • VBA If Else VBA If Else ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° VBA If Else ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° построСниС Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹ if Π²Π½ΡƒΡ‚Ρ€ΠΈ Excel. ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎ использования VBA вмСсто этого Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π·Π° Π½ΠΈΠΌ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π»Π΅Π³Ρ‡Π΅ ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ IF ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΡƒΡΠ»ΠΎΠΆΠ½ΡΡŽΡ‚ΡΡ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… скобок. Π’ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ if Π½Π° языкС VBA ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ IF ΠΎΡ‚Π΄Π΅Π»Π΅Π½ΠΎ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΈ вмСсто этого располоТСно Π² порядкС ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π°
  • ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ VBA ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ VBA ΠœΠ΅Ρ‚ΠΎΠ΄ VBA - это Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π°, ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»Π΅Π½Π½Ρ‹ΠΉ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ VBA, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ»ΠΈ ссылкС Π½Π° Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сообщаСт Excel, Ρ‡Ρ‚ΠΎ дСйствиС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ этому ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ.
  • Π Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹ Excel Π Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹ Excel, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π½Π°Ρ‚ΡŒΠ­Ρ‚ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹ Excel ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ ΠΈ Π²Ρ‹Π²Π΅Π΄ΡƒΡ‚ ваши Π½Π°Π²Ρ‹ΠΊΠΈ финансового Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ. Π Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Excel

Π¦ΠΈΠΊΠ»Ρ‹ VBA - Ρ†ΠΈΠΊΠ»Ρ‹ для, для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ, Β«ΠΏΠΎΠΊΠ°Β» ΠΈ Β«Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€Β»

Π¦ΠΈΠΊΠ»Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² VBA для ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ повторСния Π½Π°Π±ΠΎΡ€Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ². Π¦ΠΈΠΊΠ»Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π΅ΠΎΡ‚ΡŠΠ΅ΠΌΠ»Π΅ΠΌΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ любого языка программирования, ΠΈ VBA Π½Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. Π’ VBA ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Ρ†ΠΈΠΊΠ»ΠΎΠ².Π­Ρ‚ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅:

  • For Loop
  • For Each Loop
  • Do While Loop
  • Do until Loop
  • Wend Loop (устарСло)

Π’ этом постС я объясню всС эти VBA Loop с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ . Но ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ Ρ‚Π΅ΠΌΠ΅, Π΄Π°Π²Π°ΠΉΡ‚Π΅ разбСрСмся, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ†ΠΈΠΊΠ» ΠΈ для Ρ‡Π΅Π³ΠΎ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ пСтля ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ?

Π¦ΠΈΠΊΠ» - это инструкция, которая ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ Π½Π°Π±ΠΎΡ€ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ достигнуто ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ условиС.

Π¦ΠΈΠΊΠ»Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ цСлям:

  • ΠŸΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π² ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΈ Π½Π°Π±ΠΎΡ€Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ².
  • ΠŸΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ условиС.
  • Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ сна ΠΈ оТидания Π² ΠΊΠΎΠ΄Π΅.

VBA FOR LOOP

Π¦ΠΈΠΊΠ» For являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹Ρ… ΠΈ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ² Π² VBA. For Loop ΠΈΠ½ΠΎΠ³Π΄Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Β«For Next LoopΒ».

Π¦ΠΈΠΊΠ»Ρ‹ For ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ Π½Π°Π±ΠΎΡ€Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ количСство Ρ€Π°Π·.

Бинтаксис VBA For Loop

Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ синтаксис Ρ†ΠΈΠΊΠ»Π° For VBA ΠΈΠ»ΠΈ структура For Loop выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

 For loop_ctr = start_num To end_num [step_increment] 
'ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°
Next loop_ctr

Π—Π΄Π΅ΡΡŒ loop_ctr ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ счСтчик Ρ†ΠΈΠΊΠ»Π°. Π­Ρ‚ΠΎ основа Ρ†ΠΈΠΊΠ»Π° Β«For Next LoopΒ», поэтому Π΅Π³ΠΎ Π΅Ρ‰Π΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ «хрономСтристом Ρ†ΠΈΠΊΠ»Π°Β». Π­Ρ‚Π° пСрСмСнная увСличиваСтся послС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΏΠΎΠΊΠ° Ρ†ΠΈΠΊΠ» Π½Π΅ закончится.

Β«start_numΒ» - это Π½ΠΎΠΌΠ΅Ρ€, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒΡΡ Ρ†ΠΈΠΊΠ».

Β«end_numΒ» - это Π½ΠΎΠΌΠ΅Ρ€, Π΄ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ» Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒΡΡ.

step_increment - Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€. Он ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Π½Π° сколько Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ loop_ctr Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ послС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ step_increment Ρ€Π°Π²Π½ΠΎ 1. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ с ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ loop_ctr увСличиваСтся Π½Π° 1.

Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ†ΠΈΠΊΠ» VBA For Loop?

Допустим, Ρƒ нас Π΅ΡΡ‚ΡŒ простой Ρ†ΠΈΠΊΠ» For Π² VBA, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:

 For loop_ctr = 1 To 100 
'ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°
Next loop_ctr
  • Когда ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ элСмСнт управлСния достигаСт ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°' For loop_ctr = ΠžΡ‚ 1 Π΄ΠΎ 100, ΠΎΠ½ Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΡƒΠ΅Ρ‚ мСсто для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ loop_ctr Π² памяти ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ 1.
  • ПослС этого ΠΎΠ½ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ выполняСт ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° For.
  • НаконСц, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ элСмСнт управлСния достигаСт ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Β«Next loop_ctrΒ», здСсь ΠΎΠ½ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Β«loop_ctrΒ» Π½Π° 1. И элСмСнт управлСния снова ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ Β«For loop_ctr = 1 Π΄ΠΎ 100Β», Π³Π΄Π΅ ΠΎΠ½ провСряСт, ΠΈΠΌΠ΅Π΅Ρ‚ Π»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 'loop_ctr' достигло 100 ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ мСньшС 100, Ρ‚ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ итСрация продолТаСтся; Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Ρ†ΠΈΠΊΠ» останавливаСтся.

ВсС Π΅Ρ‰Π΅ Π½Π΅ ясно, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ†ΠΈΠΊΠ» For Loop? НС Π²ΠΎΠ»Π½ΡƒΠΉΡ‚Π΅ΡΡŒ.ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² этом с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π±Π»ΠΎΠΊ-схСмы.

VBA For Next Loop Flow Diagram

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊ управлСния, ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π½Ρ‹ΠΉ Π½Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ Π±Π»ΠΎΠΊ-схСмС:

  1. ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго, выполняСтся ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ FOR. Π­Ρ‚ΠΎΡ‚ шаг позволяСт ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ значСния loop_ctr ΠΈ step_increment.
  2. ПослС этого условиС оцСниваСтся. Если условиС ИБВИНА, всС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° Β«Π‘Π»ΠΎΠΊ ΠΊΠΎΠ΄Π°Β» Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ. Однако, Ссли условиС оцСниваСтся ΠΊΠ°ΠΊ Π›ΠžΠ–Π¬, ΠΏΠΎΡ‚ΠΎΠΊ управлСния ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ Π²Π½Π΅ Ρ†ΠΈΠΊΠ»Π° For.
  3. Когда выполняСтся Β«Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π°Β» Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° For, Ρ†ΠΈΠΊΠ» Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒΡΡ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Β«loop_ctrΒ» Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ.
  4. НаконСц, условиС снова оцСниваСтся с ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ 'loop_ctr', ΠΈ процСсс повторяСтся.

НСсколько простых ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Ρ†ΠΈΠΊΠ»Π° For Π² VBA

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° нСсколько простых ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Ρ†ΠΈΠΊΠ»Π° For Π² VBA.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1: Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ VBA For Loop для ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ чисСл ΠΎΡ‚ 1 Π΄ΠΎ 10 Π² Excel.

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρƒ нас Π΅ΡΡ‚ΡŒ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Β«A1: A10Β», ΠΈ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ этот Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ числами ΠΎΡ‚ 1 Π΄ΠΎ 10.
Для этого ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

 Sub ForLoopPrintNumbers () 
Dim loop_ctr As Integer
For loop_ctr = 1 To 10
ActiveSheet.Range ("A1"). Offset (loop_ctr - 1, 0) .Value = loop_ctr
Π”Π°Π»Π΅Π΅ loop_ctr
MsgBox "Для Ρ†ΠΈΠΊΠ»Π° Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΎ!"
End Sub

ПояснСниС:

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π΅, ΠΏΡ€Π΅ΠΆΠ΄Π΅ всСго, ΠΌΡ‹ объявили счСтчик Ρ†ΠΈΠΊΠ»Π° loop_ctr для нашСго Ρ†ΠΈΠΊΠ»Π° For. Π—Π°Ρ‚Π΅ΠΌ, вмСстС с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ For, ΠΌΡ‹ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ loop_ctr Ρ€Π°Π²Π½Ρ‹ΠΌ 1 ΠΈ установили end_num Ρ€Π°Π²Π½Ρ‹ΠΌ 10.

Π’Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π° For ΠΌΡ‹ написали ΠΊΠΎΠ΄ для записи значСния loop_ctr Π½Π° листС Excel Π² столбСц A. ПослС этого ΠΈΠ΄Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ loop_ctr для ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ Π½Π΅ ΡƒΠΊΠ°Π·Π°Π»ΠΈ явноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 'step_increment', поэтому Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ 'loop_ctr' Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π½Π° 1. Π¦ΠΈΠΊΠ» For Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π΅ повторяСтся 10 Ρ€Π°Π· ΠΈ заполняСт ячСйки Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ A1: A10 с Π½ΠΎΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΎΡ‚ 1-10 ΠΏΠΎΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2: Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ†ΠΈΠΊΠ» For Π² VBA, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ сумму всСх чисСл ΠΎΡ‚ 1 Π΄ΠΎ 10.

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π±Π΅Ρ€Π΅ΠΌ всС числа ΠΎΡ‚ 1 Π΄ΠΎ 10 ΠΈ просуммируСм ΠΈΡ…. НаконСц, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Π½Π° экранС сумму чисСл ΠΎΡ‚ 1 Π΄ΠΎ 10.

Для этого ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

 Sub ForLoopSumNumbers () 
Dim loop_ctr As Integer
Dim result As Integer
result = 0
For loop_ctr = 1 To 10
result = result + loop_ctr
Next loop_ctr
MsgBox Β«Π‘ΡƒΠΌΠΌΠ° чисСл ΠΎΡ‚ 1 Π΄ΠΎ 10 Ρ€Π°Π²Π½Π°:Β» & result
End Sub

ОбъяснСниС:

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π΅, ΠΏΡ€Π΅ΠΆΠ΄Π΅ всСго, ΠΌΡ‹ объявили счСтчик Ρ†ΠΈΠΊΠ»Π° 'loop_ctr' для нашСго Ρ†ΠΈΠΊΠ»Π° For.Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ объявили Π΄Ρ€ΡƒΠ³ΡƒΡŽ Ρ†Π΅Π»ΠΎΡ‡ΠΈΡΠ»Π΅Π½Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΊΠ°ΠΊ Β«Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Β» для хранСния суммы чисСл ΠΎΡ‚ 1 Π΄ΠΎ 10.

ПослС этого, вмСстС с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ For, ΠΌΡ‹ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ Β«loop_ctrΒ» Ρ€Π°Π²Π½Ρ‹ΠΌ 1 ΠΈ установили Β«end_numΒ» ΠΊΠ°ΠΊ 10.

Π’Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π° For ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ loop_ctr вмСстС с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚: 1, Π° Π½Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ: (1 + 2) = 3. Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ Π½Π° Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚: (3 + 3) = 6 ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

ПослС Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π° For находится ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 'loop_ctr' для ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ Π½Π΅ ΡƒΠΊΠ°Π·Π°Π»ΠΈ явноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 'step_increment', ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, с ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ 'loop_ctr' Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π½Π° 1.

Π¦ΠΈΠΊΠ» For Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π΅ повторяСтся 10 Ρ€Π°Π· ΠΈ суммируСт всС числа ΠΎΡ‚ 1 Π΄ΠΎ 10 ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ сумму этих чисСл Π² msgbox.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 3: Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ VBA For Loop для ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ чисСл, всСх Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… чисСл ΠΎΡ‚ 1 Π΄ΠΎ 10.

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Π·Π°ΠΏΠΎΠ»Π½ΠΈΠΌ всС Ρ‡Π΅Ρ‚Π½Ρ‹Π΅ числа ΠΎΡ‚ 1 Π΄ΠΎ 10 Π² ячСйки ΠΎΡ‚ A1 Π΄ΠΎ A5.

Для этого ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

 Sub ForLoopToPrintEvenNumbers () 
Dim loop_ctr As Integer
Dim cell As Integer
cell = 1

For loop_ctr = 1 To 10
If loop_ctr Mod 2 = 0 Then
ActiveSheet .Range ("A1"). Π‘ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ (ячСйка - 1, 0) .Value = loop_ctr
cell = cell + 1
End If
Next loop_ctr

MsgBox "For Loop Completed!"
End Sub

ПояснСниС:

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π΅ ΠΌΡ‹ ΠΏΡ€Π΅ΠΆΠ΄Π΅ всСго объявили счСтчик Ρ†ΠΈΠΊΠ»Π° loop_ctr для нашСго Ρ†ΠΈΠΊΠ»Π° For.ПослС этого ΠΌΡ‹ объявили Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ cell. Π­Ρ‚Π° пСрСмСнная инициализируСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ 1.

Π”Π°Π»Π΅Π΅, вмСстС с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ For, ΠΌΡ‹ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ 'loop_ctr' Ρ€Π°Π²Π½Ρ‹ΠΌ 1 ΠΈ установили 'end_num' Ρ€Π°Π²Π½Ρ‹ΠΌ 10.

Π’Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π° For ΠΌΡ‹ использовали ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ IF для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ чСтности значСния 'loop_ctr'.

Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 'loop_ctr' Ρ€Π°Π²Π½ΠΎ Even, Ρ‚ΠΎ ΠΌΡ‹ написали ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ для Π²Ρ‹Π²ΠΎΠ΄Π° значСния Π² ΡΠ»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π² столбцС A.

ПослС этого ΠΌΡ‹ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ячСйки Π½Π° 1.ΠœΡ‹ использовали ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ячСйки Π² нашСм Ρ†ΠΈΠΊΠ»Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ значСния Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ ячСйкС столбца A.

Π”Π°Π»Π΅Π΅ ΠΈΠ΄Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ 'loop_ctr' для ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ Π½Π΅ ΡƒΠΊΠ°Π·Π°Π»ΠΈ явноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 'step_increment', послС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ 'loop_ctr' Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π½Π° 1.

Π¦ΠΈΠΊΠ» For Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π΅ повторяСтся 10 Ρ€Π°Π· ΠΈ заполняСт ячСйки Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ A1 : A5 с Ρ‡Π΅Ρ‚Π½Ρ‹ΠΌΠΈ числами ΠΎΡ‚ 2 Π΄ΠΎ 10.

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Π°Ρ Π»ΠΎΠ³ΠΈΠΊΠ°

Π•ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Π»ΡƒΡ‡ΡˆΠΈΠΉ способ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎ ΠΆΠ΅ самоС, Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, ΠΊΠ°ΠΊ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ.

 Sub ForLoopToPrintEvenNumbers () 
Dim loop_ctr As Integer
Dim cell as Integer
cell = 1

For loop_ctr = 2 To 10 Step 2
ActiveSheet.Range ("A1"). Offset (cell - 1, 0) .Value = loop_ctr
cell = cell + 1
Next loop_ctr

MsgBox «Для Ρ†ΠΈΠΊΠ»Π° Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΎ!Β»
End Sub

ОбъяснСниС:

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π΅ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π±Ρ€Π°Π»ΠΈ всС числа ΠΎΡ‚ 2 Π΄ΠΎ 10. ВмСсто Β«step_incrementΒ» ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Ρ€Π°Π²Π½ΠΎΠ³ΠΎ 1, ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ явноС Β«step_incrementΒ», Ρ€Π°Π²Π½ΠΎΠ΅ 2.

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π° for Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 'loop_ctr' Ρ€Π°Π²Π½ΠΎ 2, Ρ‡Ρ‚ΠΎ ΠΈ пСчатаСтся Π² ячСйкС A1. Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Β«loop_ctrΒ» становится 4 (Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅: 2 + step_increment: 2), ΠΈ это число пСчатаСтся Π² ячСйкС A2.

Аналогично, Π½Π° Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 'loop_ctr' Ρ€Π°Π²Π½ΠΎ 6 (ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅: 4 + step_increment: 2), ΠΈ ΠΎΠ½ΠΎ пСчатаСтся Π² ячСйкС A3 ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

НаписаниС Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° For

Π‘Ρ‹Π²Π°ΡŽΡ‚ случаи, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» for Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° for; это называСтся Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠ² for.

VBA Π¦ΠΈΠΊΠ»Ρ‹ For ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Ρ‹ Π΄Ρ€ΡƒΠ³ Π² Π΄Ρ€ΡƒΠ³Π° для выполнСния слоТных Π·Π°Π΄Π°Ρ‡ Π² Excel. Π”Π°Π²Π°ΠΉΡ‚Π΅ разбСрСмся с Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 4: РаспСчатайтС числа ΠΎΡ‚ 1 Π΄ΠΎ 10 Π½Π° всСх листах Π² элСктронной Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Excel с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π° For Loop.

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ числа ΠΎΡ‚ 1 Π΄ΠΎ 10 Π½Π° всСх листах Π² ΠΊΠ½ΠΈΠ³Π΅ Excel.

Для этого ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

 Sub ForLoopPrintNumbers () 
Dim loop_ctr As Integer
Dim sheet As Integer

For sheet = 1 To Worksheets.Count
For loop_ctr = 1 To 10
Worksheets (sheet) .Range ("A1"). Offset (loop_ctr - 1, 0) .Value = loop_ctr
Next loop_ctr
Next sheet

MsgBox "Для Ρ†ΠΈΠΊΠ»Π° Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΎ!"
End Sub

ПояснСниС:

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π΅ΡΡ‚ΡŒ Π΄Π²Π° Ρ†ΠΈΠΊΠ»Π° For Loops, ΠΎΠ΄ΠΈΠ½ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ. Π’Π½Π΅ΡˆΠ½ΠΈΠΉ Ρ†ΠΈΠΊΠ» For выполняСт ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ ΠΏΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Β«sheetΒ», Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Ρ†ΠΈΠΊΠ» For выполняСт ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ ΠΏΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ loop_ctr, которая опрСдСляСт ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ячСйки.

Π’Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π»Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ Ρ†ΠΈΠΊΠ»Π° For Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ числа ΠΎΡ‚ 1 Π΄ΠΎ 10 Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ листС (согласно Π²Π½Π΅ΡˆΠ½Π΅ΠΌΡƒ Ρ†ΠΈΠΊΠ»Ρƒ).

Π’Π½Π΅ΡˆΠ½ΠΈΠΉ Ρ†ΠΈΠΊΠ» ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅Ρ‚ всС доступныС листы Π² элСктронной Ρ‚Π°Π±Π»ΠΈΡ†Π΅, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Ρ†ΠΈΠΊΠ» ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΎΡ‚ A1 Π΄ΠΎ A10 для Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ листа. Π­Ρ‚ΠΎ позволяСт ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ числа ΠΎΡ‚ 1 Π΄ΠΎ 10 Π½Π° всСх доступных листах.

ΠžΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» For Π² VBA

Π’ΠΎ всСх Π½Π°ΡˆΠΈΡ… ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… ΠΌΡ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ Ρ†ΠΈΠΊΠ»Ρ‹ For, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… пСрСмСнная счСтчика Ρ†ΠΈΠΊΠ»Π° увСличиваСтся с мСньшСго значСния Π΄ΠΎ большСго значСния (с ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ).

Но Π² этом Π½Π΅Ρ‚ нСобходимости, Ρƒ вас Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» For, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ счСтчик Ρ†ΠΈΠΊΠ»Π° пСрСмСщаСтся ΠΎΡ‚ Π±ΠΎΠ»Π΅Π΅ высокого значСния ΠΊ Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΎΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ (с ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 5: Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» For для ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ чисСл ΠΎΡ‚ 1 Π΄ΠΎ 10 Π² порядкС убывания.

 Sub ReverseForLoop () 
Dim loop_ctr As Integer
Dim cell As Integer
cell = 1

For loop_ctr = 10 To 1 Step -1
ActiveSheet.Range ("A1"). Offset (cell - 1, 0). Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = loop_ctr
cell = cell + 1
Next loop_ctr

MsgBox «Для Ρ†ΠΈΠΊΠ»Π° Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΎ!Β»
End Sub

ПояснСниС:

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ†ΠΈΠΊΠ» начинаСтся со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ 'loop_ctr' ΠΊΠ°ΠΊ 10.И Π·Π°Ρ‚Π΅ΠΌ, с ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счСтчика Ρ†ΠΈΠΊΠ»Π° ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ΡΡ Π½Π° 1 (ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Β«step_incrementΒ» Ρ€Π°Π²Π΅Π½ -1).

Π’Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π° For ΠΌΡ‹ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ счСтчика Ρ†ΠΈΠΊΠ»Π° Π² Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ листС ΠΈΠ· A1: A10.

БСсконСчный Ρ†ΠΈΠΊΠ» с использованиСм Ρ†ΠΈΠΊΠ»Π° For

БСсконСчный Ρ†ΠΈΠΊΠ» Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ бСсконСчным Ρ†ΠΈΠΊΠ»ΠΎΠΌ. БСсконСчный Ρ†ΠΈΠΊΠ» - это Ρ†ΠΈΠΊΠ», условиС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ (часто ΠΈΠ·-Π·Π° логичСской ошибки программиста) Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ становится истинным. Π¦ΠΈΠΊΠ» повторяСтся бСсконСчноС количСство Ρ€Π°Π· ΠΈΠ»ΠΈ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ остановлСн дСйствиСм программиста / ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

Π₯отя Π² случаС Ρ†ΠΈΠΊΠ»Π° FOR, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΈΠ·-Π·Π° Ρ‡Π΅Ρ‚ΠΊΠΈΡ… условий Π½Π°Ρ‡Π°Π»Π° ΠΈ окончания Π½Π΅Π»Π΅Π³ΠΊΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ бСсконСчный Ρ†ΠΈΠΊΠ» ΠΏΠΎ логичСской ошибкС. Однако ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ случаи, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎ ошибкС ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ счСтчика Ρ†ΠΈΠΊΠ»Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°, Ρ‚Π΅ΠΌ самым сдСлав Ρ†ΠΈΠΊΠ» бСсконСчным.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ бСсконСчного Ρ†ΠΈΠΊΠ»Π° for:

 'НС запускайтС этот ΠΊΠΎΠ΄ 
Sub InfiniteForLoop ()
Dim loop_ctr As Integer
Dim cell As Integer

For loop_ctr = 1 To 10
ActiveSheet.Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ("A1"). Π‘ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ (loop_ctr - 1, 0) .Value = loop_ctr
loop_ctr = loop_ctr - 1
Next loop_ctr

MsgBox "For Loop Completed!"
End Sub

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ 'loop_ctr = loop_ctr - 1' Π΄Π΅Π»Π°Π΅Ρ‚ Π²Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» VBA бСсконСчным, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ сбрасываСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ loop_ctr ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, условиС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ достигаСтся.

Π‘ΠΎΠ²Π΅Ρ‚: ВсСгда Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π½Π΅ Π²Π½ΠΎΡΠΈΡ‚ΡŒ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ счСтчика Ρ†ΠΈΠΊΠ»Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π°.

Как ΠΏΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» For ΠΈΠ»ΠΈ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· Π½Π΅Π³ΠΎ

Π― Π΄ΡƒΠΌΠ°ΡŽ, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· вас зададутся вопросом: Β«Π—Π°Ρ‡Π΅ΠΌ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°Π·Ρ€Ρ‹Π²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» Π²ΠΎ врСмя выполнСния»? ΠžΡ‚Π²Π΅Ρ‚ прост: ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»Π° ΠΈΠ»ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· Π½Π΅Π³ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы Π½Π° рСсурсы.

Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·ΠΎΡ€Π²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» For, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ β€˜Exit For’ .

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ это Π² дСйствии Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 6: Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ†ΠΈΠΊΠ» FOR Π² VBA, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ сумму ΠΏΠ΅Ρ€Π²Ρ‹Ρ… 20 Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… чисСл ΠΎΡ‚ 1 Π΄ΠΎ 100.

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°ΠΉΠ΄ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ 20 Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… чисСл ΠΎΡ‚ 1 Π΄ΠΎ 100 ΠΈ Π·Π°Ρ‚Π΅ΠΌ вычислитС ΠΈΡ… сумму. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΊΠΎΠ΄ для этого:

 Sub SumFirst20OddNumbers () 
Dim loop_ctr As Integer
Dim odd_number_counter As Integer
Dim sum As Integer

For loop_ctr = 1 To 100
If (loop_ctr Mod 2 <> 0) Then
sum = sum + loop_ctr
odd_number_counter = odd_number_counter + 1
End If

If (odd_number_counter = 20) Then
Exit For
End If
Next loop_ctr

MsgBox "Π‘ΡƒΠΌΠΌΠ° Π²Π΅Ρ€Ρ…Π½ΠΈΡ… 20 ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… суб-9000 ΠΈ Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… чисСл Ρ€Π°Π²Π½Π°:"

ОбъяснСниС:

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρƒ нас Π΅ΡΡ‚ΡŒ Ρ‚Ρ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ - loop_ctr, odd_number_counter ΠΈ sum.ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ loop_ctr ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ счСтчик Ρ†ΠΈΠΊΠ»Π°, пСрСмСнная odd_number_counter содСрТит количСство суммированных Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… чисСл (ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΡƒΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ 20 Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… чисСл), Π° пСрСмСнная sum содСрТит сумму ΠΈΠ· ΠΏΠ΅Ρ€Π²Ρ‹Ρ… 20 Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… чисСл.

Π’Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅ΠΌ всС числа ΠΎΡ‚ 1 Π΄ΠΎ 100, ΠΎΠ΄Π½ΠΎ Π·Π° Π΄Ρ€ΡƒΠ³ΠΈΠΌ (step_increment ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ€Π°Π²Π΅Π½ 1), ΠΈ провСряСм, Π½Π΅Ρ‡Π΅Ρ‚Π½ΠΎΠ΅ Π»ΠΈ число. Если число Π½Π΅Ρ‡Π΅Ρ‚Π½ΠΎΠ΅, ΠΌΡ‹ суммируСм Π΅Π³ΠΎ ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ Β«odd_number_counterΒ» Π½Π° 1.

ПослС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° IF Π΄Ρ€ΡƒΠ³ΠΎΠ΅ условиС IF провСряСт, Ρ€Π°Π²Π½ΠΎ Π»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Β«odd_number_counterΒ» 20.Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ odd_number_counter Ρ€Π°Π²Π½ΠΎ 20, Ρ‚ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Exit For ΠΌΡ‹ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΠΌ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π΅Ρ‚ смысла ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» дальшС.

НСсколько практичСских ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² VBA For Loop

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ практичСскиС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ For Loop:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 7: Π’Ρ‹Π΄Π΅Π»ΠΈΡ‚Π΅ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ строки Π² элСктронной Ρ‚Π°Π±Π»ΠΈΡ†Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ VBA For Loop.

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ строки Π² элСктронной Ρ‚Π°Π±Π»ΠΈΡ†Π΅.Для этого ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

 Sub HighlightAlternateRows () 
Dim loop_ctr As Integer
Dim Max As Integer
Dim clm As Integer
Max = ActiveSheet.UsedRange.Rows.Count
clm = ActiveSheet.UsedRange.Columns. Count

For loop_ctr = 1 To Max
If loop_ctr Mod 2 = 0 Then
ActiveSheet.Range (Cells (loop_ctr, 1), Cells (loop_ctr, clm)). Interior.ColorIndex = 28
End If
Next loop_ctr

MsgBox "Для Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ†ΠΈΠΊΠ»Π°!"
End Sub

ОбъяснСниС:

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π΅ ΠΌΡ‹ Π½Π°Ρ‡Π°Π»ΠΈ Ρ†ΠΈΠΊΠ» с 1 Π΄ΠΎ количСства строк Π½Π° нашСм листС.Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ if, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ строки с Ρ‡Π΅Ρ‚Π½Ρ‹ΠΌΠΈ Π½ΠΎΠΌΠ΅Ρ€Π°ΠΌΠΈ для ΠΈΡ… выдСлСния.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 8: ИспользованиС VBA For Loop Π—Π°Ρ‰ΠΈΡ‚Π° всСх листов Π² ΠΊΠ½ΠΈΠ³Π΅.

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ попытаСмся ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ макрос VBA, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ просматриваСт всС Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ листы Π² Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅ ΠΈ Π·Π°Ρ‰ΠΈΡ‰Π°Π΅Ρ‚ всС Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ листы.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΊΠΎΠ΄ для этого:

 Sub ProtectWorksheets () 
Dim loop_ctr As Integer
For loop_ctr = 1 To ActiveWorkbook.Worksheets.Count
Worksheets (loop_ctr).Π—Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ
Next loop_ctr
End Sub

Explanation:

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ†ΠΈΠΊΠ» for VBA ΠΈ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅ΠΌ всС листы Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅. Π’Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° For ΠΌΡ‹ пытаСмся Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ экзСмпляр Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ листа.

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для снятия Π·Π°Ρ‰ΠΈΡ‚Ρ‹ с листов. ΠŸΡ€ΠΎΡΡ‚ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ Β«Π Π°Π±ΠΎΡ‡ΠΈΠ΅ листы (loop_ctr) .ProtectΒ» Π½Π° Β«Π Π°Π±ΠΎΡ‡ΠΈΠ΅ листы (loop_ctr) .UnProtectΒ».

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 9: Π¦ΠΈΠΊΠ» ΠΏΠΎ массиву чисСл ΠΈ поиск наибольшСго ΠΈ наимСньшСго числа ΠΈΠ· массива.

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρƒ нас Π΅ΡΡ‚ΡŒ массив чисСл, ΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ†ΠΈΠΊΠ» FOR, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ ΠΏΠΎ массиву ΠΈ Π½Π°ΠΉΡ‚ΠΈ наимСньшСС ΠΈ наибольшСС числа ΠΈΠ· массива. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΊΠΎΠ΄ для этого:

 Sub ForLoopWithArrays () 
Dim arr () As Variant
arr = Array (10, 12, 8, 19, 21, 5, 16)

Dim min_number As Integer
Dim max_number As Integer

min_number = arr (0)
max_number = arr (0)

Dim loop_ctr As Integer
For loop_ctr = LBound (arr) To UBound (arr)
If arr (loop_ctr)> max_number Then
max_number = arr)
End If

If arr (loop_ctr) min_number = arr (loop_ctr)
End If

Next loop_ctr
MsgBox "НаибольшСС число:" & max_number _
& "НаимСньшСС число:" & min End_number

6 

ОбъяснСниС:

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π΅ Ρƒ нас Π΅ΡΡ‚ΡŒ массив чисСл, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹ΠΉ ΠΊΠ°ΠΊ пСрСмСнная arr.Π’ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ этому Ρƒ нас Π΅ΡΡ‚ΡŒ Π΄Π²Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, min_number ΠΈ max_number, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для хранСния минимального ΠΈ максимального чисСл ΠΈΠ· массива.

ΠœΡ‹ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ min_number ΠΈ max_number ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ элСмСнтом массива. Π—Π°Ρ‚Π΅ΠΌ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° For ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅ΠΌ всС элСмСнты массива ΠΈ провСряСм -

Если Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ число большС, Ρ‡Π΅ΠΌ max_number, Ρ‚ΠΎ устанавливаСм Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ max_number Ρ€Π°Π²Π½Ρ‹ΠΌ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ числу. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ условиС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΡ‹ провСряСм: Ссли Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ число мСньшС, Ρ‡Π΅ΠΌ min_number, Ρ‚ΠΎ установитС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ min_number Ρ€Π°Π²Π½Ρ‹ΠΌ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ числу.

НаконСц, ΠΌΡ‹ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ наибольшСС ΠΈ наимСньшСС числа Π²Π½ΡƒΡ‚Ρ€ΠΈ массива с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ msgbox.

VBA For Each Loop

For each - это Π±ΠΎΠ»Π΅Π΅ слоТный Ρ‚ΠΈΠΏ Ρ†ΠΈΠΊΠ»Π° For Loop. Π•Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

Π—Π΄Π΅ΡΡŒ Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡ‚ΡŒΡΡ ΠΎ счСтчикС Ρ†ΠΈΠΊΠ»Π°, ваша Π·Π°Π΄Π°Ρ‡Π° - просто ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π° сам Ρ†ΠΈΠΊΠ» ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈ выполняСт ΠΈΡ… ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ.

Бинтаксис VBA For Each Loop

Бинтаксис For Each Loop ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° For Loop.НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ синтаксис:

 Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта Π’ collection_of_items 
'ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°
Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ элСмСнт

Π—Π΄Π΅ΡΡŒ' collection_of_items 'относится ΠΊ Π³Ρ€ΡƒΠΏΠΏΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅Π±Ρ€Π°Ρ‚ΡŒ. Если Π²Ρ‹ ΡƒΠΊΠ°ΠΆΠ΅Ρ‚Π΅ ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ для этого ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, ΠΎΠ½ выдаст Β«ΠΎΡˆΠΈΠ±ΠΊΡƒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния 438Β».

Β«itemΒ» опрСдСляСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ Β«collection_of_itemsΒ». Π’ любой ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° Β«itemΒ» содСрТит СдинствСнный ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠ· Β«collection_of_itemsΒ».

Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ†ΠΈΠΊΠ» For Each

Допустим, Ρƒ нас Π΅ΡΡ‚ΡŒ Ρ†ΠΈΠΊΠ» For Each ΠΊΠ°ΠΊ:

 For Each cl Π² ActiveSheet.Range ("A1: A10") 
'ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°
Next cl
  • Когда ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ элСмСнт управлСния достигаСт ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°' For Each cl In ActiveSheet.Range ("A1: A10") ', ΠΎΠ½ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ collection, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ cl ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ячСйкой $ A $ 1.
  • ПослС этого ΠΎΠ½ выполняСт инструкции Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°.
  • Π—Π°Ρ‚Π΅ΠΌ ΠΎΠ½ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠ· ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΈ Π²Ρ‹Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ Π΅Π³ΠΎ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ cl. И процСсс продолТаСтся Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½Ρ‹ всС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈΠ· ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ.

Π‘Π»ΠΎΠΊ-схСма для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° Π² VBA

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊ управлСния, ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π½Ρ‹ΠΉ Π½Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ Π±Π»ΠΎΠΊ-схСмС:

  1. ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго, выполняСтся инструкция FOR EACH ΠΈ провСряСтся, Π΅ΡΡ‚ΡŒ Π»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ элСмСнты Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ.
  2. Если Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ элСмСнты, пСрСмСнная Β«itemΒ» инициализируСтся ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ элСмСнтом ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° Β«Π‘Π»ΠΎΠΊ ΠΊΠΎΠ΄Π°Β». Однако, Ссли условиС оцСниваСтся ΠΊΠ°ΠΊ FALSE, ΠΏΠΎΡ‚ΠΎΠΊ управлСния ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ Π²Π½Π΅ Ρ†ΠΈΠΊΠ»Π° For Each.
  3. Когда выполняСтся Β«ΠΊΠΎΠ΄ΠΎΠ²Ρ‹ΠΉ Π±Π»ΠΎΠΊΒ» Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° For Each, Ρ†ΠΈΠΊΠ» Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒΡΡ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ 'item' ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ инициализируСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ элСмСнтом Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, ΠΈ Ρ†ΠΈΠΊΠ» продолТаСтся.

НСсколько простых ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² VBA для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ простым ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌ Ρ†ΠΈΠΊΠ»Π° For Each.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1. ИспользованиС VBA для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° для отобраТСния ΠΈΠΌΠ΅Π½ всСх Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… листов.

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» For Each для ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ всСм Ρ€Π°Π±ΠΎΡ‡ΠΈΠΌ листам Π² ActiveWorkbook ΠΈ отобраТСния ΠΈΠΌΠ΅Π½ всСх листов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ поля msg.

 Sub ForEachDisplaySheetNames () 
Dim sheetNames As String
For each sht In ActiveWorkbook.Sheets
sheetNames = sheetNames & vbNewLine & sht.Name
Next sht

MsgBox «ИмСна листов:" & vbNames

1957 & sheet

Explanation:

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ†ΠΈΠΊΠ» For Each Π±Π΅Ρ€Π΅Ρ‚ Π½Π°Π±ΠΎΡ€ листов ΠΈΠ· ActiveWorkbook.Sheets, Π·Π°Ρ‚Π΅ΠΌ выполняСт ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ листов ΠΎΠ΄ΠΈΠ½ Π·Π° Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ sht Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ экзСмпляром листа.

Π’Π½ΡƒΡ‚Ρ€ΠΈ Π±Π»ΠΎΠΊΠ° For Each имя листа для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ листа добавляСтся ΠΊ строкС, ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, Π²Π½Π΅ Ρ†ΠΈΠΊΠ»Π° всС ΠΈΠΌΠ΅Π½Π° листов ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π² ΠΎΠΊΠ½Π΅ сообщСния.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2. ИспользованиС VBA для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° для суммирования всСх элСмСнтов массива.

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π° VBA For Each ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ массив чисСл ΠΈ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ сумму всСх Π΅Π³ΠΎ элСмСнтов. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΊΠΎΠ΄ для этого:

 Sub ForEachSumArrayElements () 
Dim arr As Variant
Dim sum as Integer
arr = Array (1, 10, 15, 17, 19, 21, 23, 27)

для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта Π² arr
sum = sum + element
Next element

MsgBox "The Sum is:" & sum
End Sub

Explanation:

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π΅ ΠΌΡ‹ объявили Π΄Π²Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, 'arr' ΠΈ 'sum '.ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ arr ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для хранСния массива чисСл, Π° пСрСмСнная sum прСдставляСт сумму элСмСнтов массива.

Π’Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° For Each ΠΌΡ‹ повторяСм элСмСнты массива ΠΎΠ΄ΠΈΠ½ Π·Π° Π΄Ρ€ΡƒΠ³ΠΈΠΌ, суммируСм ΠΈΡ… ΠΈ сохраняСм ΠΈΡ‚ΠΎΠ³ΠΎΠ²ΡƒΡŽ сумму Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ sum.

НаконСц, Π²Π½Π΅ Ρ†ΠΈΠΊΠ»Π° For Each ΠΌΡ‹ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ сумму элСмСнтов массива с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΊΠ½Π° сообщСния.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 3. ИспользованиС VBA для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° для отобраТСния ΠΈΠΌΠ΅Π½ всСх ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… ΠΊΠ½ΠΈΠ³.

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ†ΠΈΠΊΠ» For Each, ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π±Π΅Ρ€Π΅ΠΌ всС ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΠΌ ΠΈΡ… ΠΈΠΌΠ΅Π½Π° Π² ΠΎΠΊΠ½Π΅ сообщСния.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΊΠΎΠ΄ для этого:

 Sub ForEachDisplayWorkbookNames () 
ВусклыС ΠΈΠΌΠ΅Π½Π° workBookNames ΠΊΠ°ΠΊ строка

Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΊΠ½ΠΈΠ³Π°Ρ…
workBookNames = workBookNames & vbNewLine & wrkbook.Name
Next wrkbook

are & vbNewLine & workBookNames
End Sub

Explanation:

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ†ΠΈΠΊΠ» For Each Π±Π΅Ρ€Π΅Ρ‚ Π½Π°Π±ΠΎΡ€ ΠΊΠ½ΠΈΠ³, Π·Π°Ρ‚Π΅ΠΌ выполняСт ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ ΠΊΠ½ΠΈΠ³ ΠΎΠ΄Π½Ρƒ Π·Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ wrkbook Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ экзСмпляром ΠΊΠ½ΠΈΠ³ΠΈ.

Π’Π½ΡƒΡ‚Ρ€ΠΈ Π±Π»ΠΎΠΊΠ° For Each имя ΠΊΠ½ΠΈΠ³ΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ добавляСтся ΠΊ строкС, ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, Π²Π½Π΅ Ρ†ΠΈΠΊΠ»Π° всС ΠΈΠΌΠ΅Π½Π° ΠΊΠ½ΠΈΠ³ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π² ΠΎΠΊΠ½Π΅ сообщСния.

Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ VBA для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°

Π”Π²Π° Ρ†ΠΈΠΊΠ»Π° For Each ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Ρ‹ Π΄Ρ€ΡƒΠ³ Π² Π΄Ρ€ΡƒΠ³Π° для выполнСния слоТных Π·Π°Π΄Π°Ρ‡. Π”Π°Π²Π°ΠΉΡ‚Π΅ разбСрСмся с Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ For Each Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 4: ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ всСх ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… ΠΊΠ½ΠΈΠ³ вмСстС с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΈΠΌ листами.

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ всС ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ ΠΊΠ½ΠΈΠ³ΠΈ, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ листы ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ ΠΈΡ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΊΠ½Π° сообщСния.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΊΠΎΠ΄ для этого:

 Sub ForEachLoopNesting () 
Вусклый Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² Π²ΠΈΠ΄Π΅ строки
Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ Π² Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… ΠΊΠ½ΠΈΠ³Π°Ρ…
Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° Π² Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… ΠΊΠ½ΠΈΠ³Π°Ρ…
result = result & vbNewLine & "Workbook:" & wrkbook.Name & "Π Π°Π±ΠΎΡ‡ΠΈΠΉ лист:" & sht.Name
Next sht
Next wrkbook

MsgBox result
End Sub

Explanation:

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π΅ ΠΌΡ‹ использовали Π΄Π²Π° Ρ†ΠΈΠΊΠ»Π° For Each, ΠΎΠ΄ΠΈΠ½ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ. Π’Π½Π΅ΡˆΠ½ΠΈΠΉ Ρ†ΠΈΠΊΠ» For Each выполняСт ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ ΠΏΠΎ ΠΊΠ½ΠΈΠ³Π°ΠΌ, Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Ρ†ΠΈΠΊΠ» For Each выполняСт ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ ΠΏΠΎ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΌ листам.

Π’Π½ΡƒΡ‚Ρ€ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ Π±Π»ΠΎΠΊΠ° For Each ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ ΠΈΠΌΠ΅Π½Π° ΠΊΠ½ΠΈΠ³ ΠΈ Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… листов ΠΈ сохраняСт ΠΈΡ… Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ с ΠΈΠΌΠ΅Π½Π΅ΠΌ Β«Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Β».

На ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Β«Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Β» добавляСтся ΠΊ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ. НаконСц, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Β«Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Β» отобраТаСтся Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠΊΠ½Π° сообщСний.

Как Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° For Each ΠΈΠ»ΠΈ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· Π½Π΅Π³ΠΎ

Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° For Each, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Exit For. Π˜Ρ‚Π°ΠΊ, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Β«Exit ForΒ» ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Ρ†ΠΈΠΊΠ» For, Ρ‚Π°ΠΊ ΠΈ Ρ†ΠΈΠΊΠ» For Each.

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° это Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 5: Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ VBA для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ ΠΈΠΌΠ΅Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹Ρ… 3 листов Π² Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅.

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ пройдСмся ΠΏΠΎ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΌ листам Π²Π½ΡƒΡ‚Ρ€ΠΈ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ 3 ΠΈΠΌΠ΅Π½ΠΈ Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… листов. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΊΠΎΠ΄ для этого:

 Sub ForEachDisplayFirstThreeSheetNames () 
Dim sheetNames As String
Dim sheetCounter As Integer

For Each sht In ActiveWorkbook.Sheets
sheetNames = sheetNames & vbNewLine & sht.Имя
sheetCounter = sheetCounter + 1

Если sheetCounter> = 3, Ρ‚ΠΎ
Exit For
End If
Next sht

MsgBox "ИмСна листов:" & vbNewLine & sheetNames
End Sub

ОбъяснСниС: Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π΅ Ρƒ нас Π΅ΡΡ‚ΡŒ Ρ†ΠΈΠΊΠ» For Each, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполняСт ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ ΠΏΠΎ листам Π²Π½ΡƒΡ‚Ρ€ΠΈ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ. Π’Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° ΠΌΡ‹ добавляСм ΠΈ сохраняСм ΠΈΠΌΠ΅Π½Π° листов Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ sheetNames. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρƒ нас Π΅ΡΡ‚ΡŒ пСрСмСнная sheetCounter, которая увСличиваСтся Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ.

ПослС этого Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ провСряСм, достигло Π»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ sheetCounter 3 (ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 3 ΠΈΠΌΠ΅Π½ΠΈ листа).

Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ sheetCounter достигло 3, ΠΌΡ‹ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΠΌ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Exit For. НаконСц, ΠΌΡ‹ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ sheetNames с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ msgbox.

Π¦ΠΈΠΊΠ» Β«Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π²ΠΎ врСмя» VBA

Π¦ΠΈΠΊΠ» Β«Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠΊΠ°Β» VBA - это Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Ρ‚ΠΈΠΏ Ρ†ΠΈΠΊΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ выполняСт Π½Π°Π±ΠΎΡ€ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², ΠΏΠΎΠΊΠ° условиС остаСтся истинным.Π¦ΠΈΠΊΠ» заканчиваСтся, ΠΊΠΎΠ³Π΄Π° условиС становится Π»ΠΎΠΆΠ½Ρ‹ΠΌ.

Бинтаксис Ρ†ΠΈΠΊΠ»Π° Do while Π² VBA

Π¦ΠΈΠΊΠ» Do while ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²Π° синтаксиса Π² VBA, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ:

Бинтаксис 1:

 УсловиС Do While 
'ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°
Loop

Или

Бинтаксис 2:

 Do 
'ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°
Loop While condition

Π’ ΠΎΠ±ΠΎΠΈΡ… синтаксисах «условиС» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² качСствС основы Ρ†ΠΈΠΊΠ»Π°.На ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ «Пока» провСряСт, оцСниваСтся Π»ΠΈ «условиС» ΠΊΠ°ΠΊ Β«Π˜ΡΡ‚ΠΈΠ½Π°Β» ΠΈΠ»ΠΈ Β«Π›ΠΎΠΆΡŒΒ». Если «условиС» истинно, Ρ†ΠΈΠΊΠ» продолТаСтся; Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Ρ†ΠΈΠΊΠ» Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ.

ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго, Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΏΠΎΠ½ΡΡ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ этими двумя синтаксисами.

Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ двумя синтаксисами Do while

Как ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ синтаксисС Ρ†ΠΈΠΊΠ»Π° do-while, «условиС» провСряСтся ΠΊΠ°ΠΊ пСрвая инструкция. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ссли условиС Π»ΠΎΠΆΠ½ΠΎ, Ρ†ΠΈΠΊΠ» do-while Π² синтаксисС 1 Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ.

Π’ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ синтаксисС «условиС» провСряСтся ΠΊΠ°ΠΊ послСдний ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π΄Π°ΠΆΠ΅ Ссли условиС Π»ΠΎΠΆΠ½ΠΎ, Ρ†ΠΈΠΊΠ» do-while Π² синтаксисС 2 Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ 1 ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ. Волько послС этого условиС Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ†Π΅Π½Π΅Π½ΠΎ, ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚.

Π˜Ρ‚Π°ΠΊ, синтаксис 2 Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, истинно ΠΈΠ»ΠΈ Π»ΠΎΠΆΠ½ΠΎ условиС.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ†ΠΈΠΊΠ» do-while.

Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ†ΠΈΠΊΠ» Do While

Бинтаксис 1-

Допустим, Ρƒ нас Π΅ΡΡ‚ΡŒ Ρ†ΠΈΠΊΠ» Do While ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

 Dim loop_ctr as Integer 
loop_ctr = 1
Do While loop_ctr <10
' выполняСтся Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°
loop_ctr = loop_ctr + 1
Π¦ΠΈΠΊΠ»
  • Π’ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Π΄Π²ΡƒΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°Ρ… пСрСмСнная loop_ctr ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ ΠΈ инициализируСтся ΠΊΠ°ΠΊ 1.
  • Когда ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ элСмСнт управлСния достигаСт ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Β«Do While loop_ctr <10Β», ΠΎΠ½ провСряСт, мСньшС Π»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Β«loop_ctrΒ» 10.
  • Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Β«loop_ctrΒ» мСньшС 10, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, 'loop_ctr' увСличиваСтся Π½Π° 1.
  • ПослС этого ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ снова ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ†ΠΈΠΊΠ»Ρƒ Β«Do While loop_ctr <10Β», ΠΈ Ρ†ΠΈΠΊΠ» продолТаСтся Π΄ΠΎ значСния 'loop_ctr' становится Ρ€Π°Π²Π½Ρ‹ΠΌ 10.
  • Когда Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 'loop_ctr' становится Ρ€Π°Π²Π½Ρ‹ΠΌ 10, Ρ‚ΠΎΠ³Π΄Π° условиС do while Π½Π΅ выполняСтся, ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ послС Ρ†ΠΈΠΊΠ»Π° do-while.

Бинтаксис 2 -

Допустим, Ρƒ нас Π΅ΡΡ‚ΡŒ Ρ†ΠΈΠΊΠ» Do While ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

 Dim loop_ctr as Integer 
loop_ctr = 1
Do
'ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°
loop_ctr = loop_ctr + 1
Loop While loop_ctr <10
  • Π’ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Π΄Π²ΡƒΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°Ρ… пСрСмСнная 'loop_ctr' ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ ΠΈ инициализируСтся ΠΊΠ°ΠΊ 1.
  • Когда ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ элСмСнт управлСния достигаСт ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° "Do", ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, синтаксис 1), ΠΎΠ½ просто Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² Ρ†ΠΈΠΊΠ» ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° ΠΎΠ΄ΠΈΠ½ Π·Π° Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ 'loop_ctr' Π½Π° 1.
  • ПослС выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π° ΠΎΠ½ провСряСт, мСньшС Π»ΠΈ 'loop_ctr' 10. Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 'loop_ctr' мСньшС 10, начинаСтся другая итСрация.
  • Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 'loop_ctr' становится Ρ€Π°Π²Π½Ρ‹ΠΌ 10, Ρ‚ΠΎ условиС do while Π½Π΅ выполняСтся, ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ послС Ρ†ΠΈΠΊΠ»Π° do-while.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ синтаксисС Ρ†ΠΈΠΊΠ» Do-While Loop всСгда повторяСтся ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ провСряСмоС условиС помСщаСтся Π² ΠΊΠΎΠ½Π΅Ρ† Ρ†ΠΈΠΊΠ»Π°.

Π‘Π»ΠΎΠΊ-схСма Ρ†ΠΈΠΊΠ»Π° Do While Π² VBA:

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊ управлСния, ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π½Ρ‹ΠΉ Π½Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ Π±Π»ΠΎΠΊ-схСмС:

Бинтаксис 1 -

  1. Π’ этом синтаксисС Do-While Ρ†ΠΈΠΊΠ» УсловиС провСряСтся вмСстС с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ Do.
  2. Если условиС истинно, Ρ‚ΠΎ выполняСтся Β«Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π°Β» Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° do-while, ΠΈ начинаСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ итСрация. КаТдая итСрация ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ провСряСт условиС Ρ†ΠΈΠΊΠ»Π°, Π° Β«Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π°Β» Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° do-while выполняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° условиС оцСниваСтся ΠΊΠ°ΠΊ истинноС.
  3. Когда условиС Ρ†ΠΈΠΊΠ»Π° становится Π»ΠΎΠΆΠ½Ρ‹ΠΌ, большС Π½Π΅ происходит ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ Ρ†ΠΈΠΊΠ»Π°, ΠΈ ΠΏΠΎΡ‚ΠΎΠΊ управлСния ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ Π²Π½Π΅ Ρ†ΠΈΠΊΠ»Π° Do While.

Бинтаксис 2 -

  1. Π’ этом синтаксисС Do-While условиС Ρ†ΠΈΠΊΠ»Π° Π½Π΅ провСряСтся вмСстС с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ Do.
  2. Π’Π°ΠΊ ΠΊΠ°ΠΊ для ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ условиС Π½Π΅ провСряСтся. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, выполняСтся Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π»Π° do-while.
  3. ПослС ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ каТдая ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ итСрация ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ провСряСт условиС Ρ†ΠΈΠΊΠ»Π°, ΠΈ Β«Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π°Β» Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° do-while выполняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° условиС оцСниваСтся ΠΊΠ°ΠΊ истинноС.
  4. Когда условиС Ρ†ΠΈΠΊΠ»Π° становится Π»ΠΎΠΆΠ½Ρ‹ΠΌ, большС Π½Π΅ происходит ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ Ρ†ΠΈΠΊΠ»Π°, ΠΈ ΠΏΠΎΡ‚ΠΎΠΊ управлСния ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ Π²Π½Π΅ Ρ†ΠΈΠΊΠ»Π° Do While.

НСсколько простых ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Ρ†ΠΈΠΊΠ»Π° Β«Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π²ΠΎ врСмя» Π² VBA

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1. ИспользованиС Ρ†ΠΈΠΊΠ»Π° Β«Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π²ΠΎ врСмя» Π² VBA для ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ чисСл ΠΎΡ‚ 1 Π΄ΠΎ 10 Π² Excel.

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρƒ нас Π΅ΡΡ‚ΡŒ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Β«A1: A10Β», ΠΈ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ этот Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ числами ΠΎΡ‚ 1 Π΄ΠΎ 10. Для этого ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

 Sub DoWhileLoopPrintNumbers () 
Dim loop_ctr As Integer
loop_ctr = 1

Do While loop_ctr <= 10
ActiveSheet.Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ("A1"). Π‘ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ (loop_ctr - 1, 0) .Value = loop_ctr
loop_ctr = loop_ctr + 1
Loop

MsgBox ("Loop Ends")
End Sub

ПояснСниС:

In the Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π΅ ΠΌΡ‹ объявили ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ loop_ctr для нашСго Ρ†ΠΈΠΊΠ»Π° Do While. Π—Π°Ρ‚Π΅ΠΌ, наряду с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ Do while, Ρƒ нас Π΅ΡΡ‚ΡŒ условиС для запуска Ρ†ΠΈΠΊΠ»Π° Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 'loop_ctr' Π½Π΅ станСт мСньшС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ 10.

Π’Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π° Do While ΠΌΡ‹ написали ΠΊΠΎΠ΄ для записи 'loop_ctr 'Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π° листС Excel Π² столбцС A.

ПослС этого ΠΈΠ΄Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ Β«loop_ctrΒ» для ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2: Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ†ΠΈΠΊΠ» Do While Π² VBA, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ сумму всСх чисСл ΠΎΡ‚ 1 Π΄ΠΎ 20.

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π±Π΅Ρ€Π΅ΠΌ всС числа ΠΎΡ‚ 1 Π΄ΠΎ 20 ΠΈ просуммируСм ΠΈΡ…. НаконСц, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Π½Π° экранС сумму чисСл ΠΎΡ‚ 1 Π΄ΠΎ 20.

Для этого ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

 Sub WhileLoopSumNumbers () 
Dim loop_ctr As Integer
Dim result As Integer
loop_ctr = 1
result = 0

Do While loop_ctr <= 20
result = result + loop_ctr
loop_ctr = loop_ctr + 1
Loop

MsgBox "Π‘ΡƒΠΌΠΌΠ° чисСл ΠΎΡ‚ 1 Π΄ΠΎ 20 Ρ€Π°Π²Π½Π°:" & result
End Sub

Explanation:

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π΅ ΠΌΡ‹ объявили счСтчик Ρ†ΠΈΠΊΠ»Π° loop_ctr для наш Ρ†ΠΈΠΊΠ» Do While.Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ объявили Π΄Ρ€ΡƒΠ³ΡƒΡŽ Ρ†Π΅Π»ΠΎΡ‡ΠΈΡΠ»Π΅Π½Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΊΠ°ΠΊ Β«Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Β» для хранСния суммы чисСл ΠΎΡ‚ 1 Π΄ΠΎ 20.

ПослС этого, вмСстС с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ Do while, Ρƒ нас Π΅ΡΡ‚ΡŒ условиС для запуска Ρ†ΠΈΠΊΠ»Π° Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Β«loop_ctrΒ» Π½Π΅ станСт Ρ€Π°Π²Π½Ρ‹ΠΌ. мСньшС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ 20.

Π’Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π° Do While Loop ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ loop_ctr вмСстС с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Π±ΡƒΠ΄Π΅Ρ‚: 1, Π° Π½Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Π±ΡƒΠ΄Π΅Ρ‚: (1 + 2) = 3. Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ Π½Π° Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚: (3 + 3 ) = 6 ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

ПослС этого ΠΈΠ΄Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ Β«loop_ctrΒ» для ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ.

Π¦ΠΈΠΊΠ» Do While Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π΅ повторяСтся 20 Ρ€Π°Π·, суммируСт всС числа ΠΎΡ‚ 1 Π΄ΠΎ 20 ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ сумму этих чисСл Π² msgbox.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 3: ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»Π° Do While Loop (Π² синтаксисС 2) для выполнСния хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, Π΄Π°ΠΆΠ΅ Ссли провСряСмоС условиС - False.

 Sub DoWhileLoopTest () 
Dim loop_ctr As Integer
loop_ctr = 100

Do
MsgBox "Π‘Ρ‡Π΅Ρ‚Ρ‡ΠΈΠΊ Ρ†ΠΈΠΊΠ»ΠΎΠ²:" & loop_ctr
loop_ctr = loop_ctr + 1
Loop While loop_ctr <= 10

0003 92 End Subplanation

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ 'loop_ctr' ΠΊΠ°ΠΊ 100 ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ условия Ρ†ΠΈΠΊΠ»Π° ΠΌΡ‹ провСряСм 'loop_ctr <10'.Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ†ΠΈΠΊΠ» ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Β«loop_ctrΒ» мСньшС 10. Но Π²Ρ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ, нСсмотря Π½Π° условиС, этот Ρ†ΠΈΠΊΠ» do-while выполняСтся ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·.

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° этого: согласно синтаксису 2 Ρ†ΠΈΠΊΠ»Π° Do While Π½Π΅Ρ‚ возмоТности ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ условия Π² Π½Π°Ρ‡Π°Π»Π΅ Ρ†ΠΈΠΊΠ»Π°. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ условия Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΊΠΎΠ½Ρ†Π΅ Ρ†ΠΈΠΊΠ»Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ†ΠΈΠΊΠ» DoWhile Π² синтаксисС 1, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ:

 Sub DoWhileLoopTest () 
Dim loop_ctr As Integer
loop_ctr = 100

Do While loop_ctr <= 10
MsgBox "Loop Counter: "& loop_ctr
loop_ctr = loop_ctr + 1
Loop

End Sub

НаписаниС Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° Do While

Подобно Π΄Ρ€ΡƒΠ³ΠΈΠΌ Ρ†ΠΈΠΊΠ»Π°ΠΌ, Π² Ρ†ΠΈΠΊΠ»Π°Ρ… Do While ΠΎΡ‡Π΅Π½ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅.Π”Π°Π²Π°ΠΉΡ‚Π΅ разбСрСмся с Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ Do While, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‚ это Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 4: РаспСчатайтС числа ΠΎΡ‚ 1 Π΄ΠΎ 10 Π½Π° всСх листах Π² элСктронной Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Excel с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π° Β«Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠΊΠ°Β».

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ числа ΠΎΡ‚ 1 Π΄ΠΎ 10 Π½Π° всСх листах Π² ΠΊΠ½ΠΈΠ³Π΅ Excel, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ†ΠΈΠΊΠ» do-while. Для этого ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

 Sub NestedDoWhileLoop () 
Dim loop_ctr As Integer
Dim sheet As Integer
sheet = 1

Do While sheet <= Worksheets.Count
loop_ctr = 1
Do While loop_ctr <= 10
Π Π°Π±ΠΎΡ‡ΠΈΠ΅ листы (лист) .Range ("A1"). Offset (loop_ctr - 1, 0). Value = loop_ctr
loop_ctr = loop_ctr + 1
Loop
sheet = sheet + 1
Loop

MsgBox Β«Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ», ΠΏΠΎΠΊΠ° Ρ†ΠΈΠΊΠ» Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½!Β»
End Sub

ПояснСниС:

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π΅ΡΡ‚ΡŒ Π΄Π²Π° Ρ†ΠΈΠΊΠ»Π° Do While, ΠΎΠ΄ΠΈΠ½ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ. Π’Π½Π΅ΡˆΠ½ΠΈΠΉ Ρ†ΠΈΠΊΠ» Do While Loop выполняСт ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ ΠΏΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ «лист» ΠΈ повторяСтся Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ «лист» Π½Π΅ станСт мСньшС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Β«Π Π°Π±ΠΎΡ‡ΠΈΠ΅ листы.Count '(Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ±Ρ‰Π΅Π΅ количСство листов Π² ΠΊΠ½ΠΈΠ³Π΅).

Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Ρ†ΠΈΠΊΠ» Do While Loop выполняСт ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ ΠΏΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ loop_ctr ΠΈ повторяСтся Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ loop_ctr Π½Π΅ станСт мСньшС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ 10. Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π½Π°ΠΌ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ числа Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

Π’Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π»Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ Ρ†ΠΈΠΊΠ»Π° Do While Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ числа ΠΎΡ‚ 1 Π΄ΠΎ 10 Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ листС (согласно Π²Π½Π΅ΡˆΠ½Π΅ΠΌΡƒ Ρ†ΠΈΠΊΠ»Ρƒ).

Π’Π½Π΅ΡˆΠ½ΠΈΠΉ Ρ†ΠΈΠΊΠ» ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅Ρ‚ всС доступныС листы Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… листов Π² элСктронной Ρ‚Π°Π±Π»ΠΈΡ†Π΅, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Ρ†ΠΈΠΊΠ» ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅Ρ‚ числа ΠΎΡ‚ 1 Π΄ΠΎ 10 для Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ листа.

Π­Ρ‚ΠΎ позволяСт ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ числа ΠΎΡ‚ 1 Π΄ΠΎ 10 Π½Π° всСх доступных листах.

БСсконСчный Ρ†ΠΈΠΊΠ» с использованиСм Ρ†ΠΈΠΊΠ»Π° Do While

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Ρ†ΠΈΠΊΠ»Π° For, Ρ†ΠΈΠΊΠ» Do While Loop Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‡Π΅Ρ‚ΠΊΠΈΡ… Β«startΒ», Β«endΒ» ΠΈΠ»ΠΈ Β«step_incrementsΒ», поэтому ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ логичСскиС ошибки, приводящиС ΠΊ бСсконСчному ΠΈΠ»ΠΈ бСсконСчный Ρ†ΠΈΠΊΠ». НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ бСсконСчного Ρ†ΠΈΠΊΠ»Π° Do While:

 'НС запускайтС этот ΠΊΠΎΠ΄ 
Sub InfiniteDoWhileLoop ()
Dim loop_ctr As Integer
loop_ctr = 1

Do While loop_ctr <= 10
ActiveSheet.Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ("A1"). Π‘ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ (loop_ctr - 1, 0) .Value = loop_ctr
Loop

MsgBox ("Loop Ends")
End Sub

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π΅ ΠΌΡ‹ просто пропустили строку для увСличСния счСтчик Ρ†ΠΈΠΊΠ»Π°, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ 'loop_ctr = loop_ctr + 1', ΠΈ это сдСлало Ρ†ΠΈΠΊΠ» бСсконСчным, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 'loop_ctr' всСгда Π±ΡƒΠ΄Π΅Ρ‚ 1 (ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΎ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ увСличиваСтся) ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, условиС Ρ†ΠΈΠΊΠ»Π° 'While loop_ctr <= 10' всСгда Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ ΠΊ истинС.

Подсказка: ВсСгда рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» For Each ΠΈΠ»ΠΈ For Next вмСсто Ρ†ΠΈΠΊΠ»Π° Do While ΠΈΠ»ΠΈ Do until (ΠΊΠΎΠ³Π΄Π° это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ).

Как Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° Do While ΠΈΠ»ΠΈ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· Π½Π΅Π³ΠΎ

Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° Do While, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Exit Do. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ VBA выполняСт ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Β«Exit DoΒ» , ΠΎΠ½ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ послС Ρ†ΠΈΠΊΠ»Π° Do while.

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° это Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 5: Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ†ΠΈΠΊΠ» Do While Π² VBA, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ сумму ΠΏΠ΅Ρ€Π²Ρ‹Ρ… 15 Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… чисСл ΠΎΡ‚ 1 Π΄ΠΎ 100.

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°ΠΉΡ‚ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ 15 Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… чисСл ΠΎΡ‚ 1 Π΄ΠΎ 100, Π° Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ ΠΈΡ… сумму.НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΊΠΎΠ΄ для этого:

 Sub SumFirst15OddNumbers () 
Dim loop_ctr As Integer
Dim odd_number_counter As Integer
Dim sum As Integer

loop_ctr = 1

Do While loop_ctr <= 100
If (loop_ctr ) Π’ΠΎΠ³Π΄Π°
sum = sum + loop_ctr
odd_number_counter = odd_number_counter + 1
End If

If (odd_number_counter = 15) Then
Exit Do
End If

loop_ctr = loop_ctr Sum + 1
Loop2 числа: "& sum
End Sub

ОбъяснСниС:

" Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρƒ нас Π΅ΡΡ‚ΡŒ Ρ‚Ρ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ - 'loop_ctr', 'odd_number_counter' ΠΈ 'sum'.loop_ctr - это пСрСмСнная счСтчика Ρ†ΠΈΠΊΠ»Π°, пСрСмСнная odd_number_counter содСрТит счСтчик Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… чисСл, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ суммированы, Π° пСрСмСнная sum содСрТит сумму ΠΏΠ΅Ρ€Π²Ρ‹Ρ… 15 Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… чисСл.

Π’Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° Do While ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅ΠΌ всС числа ΠΎΡ‚ 1 Π΄ΠΎ 100, ΠΎΠ΄Π½ΠΎ Π·Π° Π΄Ρ€ΡƒΠ³ΠΈΠΌ, ΠΈ провСряСм, Π½Π΅Ρ‡Π΅Ρ‚Π½ΠΎΠ΅ Π»ΠΈ число. Если число Π½Π΅Ρ‡Π΅Ρ‚Π½ΠΎΠ΅, ΠΌΡ‹ суммируСм Π΅Π³ΠΎ ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ Β«odd_number_counterΒ» Π½Π° 1.

ПослС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° IF Π΄Ρ€ΡƒΠ³ΠΎΠ΅ условиС IF провСряСт, Ρ€Π°Π²Π½ΠΎ Π»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Β«odd_number_counterΒ» 15.Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ odd_number_counter Ρ€Π°Π²Π½ΠΎ 15, Ρ‚ΠΎ ΠΏΡ€ΠΈ использовании ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Exit Do ΠΌΡ‹ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π΅ΠΌ Ρ†ΠΈΠΊΠ», ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π΅Ρ‚ смысла ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» дальшС.

НаконСц, ΠΌΡ‹ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ 'sum' с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ msgbox.

VBA Π¦ΠΈΠΊΠ» Β«Π”ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ°Β»

Π¦ΠΈΠΊΠ» Β«Π”ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€Β» ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° Ρ†ΠΈΠΊΠ» Β«Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠΊΠ°Β»; СдинствСнноС Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ -

  • Π¦ΠΈΠΊΠ» do-while повторяСтся, ΠΏΠΎΠΊΠ° выполняСтся ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ условиС.
  • Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Ρ†ΠΈΠΊΠ» Β«do-untilΒ» повторяСтся Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° условиС Π½Π΅ пСрСстанСт Π±Ρ‹Ρ‚ΡŒ истинным.

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΏΠΎΠ½ΡΡ‚ΡŒ эту Ρ€Π°Π·Π½ΠΈΡ†Ρƒ простыми словами:

Для экзСмпляра: Ссли ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» Do Loop с ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ ΠΎΡ‚ 1 Π΄ΠΎ 10, с ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом while, условиСм Π±ΡƒΠ΄Π΅Ρ‚ 'Do While loop_ctr <= 10' ΠΈ с ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом until, Ρ‚ΠΎ ΠΆΠ΅ условиС ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊ Β«Π”ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° loop_ctr> 10Β».

Π§Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚:

  • Π”ΠΎ - ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ Π”ΠΎ счСт большС дСсяти
  • Пока - ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ Пока счСт мСньшС ΠΈΠ»ΠΈ Ρ€Π°Π²Π΅Π½ дСсяти

Из этих ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ясно Π²ΠΈΠ΄Π΅Ρ‚ΡŒ - ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Пока ΠΈ Пока - это ΠΊΠ°ΠΊ Ρ€Π°Π· ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½Ρ‹ΠΉ способ записи ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ условия.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° синтаксис Do until Loop.

Бинтаксис Ρ†ΠΈΠΊΠ»Π° Do Π΄ΠΎ Ρ†ΠΈΠΊΠ»Π° Π² VBA

Подобно Ρ†ΠΈΠΊΠ»Ρƒ Do While, ΠΌΠ΅Ρ‚ΠΎΠ΄ Do until Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²Π° синтаксиса:

Бинтаксис 1 -

 УсловиС Do до 
'ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°
Loop

Или

Бинтаксис 2 -

 Do 
'ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°
Π¦ΠΈΠΊΠ» Π΄ΠΎ состояния

Π—Π΄Π΅ΡΡŒ «условиС» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ основа Ρ†ΠΈΠΊΠ»Π°, Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Π² случаС Ρ†ΠΈΠΊΠ»Π° Do While Loop.На ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ «Пока» провСряСт, оцСниваСтся Π»ΠΈ «условиС» ΠΊΠ°ΠΊ Β«Π˜ΡΡ‚ΠΈΠ½Π°Β» ΠΈΠ»ΠΈ Β«Π›ΠΎΠΆΡŒΒ». Если «условиС» Ρ€Π°Π²Π½ΠΎ False, Ρ†ΠΈΠΊΠ» продолТаСтся. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Ρ†ΠΈΠΊΠ» заканчиваСтся.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΏΠΎΠ½ΡΡ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ этими двумя синтаксисами.

Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ двумя синтаксисами Do until

Как ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ синтаксисС Ρ†ΠΈΠΊΠ»Π° do until, «условиС» провСряСтся ΠΊΠ°ΠΊ пСрвая инструкция. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ссли условиС истинно, Ρ†ΠΈΠΊΠ» do-until Π² синтаксисС 1 Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ.

Π’ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ синтаксисС «условиС» провСряСтся ΠΊΠ°ΠΊ послСдний ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π΄Π°ΠΆΠ΅ Ссли условиС истинно, Ρ†ΠΈΠΊΠ» do-until Π² синтаксисС 2 Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ 1 ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ. Волько послС этого условиС Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ†Π΅Π½Π΅Π½ΠΎ, ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚.

Π˜Ρ‚Π°ΠΊ, синтаксис 2 Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, истинно ΠΈΠ»ΠΈ Π»ΠΎΠΆΠ½ΠΎ условиС.

Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ†ΠΈΠΊΠ» Β«Π”ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€Β»

Бинтаксис 1 -

Допустим, Ρƒ нас Π΅ΡΡ‚ΡŒ Ρ†ΠΈΠΊΠ» Β«Π”ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€Β», ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:

 Dim loop_ctr As Integer 
loop_ctr = 1
Do until loop_ctr> 10
'ВыполняСмыС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°
loop_ctr = loop_ctr + 1
Π¦ΠΈΠΊΠ»
  • Π’ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Π΄Π²ΡƒΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°Ρ… пСрСмСнная loop_ctr ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ ΠΈ инициализируСтся ΠΊΠ°ΠΊ 1.
  • Когда ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ элСмСнт управлСния достигаСт ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Β«Do until loop_ctr> 10Β», ΠΎΠ½ провСряСт, большС Π»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Β«loop_ctrΒ» 10.
  • Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Β«loop_ctrΒ» мСньшС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ 10, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, 'loop_ctr' увСличиваСтся Π½Π° 1.
  • ПослС этого элСмСнт управлСния снова пСрСмСщаСтся, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ условиС Β«Π”ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° loop_ctr> 10Β», ΠΈ Ρ†ΠΈΠΊΠ» продолТаСтся Π΄ΠΎ значСния of 'loop_ctr' мСньшС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ 10.

Бинтаксис 2 -

 Dim loop_ctr As Integer 
loop_ctr = 1
Do
'ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°
loop_ctr = loop_ctr + 1
Loop until loop_ctr> 10
  • Π’ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Π΄Π²ΡƒΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°Ρ…, пСрСмСнная 'loop_ctr' ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ ΠΈ инициализируСтся ΠΊΠ°ΠΊ 1.
  • Когда ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ элСмСнт управлСния достигаСт ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Do, ΠΎΠ½ просто ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Do Π½Π΅ заставляСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ условиС.
  • ПослС этого Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ пСрСмСнная loop_ctr увСличиваСтся Π½Π° 1.
  • Π—Π°Ρ‚Π΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Β«Π¦ΠΈΠΊΠ» Π΄ΠΎ loop_ctr> 10Β» провСряСт, большС Π»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Β«loop_ctrΒ» 10 ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Если ΠΎΠ½ΠΎ мСньшС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ 10, Ρ‚ΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ снова ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ Do, Π½ΠΎ Ссли Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 'loop_ctr' большС 10, Ρ†ΠΈΠΊΠ» Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ, ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Бинтаксис 2 Ρ†ΠΈΠΊΠ»Π° Do until Loop всСгда повторяСтся ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ условиС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, помСщаСтся Π² ΠΊΠΎΠ½Π΅Ρ† Ρ†ΠΈΠΊΠ»Π°.

Π‘Π»ΠΎΠΊ-схСма Ρ†ΠΈΠΊΠ»Π° Do-until Π² VBA

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊ управлСния, ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π½Ρ‹ΠΉ Π½Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ Π±Π»ΠΎΠΊ-схСмС:

Бинтаксис 1 -

  1. Π’ этом синтаксисС Do-until провСряСтся условиС Ρ†ΠΈΠΊΠ»Π° вмСстС с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ Do.
  2. Если условиС Π»ΠΎΠΆΠ½ΠΎ, Ρ‚ΠΎ выполняСтся Β«Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π°Β» Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° do-until, ΠΈ начинаСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ итСрация. КаТдая итСрация ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ провСряСт условиС Ρ†ΠΈΠΊΠ»Π°, ΠΈ Β«Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π°Β» Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° do-until выполняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° условиС оцСниваСтся ΠΊΠ°ΠΊ Π»ΠΎΠΆΠ½ΠΎΠ΅.
  3. Когда условиС Ρ†ΠΈΠΊΠ»Π° становится истинным, ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ Ρ†ΠΈΠΊΠ»Π° большС Π½Π΅ происходит, ΠΈ ΠΏΠΎΡ‚ΠΎΠΊ управлСния ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ Π²Π½Π΅ Ρ†ΠΈΠΊΠ»Π° Do until.

Бинтаксис 2 -

  1. Π’ этом синтаксисС Do-until условиС Ρ†ΠΈΠΊΠ»Π° - Π½Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΎ вмСстС с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ Do.
  2. Π’Π°ΠΊ ΠΊΠ°ΠΊ для ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ условиС Π½Π΅ провСряСтся. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π»Π° do-until Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½.
  3. ПослС ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ каТдая ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ итСрация ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ провСряСт условиС Ρ†ΠΈΠΊΠ»Π°, ΠΈ Β«Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π°Β» Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° do-until выполняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° условиС оцСниваСтся ΠΊΠ°ΠΊ Π»ΠΎΠΆΠ½ΠΎΠ΅.
  4. Когда условиС Ρ†ΠΈΠΊΠ»Π° становится истинным, ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ Ρ†ΠΈΠΊΠ»Π° большС Π½Π΅ происходит, ΠΈ ΠΏΠΎΡ‚ΠΎΠΊ управлСния ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ Π²Π½Π΅ Ρ†ΠΈΠΊΠ»Π° Do until.

НСсколько простых ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Ρ†ΠΈΠΊΠ»Π° Β«Π”ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ°Β» Π² VBA

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1. РаспСчатайтС числа ΠΎΡ‚ 1 Π΄ΠΎ 10 Π² Excel с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π° Β«Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΄ΠΎΒ» Π² VBA.

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρƒ нас Π΅ΡΡ‚ΡŒ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Β«A1: A10Β», ΠΈ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ этот Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ числами ΠΎΡ‚ 1 Π΄ΠΎ 10. Для этого ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

 Sub DoUntilLoopPrintNumbers () 
Dim loop_ctr As Integer
loop_ctr = 1

Do until loop_ctr <10
ActiveSheet.Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ("A1"). Π‘ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ (loop_ctr - 1, 0) .Value = loop_ctr
loop_ctr = loop_ctr + 1
Loop

MsgBox ("Loop Ends")
End Sub

ПояснСниС:

In the ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄, ΠΏΡ€Π΅ΠΆΠ΄Π΅ всСго, ΠΌΡ‹ объявили ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ loop_ctr для нашСго Ρ†ΠΈΠΊΠ»Π° Do until. Π—Π°Ρ‚Π΅ΠΌ, наряду с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ Do until, Ρƒ нас Π΅ΡΡ‚ΡŒ условиС для запуска Ρ†ΠΈΠΊΠ»Π° Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ loop_ctr Π½Π΅ станСт большС 10.

Π’Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π° Do till ΠΌΡ‹ написали ΠΊΠΎΠ΄ для записи значСния loop_ctr Π² Excel Π² столбцС A.

ПослС этого ΠΈΠ΄Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ Β«loop_ctrΒ» для ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ loop_ctr станСт большС 10, Ρ†ΠΈΠΊΠ» Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2: Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ†ΠΈΠΊΠ» Do Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€ Π² VBA, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ сумму всСх чисСл ΠΎΡ‚ 1 Π΄ΠΎ 20.

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ†ΠΈΠΊΠ» do until, ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π±Π΅Ρ€Π΅ΠΌ всС числа ΠΎΡ‚ 1 Π΄ΠΎ 20 ΠΈ суммируСм ΠΈΡ…. НаконСц, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Π½Π° экранС сумму чисСл ΠΎΡ‚ 1 Π΄ΠΎ 20.Для этого ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

 Sub DoUntilLoopSumNumbers () 
Dim loop_ctr As Integer
Dim result As Integer
loop_ctr = 1
result = 0

Do until loop_ctr> 20
result = result + loop_ctr
loop_rctr = loop_ctr = loop_ctr + 1
Loop

MsgBox "Π‘ΡƒΠΌΠΌΠ° чисСл ΠΎΡ‚ 1 Π΄ΠΎ 20 Ρ€Π°Π²Π½Π°:" & result
End Sub

Explanation:

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π΅ ΠΌΡ‹ объявили счСтчик Ρ†ΠΈΠΊΠ»Π° 'loop_ctr' для нашСго дСйствия Π΄ΠΎ пСтля.Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ объявили Π΄Ρ€ΡƒΠ³ΡƒΡŽ Ρ†Π΅Π»ΠΎΡ‡ΠΈΡΠ»Π΅Π½Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΊΠ°ΠΊ Β«Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Β» для хранСния суммы чисСл ΠΎΡ‚ 1 Π΄ΠΎ 20.

ПослС этого, наряду с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ Β«Π”ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€Β», Ρƒ нас Π΅ΡΡ‚ΡŒ условиС для запуска Ρ†ΠΈΠΊΠ»Π° Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Β«loop_ctrΒ» Π½Π΅ станСт большС. Ρ‡Π΅ΠΌ 20.

Π’Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π° Do until Loop ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ loop_ctr вмСстС с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Π±ΡƒΠ΄Π΅Ρ‚: 1, Π° Π½Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ: (1 + 2) = 3; Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ, Π½Π° Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚: (3 + 3) = 6 ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

ПослС этого ΠΈΠ΄Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ Β«loop_ctrΒ» для ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ.

Π¦ΠΈΠΊΠ» Do until Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π΅ повторяСтся 20 Ρ€Π°Π·, суммируСт всС числа ΠΎΡ‚ 1 Π΄ΠΎ 20 ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ сумму этих чисСл Π² msgbox.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 3: ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»Π° Β«Π”ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ°Β» (Π² синтаксисС 2) выполняСтся хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, Π΄Π°ΠΆΠ΅ Ссли провСряСмоС условиС истинно.

 Sub DoUntilLoopTest () 
Dim loop_ctr As Integer
loop_ctr = 100

Do
MsgBox Β«Π‘Ρ‡Π΅Ρ‚Ρ‡ΠΈΠΊ Ρ†ΠΈΠΊΠ»ΠΎΠ²:Β» & loop_ctr
loop_ctr = loop_ctr + 1
Π¦ΠΈΠΊΠ» Π΄ΠΎ loop_ctr> 10 91


End Sub

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ 'loop_ctr' ΠΊΠ°ΠΊ 100 ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ условия Ρ†ΠΈΠΊΠ»Π° ΠΌΡ‹ провСряСм 'loop_ctr> 10'.Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ†ΠΈΠΊΠ» ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Β«loop_ctrΒ» мСньшС 10. Но Π²Ρ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ, нСсмотря Π½Π° условиС, этот Ρ†ΠΈΠΊΠ» do-until выполняСтся ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·.

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° этого Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ: согласно синтаксису 2 Ρ†ΠΈΠΊΠ»Π° Do until, Π½Π΅Ρ‚ возмоТности ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ условия Π² Π½Π°Ρ‡Π°Π»Π΅ Ρ†ΠΈΠΊΠ»Π°. УсловиС ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΊΠΎΠ½Ρ†Π΅ Ρ†ΠΈΠΊΠ»Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ†ΠΈΠΊΠ» Do until Π² синтаксисС 1, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ:

 Sub DoUntilLoopTest () 
Dim loop_ctr As Integer
loop_ctr = 100

Do until loop_ctr> 10
MsgBox "Π‘Ρ‡Π΅Ρ‚Ρ‡ΠΈΠΊ Ρ†ΠΈΠΊΠ»ΠΎΠ² : "& loop_ctr
loop_ctr = loop_ctr + 1
Loop
End Sub

НаписаниС Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° Do Π΄ΠΎ Loop

Подобно Π΄Ρ€ΡƒΠ³ΠΈΠΌ Ρ†ΠΈΠΊΠ»Π°ΠΌ Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡ‡Π΅Π½ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π² Ρ†ΠΈΠΊΠ»Π΅ Do Until Loop.Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, ΠΊΠ°ΠΊ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» Β«Π”ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€Β»:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 4: РаспСчатайтС числа ΠΎΡ‚ 1 Π΄ΠΎ 5 Π½Π° всСх листах Π² элСктронной Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Excel, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ†ΠΈΠΊΠ» Β«Π”ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€Β».

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ числа ΠΎΡ‚ 1 Π΄ΠΎ 5 Π½Π° всСх листах Π² ΠΊΠ½ΠΈΠ³Π΅ Excel, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ†ΠΈΠΊΠ» do until. Для этого ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

 Sub NestedDoUntilLoop () 
Dim loop_ctr As Integer
Dim sheet As Integer
sheet = 1

Do until sheet> Worksheets.Π‘Ρ‡Π΅Ρ‚Ρ‡ΠΈΠΊ
loop_ctr = 1
Π”ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° loop_ctr> 5
Π Π°Π±ΠΎΡ‡ΠΈΠ΅ листы (лист). Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ("A1"). Π‘ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ (loop_ctr - 1, 0). Value = loop_ctr
loop_ctr = loop_ctr + 1
Loop
sheet = sheet + 1
Loop

MsgBox «ВлоТСнная опСрация Π΄ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ†ΠΈΠΊΠ»Π°!Β»
End Sub

ПояснСниС:

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π΅ΡΡ‚ΡŒ Π΄Π²Π° Ρ†ΠΈΠΊΠ»Π° Β«Π”ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€Β», ΠΎΠ΄ΠΈΠ½ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ. Π’Π½Π΅ΡˆΠ½ΠΈΠΉ Ρ†ΠΈΠΊΠ» Β«Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€Β» выполняСт ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ ΠΏΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ «лист» ΠΈ повторяСтся Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ «лист» Π½Π΅ станСт большС, Ρ‡Π΅ΠΌ Β«Π Π°Π±ΠΎΡ‡ΠΈΠ΅ листы.Count '(Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ±Ρ‰Π΅Π΅ количСство листов Π² ΠΊΠ½ΠΈΠ³Π΅).

Inner Do until Loop выполняСт ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ ΠΏΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ loop_ctr ΠΈ повторяСтся Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ loop_ctr Π½Π΅ станСт большС 5. Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π½Π°ΠΌ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ числа Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

Π’Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π° Inner Do until Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ числа ΠΎΡ‚ 1 Π΄ΠΎ 5 Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ листС (согласно Π²Π½Π΅ΡˆΠ½Π΅ΠΌΡƒ Ρ†ΠΈΠΊΠ»Ρƒ).

Π’Π½Π΅ΡˆΠ½ΠΈΠΉ Ρ†ΠΈΠΊΠ» ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅Ρ‚ всС доступныС Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ листы Π² элСктронной Ρ‚Π°Π±Π»ΠΈΡ†Π΅, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Ρ†ΠΈΠΊΠ» ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅Ρ‚ числа ΠΎΡ‚ 1 Π΄ΠΎ 5 для Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ листа.

Π­Ρ‚ΠΎ позволяСт ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ числа ΠΎΡ‚ 1 Π΄ΠΎ 5 Π½Π° всСх доступных листах.

БСсконСчный Ρ†ΠΈΠΊΠ» с использованиСм Ρ†ΠΈΠΊΠ»Π° Β«Π”ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ°Β»

БинтаксичСски Ρ†ΠΈΠΊΠ» Β«Π”ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚Β» сильно отличаСтся ΠΎΡ‚ Ρ†ΠΈΠΊΠ»Π° «Для», ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ Π½Π΅ обСспСчиваСт Ρ‡Π΅Ρ‚ΠΊΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Β«startΒ», Β«endΒ» ΠΈΠ»ΠΈ Β«step_incrementsΒ», поэтому Π΅Π³ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ логичСским. ошибки, приводящиС ΠΊ бСсконСчному ΠΈΠ»ΠΈ бСсконСчному Ρ†ΠΈΠΊΠ»Ρƒ.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ бСсконСчного Ρ†ΠΈΠΊΠ»Π° Β«Π”ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€Β»:

 'НС запускайтС этот ΠΊΠΎΠ΄ 
Sub InfiniteDoUntilLoop ()
Dim loop_ctr As Integer
loop_ctr = 1

Do until loop_ctr> 10
ActiveSheet.Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ("A1"). Π‘ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ (loop_ctr - 1, 0) .Value = loop_ctr
Loop

MsgBox ("Loop Ends")
End Sub

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π΅ ΠΌΡ‹ просто пропустили строку для увСличСния счСтчик Ρ†ΠΈΠΊΠ»Π°, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ 'loop_ctr = loop_ctr + 1', ΠΈ это сдСлало Ρ†ΠΈΠΊΠ» бСсконСчным, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 'loop_ctr' всСгда Π±ΡƒΠ΄Π΅Ρ‚ 1 (ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΎ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ увСличиваСтся), ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, условиС Ρ†ΠΈΠΊΠ»Π° 'Пока loop_ctr> 10' всСгда Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ Π»ΠΎΠΆΠ½Ρ‹ΠΉ.

Подсказка: ВсСгда рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» For Each ΠΈΠ»ΠΈ For Next вмСсто Ρ†ΠΈΠΊΠ»Π° Do While ΠΈΠ»ΠΈ Do until (ΠΊΠΎΠ³Π΄Π° это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ).

Как ΠΏΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° Β«Π”ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€Β»

Подобно Ρ†ΠΈΠΊΠ»Ρƒ Β«Π”ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€Β», ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° Β«Π”ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€Β» ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΉΡ‚ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Exit Do . Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ VBA выполняСт ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Exit Do, ΠΎΠ½ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ послС Ρ†ΠΈΠΊΠ»Π° Do until.

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° это Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 5: Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ†ΠΈΠΊΠ» Do until Π² VBA, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ сумму ΠΏΠ΅Ρ€Π²Ρ‹Ρ… 20 Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… чисСл ΠΎΡ‚ 1 Π΄ΠΎ 100.

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°ΠΉΡ‚ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ 20 Ρ‡Π΅Ρ‚Π½Ρ‹Π΅ числа ΠΎΡ‚ 1 Π΄ΠΎ 100, Π° Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ ΠΈΡ… сумму.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΊΠΎΠ΄ для этого:

 Sub SumFirst20EvenNumbers () 
Dim loop_ctr As Integer
Dim even_number_counter As Integer
Dim sum As Integer

loop_ctr = 1

Do loop_ctr <100
Mod 2 (loop ) Π’ΠΎΠ³Π΄Π°
сумма = сумма + loop_ctr
even_number_counter = even_number_counter + 1
End If

If (even_number_counter = 20) Then
Exit Do
End If

loop_ctr = loop_ctr + 1
Loop 9000g3 Top 9000g3 числа: "& sum
End Sub

ОбъяснСниС:

" Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρƒ нас Π΅ΡΡ‚ΡŒ Ρ‚Ρ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ - 'loop_ctr', 'even_number_counter' ΠΈ 'sum'.'loop_ctr' - это пСрСмСнная счСтчика Ρ†ΠΈΠΊΠ»Π°, пСрСмСнная 'even_number_counter' содСрТит количСство суммированных Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… чисСл (ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡΡƒΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ 20 Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… чисСл), Π° пСрСмСнная sum содСрТит сумму ΠΏΠ΅Ρ€Π²Ρ‹Ρ… 20 Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… чисСл. .

Π’Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° Β«Π”ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€Β» ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅ΠΌ всС числа ΠΎΡ‚ 1 Π΄ΠΎ 100, ΠΎΠ΄Π½ΠΎ Π·Π° Π΄Ρ€ΡƒΠ³ΠΈΠΌ, ΠΈ провСряСм, Ρ‡Π΅Ρ‚Π½ΠΎΠ΅ Π»ΠΈ число. Если число Ρ‡Π΅Ρ‚Π½ΠΎΠ΅, ΠΌΡ‹ суммируСм Π΅Π³ΠΎ ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ счСтчик Ρ‡Π΅Ρ‚Π½Ρ‹Ρ…_числов Π½Π° 1.

ПослС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° Π•Π‘Π›Π˜ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ условиС Π•Π‘Π›Π˜ провСряСт, Ρ€Π°Π²Π½ΠΎ Π»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Β«Ρ‡Π΅Ρ‚Π½ΠΎΠ΅_число_счСтчик» 20.Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Β«even_number_counterΒ» Ρ€Π°Π²Π½ΠΎ 20, Ρ‚ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Β«Exit DoΒ», ΠΌΡ‹ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π΅ΠΌ Ρ†ΠΈΠΊΠ», ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π΅Ρ‚ смысла Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» дальшС.

Π’ Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Ρ†ΠΈΠΊΠ» Wend Π² VBA (ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΉ)

Π₯отя Ρ†ΠΈΠΊΠ» Wend Π±Ρ‹Π» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π² VBA Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для обСспСчСния ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ совмСстимости, Microsoft Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» Do While Loop вмСсто Ρ†ΠΈΠΊΠ»Π° While Wend Loop.

Π₯отя Ρ†ΠΈΠΊΠ» Wend Loop Π½Π΅ Ρ‚Π°ΠΊ структурирован ΠΈ Π³ΠΈΠ±ΠΎΠΊ, ΠΊΠ°ΠΊ Ρ†ΠΈΠΊΠ» Do While Loop, ΠΎΠ½ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ идСю ΠΏΡ€Π΅ΠΆΠ΄Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°.

Π‘ΠΎΠ²Π΅Ρ‚: Если Π²Ρ‹ ΠΈΠ·ΡƒΡ‡Π°Π΅Ρ‚Π΅ Ρ†ΠΈΠΊΠ»Ρ‹ Π² VBA, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ эту Ρ‚Π΅ΠΌΡƒ. Однако, Ссли Π²Ρ‹ ΠΈΠΌΠ΅Π΅Ρ‚Π΅ Π΄Π΅Π»ΠΎ с ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ While Wend, я Π±Ρ‹ ΠΏΠΎΡ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π» Π²Π°ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΡ… ΠΈ вмСсто этого Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»Ρ‹ Do while.

Бинтаксис Ρ†ΠΈΠΊΠ»Π° While Wend

Бинтаксис Ρ†ΠΈΠΊΠ»Π° While Wend Loop выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

 УсловиС 
Β«ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°Β»
Wend

«условиС» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² качСствС основы Ρ†ΠΈΠΊΠ»Π°. На ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ While провСряСт, оцСниваСтся Π»ΠΈ «условиС» ΠΊΠ°ΠΊ Β«Π˜ΡΡ‚ΠΈΠ½Π°Β» ΠΈΠ»ΠΈ Β«Π›ΠΎΠΆΡŒΒ».Если «условиС» истинно, Ρ†ΠΈΠΊΠ» продолТаСтся; Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Ρ†ΠΈΠΊΠ» Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ Ρ†ΠΈΠΊΠ» While Wend для ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ чисСл ΠΎΡ‚ 1 Π΄ΠΎ 10.

Для этого ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

 Sub WhileWendExample () 
Dim loop_ctr As Integer
loop_ctr = 1

While loop_ctr <= 10
ActiveSheet.Range ("A1"). Π‘ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ (loop_ctr - 1, 0) .Value = loop_ctr
loop_ctr = loop_ctr + 1
Wend

MsgBox "Loop Ends!"
End Sub

ОбъяснСниС:

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π΅, ΠΏΡ€Π΅ΠΆΠ΄Π΅ всСго, ΠΌΡ‹ объявляСм ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ счСтчика Ρ†ΠΈΠΊΠ»Π° 'loop_ctr' ΠΊΠ°ΠΊ 1.Π”Π°Π»Π΅Π΅ ΠΈΠ΄Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ While вмСстС с условиСм Β«While loop_ctr <= 10Β».

Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ loop_ctr Π½Π΅ станСт мСньшС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ 10. ПослС этого ΠΌΡ‹ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ loop_ctr Π² Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ листС ΠΈ Π·Π°Ρ‚Π΅ΠΌ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ счСтчик Ρ†ΠΈΠΊΠ»Π°. Когда встрСчаСтся ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Wend, начинаСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ итСрация.

Π¦ΠΈΠΊΠ» Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ повторяСтся 10 Ρ€Π°Π·, послС Ρ‡Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 'loop_ctr' становится 11, ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, условиС Ρ†ΠΈΠΊΠ»Π° становится Π»ΠΎΠΆΠ½Ρ‹ΠΌ, ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ послС Ρ†ΠΈΠΊΠ»Π° while when.

НаконСц, сообщСниС "Loop Ends!" отобраТаСтся Π½Π° экранС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²Π΅Π΄ΠΎΠΌΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π°.

Как Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ VBA Π² Excel

Код VBA ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΡΠ»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° Visual Basic. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Visual Basic Π² Excel, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия:

  • Если Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ Π² Windows, Π½Π°ΠΆΠΌΠΈΡ‚Π΅ клавиши (ALT + F11). Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ MAC, Π½Π°ΠΆΠΌΠΈΡ‚Π΅ клавиши ( Opt + F11). ΠžΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ΡΡ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Visual Basic .
  • ПослС открытия Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° Visual Basic. ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² Β«Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒΒ» ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Β«ΠœΠΎΠ΄ΡƒΠ»ΡŒΒ», ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ. Π­Ρ‚ΠΎ вставит ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ модуля для вашСй ΠΊΠ½ΠΈΠ³ΠΈ.
  • Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Ρ‹ Π² ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΈΡ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ½ΠΎΠΏΠΊΠΈ выполнСния, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ.

Π‘ΠΎΠ²Π΅Ρ‚Ρ‹ ΠΏΠΎ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅

  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ F5 для запуска ΠΊΠΎΠ΄Π°.
  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ F9, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ останова.
  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ F8, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Β«ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈΒ» ΠΈΠ»ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ построчно.Π•Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΊΠΎΠ΄Π° ΠΈ выполнСния Π΅Π³ΠΎ построчно.

Π˜Ρ‚Π°ΠΊ, это всС ΠΎ Ρ†ΠΈΠΊΠ»Π°Ρ… VBA. Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚Π΅ Π½Π°ΠΌ, Ссли Ρƒ вас Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ вопросы, связанныС с этой Ρ‚Π΅ΠΌΠΎΠΉ.

РСкомСндуСмая Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π°

Do ... ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ†ΠΈΠΊΠ»Π° (VBA) | Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Microsoft

  • 2 ΠΌΠΈΠ½ΡƒΡ‚Ρ‹ Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅

ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΠ΅Ρ‚ Π±Π»ΠΎΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², ΠΏΠΎΠΊΠ° условиС Π½Π΅ станСт True ΠΈΠ»ΠΈ ΠΏΠΎΠΊΠ° условиС Π½Π΅ станСт True .

Бинтаксис

Π”ΠΎ [{ Π’ Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ | Π”ΠΎ } условиС ]
[ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ]
[ Exit Do ]
[ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ]
Π¦ΠΈΠΊΠ»

Или Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот синтаксис:

Do
[ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ]
[ Exit Do ]
[ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ]
Π¦ΠΈΠΊΠ» [{ While | Π΄ΠΎ } состояниС ]

Бинтаксис ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Do Loop состоит ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… частСй:

Π§Π°ΡΡ‚ΡŒ ОписаниС
состояниС ΠΠ΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ.ЧисловоС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ строковоС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ True ΠΈΠ»ΠΈ False . Если условиС ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Null, условиС обрабатываСтся ΠΊΠ°ΠΊ False .
вСдомости Одно ΠΈΠ»ΠΈ нСсколько ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‚ΡΡ ΠΏΠΎΠΊΠ° ΠΈΠ»ΠΈ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° условиС Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π˜ΡΡ‚ΠΈΠ½Π½ΠΎ .

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ

Π›ΡŽΠ±ΠΎΠ΅ количСство ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Exit Do ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΎ Π² любом мСстС Ρ†ΠΈΠΊΠ»Π° Do… Loop Π² качСствС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ способа Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° Do… Loop . Exit Do часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ послС ΠΎΡ†Π΅Π½ΠΊΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ условия, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ If… Then , ΠΈ Π² этом случаС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Exit Do ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ сразу Π·Π° Ρ†ΠΈΠΊΠ»ΠΎΠΌ Loop .

ΠŸΡ€ΠΈ использовании Π²ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°Ρ… Do… Loop , Exit Do ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ находится Π½Π° ΠΎΠ΄ΠΈΠ½ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ влоТСнности Π²Ρ‹ΡˆΠ΅ Ρ†ΠΈΠΊΠ»Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ происходит Exit Do .

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ Do.МоТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ..Loop . Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Do ... Loop повторяСтся 10 Ρ€Π°Π·, ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, слСдуСт Π»ΠΈ Π΅ΠΌΡƒ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ, устанавливаСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ„Π»Π°Π³Π° False , ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ НСт , ΠΈ ΠΏΡ€Π΅ΠΆΠ΄Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Exit Do ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅. Π’Π½Π΅ΡˆΠ½ΠΈΠΉ Ρ†ΠΈΠΊΠ» Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ сразу послС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ значСния Ρ„Π»Π°Π³Π°.

  Public Sub LoopExample ()
    ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° тусклости ΠΊΠ°ΠΊ логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, счСтчик Π΄ΠΎ Π΄Π»ΠΈΠ½Ρ‹, всСго Π΄ΠΎ Π΄Π»ΠΈΠ½Ρ‹
    Check = True: Counter = 0: Total = 0 'Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅.Π‘Π΄Π΅Π»Π°ΠΉΡ‚Π΅ внСшнюю ΠΏΠ΅Ρ‚Π»ΡŽ.
        Π‘Ρ‡Π΅Ρ‚Ρ‡ΠΈΠΊ Do while <20 Ρ„ΡƒΡ‚ΠΎΠ² Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ ΠΏΠ΅Ρ‚Π»ΠΈ
            Π‘Ρ‡Π΅Ρ‚Ρ‡ΠΈΠΊ = Π‘Ρ‡Π΅Ρ‚Ρ‡ΠΈΠΊ + 1 'Π‘Ρ‡Π΅Ρ‚Ρ‡ΠΈΠΊ приращСния.
            Если Counter Mod 10 = 0, Ρ‚ΠΎ 'ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠΉΡ‚Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 10.
                Check = (MsgBox ("ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ?", VbYesNo) = vbYes) 'ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°ΠΆΠΌΠ΅Ρ‚ Π½Π° "НСт"
                If Not Check Then Exit Do 'Π’Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ Ρ†ΠΈΠΊΠ»Π°.
            ΠšΠΎΠ½Π΅Ρ†, Ссли
        ΠŸΠ΅Ρ‚Π»Ρ
        Total = Total + Counter 'Exit Do Lands here.
        Π‘Ρ‡Π΅Ρ‚Ρ‡ΠΈΠΊ = 0
    Loop until Check = False 'НСмСдлСнный Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· внСшнСго Ρ†ΠΈΠΊΠ»Π°.MsgBox Β«ΠŸΠΎΠ΄ΡΡ‡ΠΈΡ‚Π°Π½ΠΎ Π΄ΠΎ:Β» & ВсСго
ΠšΠΎΠ½Π΅Ρ† подписки
  

Π‘ΠΌ. Π’Π°ΠΊΠΆΠ΅

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΈ ΠΎΡ‚Π·Ρ‹Π²Ρ‹

Π£ вас Π΅ΡΡ‚ΡŒ вопросы ΠΈΠ»ΠΈ ΠΎΡ‚Π·Ρ‹Π²Ρ‹ ΠΎΠ± Office VBA ΠΈΠ»ΠΈ этой Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ? Π‘ΠΌ. Π Π°Π·Π΄Π΅Π» ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΈ ΠΎΡ‚Π·Ρ‹Π²Ρ‹ Office VBA, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΈ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΎΡ‚Π·Ρ‹Π².

Π¦ΠΈΠΊΠ»Ρ‹ For Next ΠΈ For each Next для VBA Π² Excel

Π˜Ρ‚ΠΎΠ³: Π¦ΠΈΠΊΠ»Ρ‹ For Next Loops - это ΠΎΠ΄Π½ΠΈ ΠΈΠ· самых ΠΌΠΎΡ‰Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² кодирования макросов VBA для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±Ρ‰ΠΈΡ… Π·Π°Π΄Π°Ρ‡ Π² Excel.Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ†ΠΈΠΊΠ» для повторСния дСйствий с ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠ΅ΠΉ элСмСнтов, Ρ‡Ρ‚ΠΎ позволяСт Π½Π°ΠΌ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ массу Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π΅.

Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ: Π‘Ρ€Π΅Π΄Π½ΠΈΠΉ

ВозмоТности Ρ†ΠΈΠΊΠ»ΠΎΠ² VBA

Π’ Excel ΠΌΡ‹ Ρ‚Ρ€Π°Ρ‚ΠΈΠΌ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠ΅ простых Π·Π°Π΄Π°Ρ‡. Π­Ρ‚ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ дСйствия, ΠΊΠ°ΠΊ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠ², ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… листов, ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ вставка Π² нСсколько ΠΊΠ½ΠΈΠ³, ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ² ΠΊ нСскольким Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌ ΠΈΠ»ΠΈ сводным Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌ, Π·Π°ΠΌΠ΅Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Ρ„ΠΎΡ€ΠΌΡƒΠ» ΠΈ Ρ‚. Π”.

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ Π²ΡΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ нСсколько Π·Π°Π΄Π°Ρ‡, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Π°ΠΌ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ процСсс снова ΠΈ снова?

Π­Ρ‚ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ Ρ‚Ρ€ΡƒΠ΄ΠΎΠ΅ΠΌΠΊΠΈΠΌΠΈ ΠΈ ΠΠΠŸΠžΠœΠ˜ΠΠΠ’Π•Π›Π¬ΠΠ«ΠœΠ˜!

К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, Π²Ρ‹Ρ…ΠΎΠ΄ Π΅ΡΡ‚ΡŒ. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»Ρ‹ Π² Π½Π°ΡˆΠΈΡ… макросах VBA, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‡Π΅Π½ΡŒ быстро повторяли дСйствия . Π—Π°Π΄Π°Ρ‡ΠΈ, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΡΡ‚ΡŒ нСсколько часов, ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π·Π° считанныС сСкунды с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π°.

Π¦ΠΈΠΊΠ» For Next Loop - это Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнный Ρ‚ΠΈΠΏ Ρ†ΠΈΠΊΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π½Π°ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ эти ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ задания.Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим Π΄Π²Π° Ρ‚ΠΈΠΏΠ° Ρ†ΠΈΠΊΠ»ΠΎΠ² For Next Loops.

Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°

Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ бСсплатный Ρ„Π°ΠΉΠ» Excel, содСрТащий ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ макросов с Ρ†ΠΈΠΊΠ»ΠΎΠΌ For Next Loop.

для макроса VBA ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ†ΠΈΠΊΠ»Π° Examples.xlsm (79,0 ΠšΠ‘)

Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ PDF-Π²Π΅Ρ€ΡΠΈΡŽ ΡΡ‚Π°Ρ‚ΡŒΠΈ для ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ.

ОписаниС Ρ†ΠΈΠΊΠ»Π° For Next ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° для VBA Excel - Excel Campus.pdf (490,5 ΠšΠ‘)

Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ†ΠΈΠΊΠ» For Next?

Π¦ΠΈΠΊΠ» For Next Loop позволяСт Π½Π°ΠΌ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ элСмСнтов Π² Excel.ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π°Π±ΠΎΡ€ΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΠ»ΠΈ списком чисСл.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚:

  • Π―Ρ‡Π΅ΠΉΠΊΠΈ Π² ассортимСнтС.
  • Π Π°Π±ΠΎΡ‡ΠΈΠ΅ листы Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Ρ‚Π΅Ρ‚Ρ€Π°Π΄ΠΈ.
  • ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅.
  • Π‘Π²ΠΎΠ΄Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π½Π° листС.
  • Π‘Π²ΠΎΠ΄Π½Ρ‹Π΅ поля Π² сводной Ρ‚Π°Π±Π»ΠΈΡ†Π΅.
  • Π€ΠΈΠ³ΡƒΡ€Ρ‹ Π½Π° листС.
  • И любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π²Ρ‹ взаимодСйствуСтС Π² Excel.

Π—Π°Π΄Π°Ρ‡Π° Ρ†ΠΈΠΊΠ»Π° For Next Loop - Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ дСйствия (строки ΠΊΠΎΠ΄Π°) Π½Π°Π΄ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ элСмСнтом Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π½ΠΈΠΆΠ΅ содСрТит Ρ†ΠΈΠΊΠ» For Next Loop, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ просматриваСт ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ лист Π² ΠΊΠ½ΠΈΠ³Π΅ ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ лист. Π¦ΠΈΠΊΠ» начинаСтся с ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ (ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ лист Π² ΠΊΠ½ΠΈΠ³Π΅) ΠΈ выполняСт строку (строки) ΠΊΠΎΠ΄Π° ΠΌΠ΅ΠΆΠ΄Ρƒ строками For ΠΈ Next для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ (ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ листа Π² ΠΊΠ½ΠΈΠ³Π΅).

 Sub Unhide_Multiple_Sheets ()

Dim ws ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ лист

Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ страницы Π² ActiveWorkbook.Worksheets
ws.Visible = xlSheetVisible
Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ws

ΠšΠΎΠ½Ρ†Π΅Π²ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π½ΠΈΠΊ 

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ логичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ If, для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ свойств ΠΈ условий ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ дСйствий. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ макрос ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ листы, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΅ΡΡ‚ΡŒ Ρ„Ρ€Π°Π·Π° Β«ABC Global Co.Β». Π² ячСйкС A1 ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ листа ΠΈ скрываСт всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ листы.

 Sub Unhide_Report_Sheets ()

Dim ws ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ лист

Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ страницы Π² ActiveWorkbook.Worksheets
Если ws.Range ("A1"). Value = "ABC Global Co." ΠŸΠΎΡ‚ΠΎΠΌ
ws.Visible = xlSheetVisible
Π•Ρ‰Π΅
ws.Visible = xlSheetHidden
ΠšΠΎΠ½Π΅Ρ†, Ссли
Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ws

ΠšΠΎΠ½Ρ†Π΅Π²ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π½ΠΈΠΊ 

Π”Π²Π° Ρ‚ΠΈΠΏΠ° Ρ†ΠΈΠΊΠ»ΠΎΠ² For Next

На самом Π΄Π΅Π»Π΅ сущСствуСт Π΄Π²Π° Ρ‚ΠΈΠΏΠ° Ρ†ΠΈΠΊΠ»ΠΎΠ² For Next Loops.

  1. Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ†ΠΈΠΊΠ»Π° ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ элСмСнтов.
  2. For Next Loops ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅Ρ‚ Π½Π°Π±ΠΎΡ€ чисСл.

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ….

Π¦ΠΈΠΊΠ» для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ†ΠΈΠΊΠ»Π°: Ρ†ΠΈΠΊΠ» ΠΏΠΎ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ элСмСнтов

Как ΠΌΡ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ Π²Ρ‹ΡˆΠ΅, Ρ†ΠΈΠΊΠ» For Each Next позволяСт Π½Π°ΠΌ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ элСмСнтов ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².Π­Ρ‚ΠΎ, вСроятно, самый распространСнный Ρ†ΠΈΠΊΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π² Excel, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ с коллСкциями ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². ΠžΠΏΡΡ‚ΡŒ ΠΆΠ΅, эти ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой ячСйки Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅, листы Π² ΠΊΠ½ΠΈΠ³Π΅, сводныС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π² листС ΠΈ Ρ‚. Π”.

ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ написания Ρ†ΠΈΠΊΠ»Π° For Each Next Loop, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ всС Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ листы Π² ΠΊΠ½ΠΈΠ³Π΅.

Π•ΡΡ‚ΡŒ 4 основных шага для написания Ρ†ΠΈΠΊΠ»Π° For Each Next Π² VBA:

  1. ΠžΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.
  2. ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки ссылки Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ.
  3. Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ строку (ΠΈ) ΠΊΠΎΠ΄Π° для повторСния для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ.
  4. ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ строку, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΌΠΊΠ½ΡƒΡ‚ΡŒ Ρ†ΠΈΠΊΠ».

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ рассмотрим ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· этих шагов.

Π¨Π°Π³ 1. ОбъявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°

Π‘Π½Π°Ρ‡Π°Π»Π° Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, которая Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ссылку Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

Π‘Ρ‚Ρ€ΠΎΠΊΠ° Dim Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ части макроса ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.Π’ этом случаС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ прСдставляСт собой Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ лист. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ любоС имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΊΠ°ΠΊΠΎΠ΅ Π·Π°Ρ…ΠΎΡ‚ΠΈΠΌ, Ссли ΠΎΠ½ΠΎ Π½Π΅ совпадаСт с Π΄Ρ€ΡƒΠ³ΠΎΠΉ ссылкой Π² ​​VBA. Β«WsΒ» - это Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнноС имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ листа, Π½ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ это ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ.

 Dim ws ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ лист 
Π¨Π°Π³ 2 - Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки

Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ напишСм ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ For Each. Π­Ρ‚ΠΎ пСрвая строка ΠΊΠΎΠ΄Π° Π² Ρ†ΠΈΠΊΠ»Π΅.

 для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ страницы Π² ActiveWorkbook.Worksheets 

ΠŸΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π° слова - для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ .Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ Π²Π²ΠΎΠ΄ΠΈΠΌ имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ слСдуСт слово In НаконСц, ΠΌΡ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ, Π³Π΄Π΅ сущСствуСт коллСкция. Π’ этом случаС ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ всС Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ листы Π² ActiveWorkbook. Π˜Ρ‚Π°ΠΊ, Π½Π°Π±ΠΈΡ€Π°Π΅ΠΌ ActiveWorkbook.Worksheets . Π­Ρ‚Π° строка ссылаСтся Π½Π° всС Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ листы Π² ActiveWorkbook.

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ листы ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ Π² Ρ†ΠΈΠΊΠ»Π΅, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ свойство Workbooks для ссылки Π½Π° эту ΠΊΠ½ΠΈΠ³Ρƒ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ.

 для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ws Π² ΠΊΠ½ΠΈΠ³Π°Ρ… ("Book2.xlsx "). Листы 

ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΊΠ½ΠΈΠ³Π°, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΡΡΡ‹Π»Π°Π΅Ρ‚Π΅ΡΡŒ, Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Π° ΠΏΠ΅Ρ€Π΅Π΄ запуском строки ΠΊΠΎΠ΄Π° For Next. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Workbooks.Open, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΊΠ½ΠΈΠ³Ρƒ.

Π¨Π°Π³ 3 - Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° для повторСния для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ

ПослС строки For Each ΠΌΡ‹ добавляСм строку (ΠΈ) ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ листС. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρƒ нас Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π° строка ΠΊΠΎΠ΄Π°, которая ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ лист.

 ws.Visible = xlSheetVisible 

Π’ этой строкС ΠΊΠΎΠ΄Π° ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ws для ссылки Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ лист Π² Ρ†ΠΈΠΊΠ»Π΅.Когда Ρ†ΠΈΠΊΠ» выполняСтся, ΠΎΠ½ устанавливаСт Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ссылку Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ws для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Π² Ρ†ΠΈΠΊΠ»Π΅ .

Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΎ ΠΆΠ΅ самоС, ΠΊΠ°ΠΊ Ссли Π±Ρ‹ ΠΌΡ‹ установили ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ws для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ листа, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ строку ΠΊΠΎΠ΄Π°.

 Set ws = Π Π°Π±ΠΎΡ‡ΠΈΠ΅ листы (1) 

Однако, Π½Π°ΠΌ НЕ Π½ΡƒΠΆΠ½Π° эта строка с For Each Next Loop . Π¦ΠΈΠΊΠ» заботится ΠΎΠ± установкС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ для нас для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Π² Ρ†ΠΈΠΊΠ»Π΅.

Для ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π° ws устанавливаСтся Ρ€Π°Π²Π½Ρ‹ΠΌ Worksheets (1).На ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ws устанавливаСтся Π½Π° Worksheets (2). Π­Ρ‚ΠΎ продолТаСтся, ΠΏΠΎΠΊΠ° Ρ†ΠΈΠΊΠ» ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ ΠΏΠΎ всСм листам Π² ΠΊΠ½ΠΈΠ³Π΅. Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠΎΡ‰Π½ΠΎ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ для ссылки Π½Π° Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ лист нСсколько Ρ€Π°Π· Π² Ρ†ΠΈΠΊΠ»Π΅.

Π¨Π°Π³ 4 - Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ строка возвращаСтся Π½Π°Π·Π°Π΄

ПослСдняя строка ΠΊΠΎΠ΄Π° Π² Ρ†ΠΈΠΊΠ»Π΅ - это строка Next .

 Π”Π°Π»Π΅Π΅ ws 

Когда макрос ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π² эту строку ΠΊΠΎΠ΄Π°, ΠΎΠ½ Π΄Π΅Π»Π°Π΅Ρ‚ Π΄Π²Π΅ Π²Π΅Ρ‰ΠΈ:

  1. Π‘Π½Π°Ρ‡Π°Π»Π° ΠΎΠ½ измСняСт ссылку Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ элСмСнт Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ.Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ пСрСмСнная ws ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π° для ссылки Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ лист Π² ΠΊΠ½ΠΈΠ³Π΅.
  2. Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, ΠΎΠ½ возвращаСтся ΠΊ строкС выполнСния ΠΊΠΎΠ΄Π° нСпосрСдствСнно ΠΏΠΎΠ΄ строкой For Each. Π—Π°Ρ‚Π΅ΠΌ ΠΎΠ½ запускаСт всС строки ΠΊΠΎΠ΄Π° ΠΌΠ΅ΠΆΠ΄Ρƒ строками For Each ΠΈ Next Π² порядкС свСрху Π²Π½ΠΈΠ·.

Когда достигаСтся послСдний элСмСнт Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ (Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ лист Π² ΠΊΠ½ΠΈΠ³Π΅), Ρ†ΠΈΠΊΠ» останавливаСтся, ΠΈ макрос ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ строкС ΠΊΠΎΠ΄Π° Π½ΠΈΠΆΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ строки.

Π’ ΠΊΠ°ΠΊΠΎΠΌ порядкС выполняСтся Ρ†ΠΈΠΊΠ» для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°?

Π¦ΠΈΠΊΠ» For Each Loop всСгда начинаСтся с ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ послСднСму элСмСнту Π² Ρ‚ΠΎΠΌ порядкС, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ΠΈ ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Π² Excel.Π­Ρ‚ΠΎ основано Π½Π° порядковом Π½ΠΎΠΌΠ΅Ρ€Π΅ элСмСнтов Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ. Π’ΠΎΡ‚ нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² порядка выполнСния Ρ†ΠΈΠΊΠ»Π° для ΠΎΠ±Ρ‰ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

  • Π Π°Π±ΠΎΡ‡ΠΈΠ΅ листы: НачинаСтся с Π²ΠΊΠ»Π°Π΄ΠΊΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ листа Π² ΠΊΠ½ΠΈΠ³Π΅ ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ послСднСй Π² Ρ‚ΠΎΠΌ порядкС, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²ΠΊΠ»Π°Π΄ΠΊΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π² ΠΊΠ½ΠΈΠ³Π΅.
  • Π Π°Π±ΠΎΡ‡ΠΈΠ΅ ΠΊΠ½ΠΈΠ³ΠΈ: НачинаСтся с ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ ΠΈ зацикливаСтся Π² Ρ‚ΠΎΠΌ порядкС, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±Ρ‹Π»ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ ΠΊΠ½ΠΈΠ³ΠΈ. Π Π°Π±ΠΎΡ‡ΠΈΠΌ ΠΊΠ½ΠΈΠ³Π°ΠΌ присваиваСтся порядковый Π½ΠΎΠΌΠ΅Ρ€ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ ΠΈΡ… открытия.
  • Π―Ρ‡Π΅ΠΉΠΊΠΈ: Π¦ΠΈΠΊΠ»Ρ‹ слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ, Π·Π°Ρ‚Π΅ΠΌ Π²Π½ΠΈΠ·. НачинаСтся с ΠΏΠ΅Ρ€Π²ΠΎΠΉ ячСйки Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ столбцу Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ строкС, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ строкС.
  • Π’Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ сводныС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹: НачинаСтся с ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» создан Π½Π° листС, ΠΈ повторяСтся Π² порядкС создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π’ΠΎΡ‚ ΠΆΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ справСдлив ΠΈ для Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ создаСтС Π½Π° листах, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹, Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹, срСзы ΠΈ Ρ‚. Π”.

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ / ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ НЕ Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ΡΡ Π² Ρ†ΠΈΠΊΠ»Π΅

Π’Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅ΠΌ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ НЕ выбираСтся Π² Excel.

Π¦ΠΈΠΊΠ» создаСт ссылку Π½Π° элСмСнт / ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ устанавливаСтся Π½Π° ссылку Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ НЕ выбираСтся ΠΈ НЕ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ становится Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ. Для Π²Ρ‹Π±ΠΎΡ€Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Select ΠΈΠ»ΠΈ Activate. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ сначала ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ (Ρ‹) ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° (Ρ‹) Π²Ρ‹Π±Ρ€Π°Π½ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ. ΠžΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с ΠΌΠΎΠ΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ΠΉ ΠΎΠ± ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Excel ΠΈ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² VBA, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎΠ± этом.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ†ΠΈΠΊΠ»: Ρ†ΠΈΠΊΠ» ΠΏΠΎ Π½Π°Π±ΠΎΡ€Ρƒ чисСл

ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» For Next Loop для ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° Π½Π°Π±ΠΎΡ€Π° чисСл.Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅ΠΌ элСмСнты управлСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹, массивы ΠΈΠ»ΠΈ Ссли ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠ΅Ρ€Π΅Π±Ρ€Π°Ρ‚ΡŒ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ.

Основная опСрация Ρ†ΠΈΠΊΠ»Π° For Next такая ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Ρƒ Ρ†ΠΈΠΊΠ»Π° For Each. Π Π°Π·Π½ΠΈΡ†Π° Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ строки For.

Π¨Π°Π³ 1. ОбъявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ для числа

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅Π±Ρ€Π°Ρ‚ΡŒ Π½Π°Π±ΠΎΡ€ чисСл, Π½Π°ΠΌ сначала Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ с цСлочислСнным Ρ‚ΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ…. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†Π΅Π»ΠΎΠ΅ ΠΈΠ»ΠΈ Π΄Π»ΠΈΠ½Π½ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ число.

 Вусклый ΠΈ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ 

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ называСтся Π‘Ρ‡Π΅Ρ‚Ρ‡ΠΈΠΊ , ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΈΠ»ΠΈ Π²Π΅Π΄Π΅Ρ‚ счСт Π²Π²Π΅Ρ€Ρ… / Π²Π½ΠΈΠ· для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Π² Ρ†ΠΈΠΊΠ»Π΅.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ ΠΊ Long: Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Long (Ρ†Π΅Π»ΠΎΠ΅ число) содСрТит большСС число, Ρ‡Π΅ΠΌ Integer. Он Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ большС памяти, Π½ΠΎ Ρƒ соврСмСнных ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ² Ρ‚Π°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ памяти, Ρ‡Ρ‚ΠΎ это большС Π½Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΠ° Long постоянно. Π‘ΡƒΠΊΠ²Π° L выглядит ΠΊΠ°ΠΊ Ρ†ΠΈΡ„Ρ€Π° 1 Π² VBA, поэтому Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ i Π² качСствС ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, хотя Π² качСствС Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Long. Π­Ρ‚ΠΎ всС вопрос Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚Π΅Π½ΠΈΠΉ, ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°Π·Π²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΊΠ°ΠΊ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅.

Π¨Π°Π³ 2 - ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ЗаявлСниС For

Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ пишСм ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ For.Базовая конструкция - это ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово Для , Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ слСдуСт имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ (счСтчик) , Π·Π°Ρ‚Π΅ΠΌ Ρ€Π°Π²Π½ΠΎ Π·Π½Π°ΠΊΡƒ , Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ По ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ .

 Для i = ΠΎΡ‚ 1 Π΄ΠΎ 10 

На Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Π΅ значСния ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ Π½Π° числа, ΠΈΠ»ΠΈ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ вмСсто Π½ΠΈΡ… цСлочислСнныС / Π΄Π»ΠΈΠ½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅.

 Для i = iStart To iEnd 

ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ свойства ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΡ… число.

 Для i = 1 Π’ ActiveWorkbook.Π Π°Π±ΠΎΡ‡ΠΈΠ΅ листы.Π‘Ρ‡Π΅Ρ‚ 

Π­Ρ‚Π° строка ΠΊΠΎΠ΄Π° Π²Π΅Ρ€Π½Π΅Ρ‚ количСство листов Π² Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅. Однако ΠΎΠ½ НЕ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ лист. Π¦ΠΈΠΊΠ» просто ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅Ρ‚ Π½Π°Π±ΠΎΡ€ чисСл. ΠœΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ссылку Π½Π° Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ лист с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ счСтчика (i) Π² качСствС порядкового Π½ΠΎΠΌΠ΅Ρ€Π° свойства Worksheets. Π¨Π°Π³ 3 ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ эту ссылку.

Π¨Π°Π³ 3. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°, ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰Π΅Π³ΠΎΡΡ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ

ΠžΡΡ‚Π°Π»ΡŒΠ½Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ Ρ†ΠΈΠΊΠ»Π° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Ρ†ΠΈΠΊΠ» For Each.ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ строки ΠΌΠ΅ΠΆΠ΄Ρƒ строками For ΠΈ Next, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π°. Π’ этих строках ΠΊΠΎΠ΄Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ счСтчика ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСсколько Ρ€Π°Π·.

 Π Π°Π±ΠΎΡ‡ΠΈΠ΅ листы (i) .Visible = True 
Π¨Π°Π³ 4 - Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ строка ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ число ΠΈ повторяСт Ρ†ΠΈΠΊΠ» Π½Π°Π·Π°Π΄

НаконСц, ΠΌΡ‹ добавляСм ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ строку Π²Π½ΠΈΠ·Ρƒ.

 ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ я 

Когда макрос запускаСтся, ΠΎΠ½ устанавливаСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Ρ€Π°Π²Π½ΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ числу Π² строкС For. Когда макрос ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π² строку Next, ΠΎΠ½ прибавляСт 1 ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ»ΠΈ подсчитываСт.Π˜Ρ‚Π°ΠΊ, Π½Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π° i = 2. Он ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ Ρ†ΠΈΠΊΠ» Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ достигнут послСдний Π½ΠΎΠΌΠ΅Ρ€ Π² Ρ†ΠΈΠΊΠ»Π΅.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, 1 добавляСтся ΠΊ счСтчику ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Π² Ρ†ΠΈΠΊΠ»Π΅. Π­Ρ‚ΠΎ называСтся Step Value , ΠΈ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ шага Π² счСтчикС. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Step добавляСтся Π² ΠΊΠΎΠ½Π΅Ρ† строки For. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ строка Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ 2 ΠΊ счСтчику для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π°.

 Для i = ΠΎΡ‚ 2 Π΄ΠΎ 20 Π¨Π°Π³ 2 

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π°ΡˆΡ‚Ρ€ΠΈΡ…ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Π²Ρ‚ΠΎΡ€ΡƒΡŽ строку Π½Π° листС, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ β€‹β€‹ΠΏΠ΅Ρ‚Π»ΡŽ.

Π—Π°Ρ†ΠΈΠΊΠ»ΠΈΠ²Π°Π½ΠΈΠ΅ Π½Π°Π·Π°Π΄

ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ шага для ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°, ΡƒΠΊΠ°Π·Π°Π² ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ число.

 Для i = ΠΎΡ‚ 100 Π΄ΠΎ 1, шаг -1 

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ являСтся большим числом, Π° ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ - мСньшим числом . Π¦ΠΈΠΊΠ» начинаСтся с 100 (Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅) ΠΈ Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ 1 ΠΈΠ· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ счСтчика (шаг -1) для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Π² Ρ†ΠΈΠΊΠ»Π΅, ΠΏΠΎΠΊΠ° Π½Π΅ Π΄ΠΎΠΉΠ΄Π΅Ρ‚ Π΄ΠΎ 1 (ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅).

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово Step - Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ .Если Π²Ρ‹ Π½Π΅ ΡƒΠΊΠ°ΠΆΠ΅Ρ‚Π΅ Π΅Π³ΠΎ, VBA ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Step, Ρ€Π°Π²Π½ΠΎΠ΅ 1.

.

ΠžΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚, Ссли Π²Ρ‹ удаляСтС элСмСнты. Π― Π½Π°ΠΏΠΈΡˆΡƒ ΠΎΠ± этом ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ пост, Π½ΠΎ общая идСя Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅ΠΌ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ ΠΈ удаляСм элСмСнты, Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ становится мСньшС ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ удалСния элСмСнтов. Π¦ΠΈΠΊΠ» ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ, ΠΊΠΎΠ³Π΄Π° достигаСт 10-Π³ΠΎ элСмСнта, ΠΊΠΎΠ³Π΄Π° Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ всСго 9 элСмСнтов. Π—Π°Ρ†ΠΈΠΊΠ»ΠΈΠ²Π°Π½ΠΈΠ΅ Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ эту ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ.

Π Π°Π½Π½ΠΈΠΉ Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Ρ†ΠΈΠΊΠ» ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅Ρ‚ всС элСмСнты Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ строкС ΠΊΠΎΠ΄Π° Π½ΠΈΠΆΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ строки.Однако ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€Π΅ΠΆΠ΄Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ†ΠΈΠΊΠ» с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Exit For .

 Π’Ρ‹Ρ…ΠΎΠ΄ для 

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ макрос ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Exit For для Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ лист, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΉΡΡ со слова Β«ReportΒ», ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ ΠΊΠ°ΠΊ скрытый.

 Sub Unhide_First_Sheet_Exit_For ()
'ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ лист, содСрТащий ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ Ρ„Ρ€Π°Π·Ρƒ
'Π² ΠΈΠΌΠ΅Π½ΠΈ листа, Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°.

Dim ws ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ лист

Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ страницы Π² ActiveWorkbook.Worksheets

'НайдитС лист, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ начинаСтся со слова "ΠžΡ‚Ρ‡Π΅Ρ‚"
Если Π²Π»Π΅Π²ΠΎ (ws.Name, 6) = "Report" Π’ΠΎΠ³Π΄Π°

ws.Visible = xlSheetVisible

'Π’Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΉΠ΄Π΅Π½ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ лист
Π’Ρ‹Ρ…ΠΎΠ΄ для

ΠšΠΎΠ½Π΅Ρ†, Ссли
Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ws

ΠšΠΎΠ½Ρ†Π΅Π²ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π½ΠΈΠΊ 

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ ws сохраняСт ссылку Π½Π° Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ лист послС ΠΏΡ€Π΅ΠΆΠ΄Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ снова использована Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΎΠ΄ Ρ†ΠΈΠΊΠ»ΠΎΠΌ.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ Π½Π΅ трСбуСтся послС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова

Π’Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ я Π΄ΠΎΠ±Π°Π²ΠΈΠ» ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ послС ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова Next Π² ΠΊΠΎΠ½Ρ†Π΅ Ρ†ΠΈΠΊΠ»Π° Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ….

 Π”Π°Π»Π΅Π΅ ws 
 ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ я 

Π­Ρ‚ΠΎ НЕ трСбуСтся, ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ этого Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Π² Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅. Однако ΠΌΠ½Π΅ нравится Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ послС Next ΠΏΠΎ Π΄Π²ΡƒΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ.

  1. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΏΡ€ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ ΠΊΠΎΠ΄Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, навСдя ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΌΡ‹ΡˆΠΈ Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠ΄ остановлСн.
  2. Π­Ρ‚ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΊ ΠΊΠ°ΠΊΠΎΠΉ строкС For ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ строка. Π­Ρ‚ΠΎ особСнно Π²Π΅Ρ€Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° Ρƒ вас Π΅ΡΡ‚ΡŒ нСсколько Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΈΠ»ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ² Π² Π²Π°ΡˆΠΈΡ… макросах.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ я Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ послС ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова Next Π² качСствС Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠ΅ΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ. НСбольшая Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π° Π·Π°Ρ€Π°Π½Π΅Π΅ сэкономит врСмя ΠΈ сэкономит Π³ΠΎΠ»ΠΎΠ²Π½ΡƒΡŽ боль Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ. ΠŸΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΌΠ½Π΅! πŸ˜‰

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

Π’ΠΎΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ с макросами, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ Ρ†ΠΈΠΊΠ» For Next Loop.

3 способа ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ нСсколько листов Π² Excel + VBA Tutorial

АвтоматичСскоС Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ чисСл ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² сводных Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ… Excel

3 совСта ΠΏΠΎ ΡΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΡŽ ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΡŽ всСх ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΊΠ½ΠΈΠ³ΠΈ Excel + макрос

ΠœΠ°ΠΊΡ€ΠΎΡ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ - созданиС сводной Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ всСх Ρ‚ΠΈΠΏΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

Как Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ содСрТания ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² Ρ„Π°ΠΉΠ»Ρ‹ Excel

Π‘ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ (Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ) столбцы с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎΡΡ мСню слайсСра ΠΈΠ»ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°

Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ сводной Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈΠ»ΠΈ срСза ΠΏΠΎ самой послСднСй Π΄Π°Ρ‚Π΅ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Ρƒ

Как ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΏΠ°Π½Π΅Π»Π΅ΠΉ Excel для Ρ€Π°Π·Π½Ρ‹Ρ… Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² экрана

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ сводной Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π² Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹ Π‘Π£ΠœΠœΠ•Π‘Π›Π˜ΠœΠ + бСсплатный макрос VBA

ΠœΠ°ΠΊΡ€ΠΎΡ VBA для скрытия всСх столбцов, содСрТащих Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² ячСйкС

Как ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡ΠΈ с ΠΊΠΎΠ΄ΠΎΠΌ VBA - Π¦ΠΈΠΊΠ» - ΠžΡ‚Π»ΠΈΡ‡Π½Π°Ρ ΡΡ‚Π°Ρ‚ΡŒΡ с мноТСством ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΎΡ‚ ΠΌΠΎΠ΅Π³ΠΎ Π΄Ρ€ΡƒΠ³Π° ΠšΡ€ΠΈΡΠ° Ньюмана ΠΈΠ· The Spreadsheet Guru.

ΠšΠ°ΠΊΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π°Ρ†ΠΈΠΊΠ»ΠΈΡ‚ΡŒ?

НадСюсь, эта ΡΡ‚Π°Ρ‚ΡŒΡ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ. НС Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ бСсплатный Ρ„Π°ΠΉΠ» Excel, содСрТащий ΠΎΠ±Ρ€Π°Π·Ρ†Ρ‹ ΠΊΠΎΠ΄Π°.

Π¦ΠΈΠΊΠ»Ρ‹

- ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ кодирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ заставляСт нас Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π·Π° Ρ€Π°ΠΌΠΊΠΈ срСдства записи макросов. К соТалСнию, записанный макрос Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ‚Π»ΠΈ. Однако это Π½Π°Π²Ρ‹ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ смоТСтС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ снова ΠΈ снова Π½Π° протяТСнии всСй своСй ΠΊΠ°Ρ€ΡŒΠ΅Ρ€Ρ‹ для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ простых ΠΈ слоТных Π·Π°Π΄Π°Ρ‡. ПониманиС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»Ρ‹, придаст Π²Π°ΠΌ магичСскиС силы Π² Excel.

ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π½ΠΈΠΆΠ΅ с Π·Π°Π΄Π°Ρ‡Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π°. Бпасибо! πŸ™‚

.

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *