/ / Excel VBA Loop

Excel VBA Loop

Единична линия | Double Loop | Тройна контур | Do While Loop

Looping е една от най-мощните техники за програмиране. А контур в Excel VBA ви дава възможност да пресечете редица клетки само с няколко кодови линии.

Единична линия

Можете да използвате единична линия, за да пресечете едноизмерния обхват от клетки.

Поставете командния бутон на работния лист и добавете следните кодови редове:

Dim i As Integer

For i = 1 To 6
    Cells(i, 1).Value = 100
Next i

Резултат, когато кликнете върху командния бутон на листа:

Единична линия в Excel VBA

Обяснение: Кодовите редове между For и Next ще бъдат изпълнени шест пъти. За i = 1, Excel VBA въвежда стойността 100 в клетката в пресечната точка на ред 1 и колона 1. Когато Excel VBA достигне Next i, увеличава i с 1 и прескача обратно в израза For. За i = 2, Excel VBA въвежда стойността 100 в клетката в пресечната точка на ред 2 и колона 1 и т.н.

Забележка: Добра практика е винаги да отмествате (раздели) кода между думите "За" и "Напред". Това прави кода ви по-лесен за четене.

Double Loop

Можете да използвате двойна линия, за да пресечете двумерния диапазон от клетки.

Поставете командния бутон на работния лист и добавете следните кодови редове:

Dim i As Integer, j As Integer

For i = 1 To 6
    For j = 1 To 2
        Cells(i, j).Value = 100
    Next j
Next i

Резултат, когато кликнете върху командния бутон на листа:

Двойна контур в Excel VBA

Обяснение: За 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 , тя се увеличава с 1 и скача обратно в изявление For i. За i = 2 и j = 1, Excel VBA въвежда стойността 100 в клетката в пресечната точка на ред 2 и колона 1 и т.н.

Тройна контур

Можете да използвате тройна линия, за да пресечете двуизмерни диапазони в няколко работни листа в Excel.

Поставете командния бутон на работния лист и добавете следните кодови редове:

Dim c As Integer, i As Integer, j As Integer

For c = 1 To 3
    For i = 1 To 6
        For j = 1 To 2
            Worksheets(c).Cells(i, j).Value = 100
        Next j
    Next i
Next c

Обяснение: Единствената промяна, направена в сравнение с кода за двойния цикъл, е, че добавихме още един цикъл и добавихме работни листове (c). пред Cells, за да получите двуизмерен обхват на първия лист за c = 1, вторият лист за c = 2 и третият лист за c = 3. Изтеглете файла в Excel, за да видите този резултат.

Do While Loop

Освен цикъла For Next има и други вериги в Excel VBA. Например, Do While Loop. Кодът, поставен между Do While и Loop, ще се повтори, докато частта, която е вярна, не е вярна.

1. Поставете командния бутон на работния лист и добавете следните кодови редове:

Dim i As Integer
i = 1

Do While i < 6
    Cells(i, 1).Value = 20
    i = i + 1
Loop

Резултат, когато кликнете върху командния бутон на листа:

Do While Loop

Обяснение: ако е по-малък от 6, Excel VBA въвежда стойността 20 в клетката в пресечната точка на ред i и колона 1 и увеличава i с 1. В Excel VBA (и на други програмни езици) символът "=" означава става. Това не означава равно. Така че i = i + 1 означава, че става i + 1. С други думи: вземете сегашната стойност на i и добавете 1 към нея. Например, ако i = 1, i стана 1 + 1 = 2. В резултат на това стойността 20 ще бъде поставена в колона А пет пъти (не шест, защото Excel VBA спира, когато аз се равнява на 6).

2. Въведете някои номера в колона A.

Всеки брой редове

3. Поставете командния бутон във вашия работен лист и добавете следните кодови линии:

Dim i As Integer
i = 1

Do While Cells(i, 1).Value <> ""
    Cells(i, 2).Value = Cells(i, 1).Value + 10
    i = i + 1
Loop

Резултат, когато кликнете върху командния бутон на листа:

Усъвършенствано докато се върти

Обяснение: доколкото клетките (i, 1).Стойността не е празна (<> означава, че не е равна на), Excel VBA въвежда стойността в клетката в пресечната точка на ред i и колона 2, т.е. 10 по-висока от стойността в клетката в пресечната точка на ред i и колона 1 Excel VBA спира, когато аз се равнява на 7, защото Cells (7, 1) .Value е празен. Това е чудесен начин да завъртите редици от линии в работен лист.

Също така се чете: