Gelung dalam VBA

Terdapat situasi apabila program VBA diperlukan untuk melakukan set tindakan yang sama beberapa kali berturut-turut (iaitu, mengulang blok kod yang sama beberapa kali). Ini boleh dilakukan menggunakan gelung VBA.

Gelung VBA termasuk:

Seterusnya, kita akan melihat dengan lebih dekat setiap kitaran ini.

Untuk Operator Gelung dalam Visual Basic

Struktur pengendali gelung . dalam Visual Basic boleh disusun dalam satu daripada dua bentuk: sebagai gelung Untuk… Seterusnya atau sebagai gelung Untuk setiap.

Kitaran “Untuk … Seterusnya”

kitaran Untuk… Seterusnya menggunakan pembolehubah yang mengambil nilai secara berurutan daripada julat tertentu. Dengan setiap perubahan nilai pembolehubah, tindakan yang disertakan dalam badan kitaran dilakukan. Ini mudah difahami daripada contoh mudah:

Untuk i = 1 Hingga 10 Jumlah = Jumlah + iArray(i) Seterusnya i

Dalam gelung mudah ini Untuk… Seterusnya pembolehubah digunakan i, yang secara berurutan mengambil nilai 1, 2, 3, … 10, dan untuk setiap nilai ini, kod VBA di dalam gelung dilaksanakan. Oleh itu, gelung ini menjumlahkan elemen tatasusunan. iArray dalam pembolehubah Jumlah.

Dalam contoh di atas, kenaikan gelung tidak ditentukan, jadi untuk menambah pembolehubah i dari 1 hingga 10, lalai ialah kenaikan 1… Walau bagaimanapun, dalam beberapa kes adalah perlu untuk menggunakan nilai kenaikan yang berbeza untuk gelung. Ini boleh dilakukan menggunakan kata kunci Langkahseperti yang ditunjukkan dalam contoh mudah berikut.

Untuk d = 0 Hingga 10 Langkah 0.1 dJumlah = dJumlah + d Seterusnya d

Oleh kerana dalam contoh di atas, langkah kenaikan ditetapkan sama dengan 0.1, kemudian pembolehubah dJumlah untuk setiap ulangan kitaran mengambil nilai 0.0, 0.1, 0.2, 0.3,… 9.9, 10.0.

Untuk menentukan langkah gelung dalam VBA, anda boleh menggunakan nilai negatif, contohnya, seperti ini:

Untuk i = 10 Hingga 1 Langkah -1 iArray(i) = i Seterusnya i

Inilah kenaikannya -1, jadi pembolehubah i dengan setiap ulangan kitaran mengambil nilai 10, 9, 8, … 1.

Gelung "Untuk Setiap"

kitaran Untuk setiap serupa dengan kitaran Untuk… Seterusnya, tetapi bukannya mengulangi jujukan nilai untuk pembolehubah pembilang, gelung Untuk setiap melakukan satu set tindakan untuk setiap objek dalam kumpulan objek yang ditentukan. Dalam contoh berikut, menggunakan gelung Untuk setiap menghitung semua helaian dalam buku kerja Excel semasa:

Malapkan wSheet Sebagai Lembaran Kerja Untuk Setiap wSheet dalam Worksheet MsgBox "Найден лист: " & wSheet.Name wSheet Seterusnya

Penyataan gangguan gelung "Keluar Untuk"

operator Keluar Untuk digunakan untuk mengganggu kitaran. Sebaik sahaja penyataan ini ditemui dalam kod, program menamatkan pelaksanaan gelung dan meneruskan pelaksanaan penyataan yang terdapat dalam kod sejurus selepas gelung ini. Ini boleh digunakan, sebagai contoh, untuk mencari nilai tertentu dalam tatasusunan. Untuk melakukan ini, menggunakan gelung, setiap elemen tatasusunan diimbas. Sebaik sahaja elemen yang diperlukan ditemui, tidak perlu melihat selebihnya - kitaran terganggu.

Aplikasi pengendali Keluar Untuk ditunjukkan dalam contoh berikut. Di sini gelung mengulangi lebih 100 entri tatasusunan dan membandingkan setiap satu dengan nilai pembolehubah dVal… Jika padanan ditemui, maka gelung ditamatkan:

Untuk i = 1 Hingga 100 Jika dValues(i) = dVal Maka IndexVal = i Keluar Untuk Tamat Jika Seterusnya i

Gelung Do While dalam Visual Basic

kitaran Lakukan sementara melaksanakan blok kod selagi syarat yang ditentukan dipenuhi. Berikut adalah contoh prosedur Sub, yang menggunakan gelung Lakukan sementara Nombor Fibonacci tidak melebihi 1000 dipaparkan secara berurutan:

'Sub prosedur mengeluarkan nombor Fibonacci tidak melebihi 1000 Sub Fibonacci() Dim i As Integer 'counter untuk menunjukkan kedudukan elemen dalam jujukan Dim iFib As Integer 'menyimpan nilai semasa jujukan Dim iFib_Next As Integer 'menyimpan nilai seterusnya daripada jujukan Dim iStep As Integer 'menyimpan saiz kenaikan seterusnya 'memulakan pembolehubah i dan iFib_Next i = 1 iFib_Next = 0 'Gelung Do While akan dilaksanakan sehingga nilai 'nombor Fibonacci semasa lebih besar daripada 1000 Do Manakala iFib_Next < 1000 Jika i = 1 Kemudian 'kes khas untuk elemen pertama iStep = 1 iFib = 0 Lain 'simpan saiz kenaikan seterusnya sebelum menulis ganti 'nilai semasa jujukan iStep = iFib iFib = iFib_Next End Jika 'cetak nombor Fibonacci semasa dalam lajur A lembaran kerja aktif 'dalam baris dengan indeks i Sel(i , 1).Nilai = iFib 'kira nombor Fibonacci seterusnya dan tambah indeks kedudukan elemen sebanyak 1 iFib_Next = iFib + iStep i = i + 1 Loop End Sub

Dalam contoh yang diberikan, syarat iFib_Next < 1000 diperiksa pada permulaan gelung. Oleh itu, jika nilai pertama iFib_Next Jika terdapat lebih daripada 1000, maka gelung tidak akan dilaksanakan.

Satu lagi cara untuk melaksanakan gelung Lakukan sementara - letakkan keadaan bukan pada permulaan, tetapi pada akhir gelung. Dalam kes ini, gelung akan dilaksanakan sekurang-kurangnya sekali, tidak kira sama ada syarat itu dipenuhi.

Secara skematik, kitaran sedemikian Lakukan sementara dengan syarat yang akan diperiksa pada akhirnya akan kelihatan seperti ini:

Lakukan ... Gelung Semasa iFib_Next < 1000

Цикл «Lakukan Sehingga» dalam Visual Basic

kitaran Lakukan Sehingga sangat mirip dengan kitaran Lakukan sementara: blok kod dalam badan gelung dilaksanakan berulang kali sehingga syarat yang ditentukan dipenuhi (hasil ungkapan bersyarat ialah Benar). Dalam prosedur seterusnya Sub menggunakan kitaran Lakukan Sehingga mendapatkan semula nilai daripada semua sel dalam lajur A lembaran kerja sehingga lajur menemui sel kosong:

iRow = 1 Do Until IsEmpty(Cells(iRow, 1)) 'Nilai sel semasa disimpan dalam tatasusunan dCellValues ​​​​dCellValues(iRow) = Cells(iRow, 1).Value iRow = iRow + 1 Gelung

Dalam contoh di atas, syarat IsEmpty(Sel(iRow, 1)) terletak pada permulaan struktur Lakukan Sehingga, jadi gelung akan dilaksanakan sekurang-kurangnya sekali jika sel pertama yang diambil tidak kosong.

Walau bagaimanapun, seperti yang ditunjukkan dalam contoh gelung Lakukan sementara, dalam beberapa situasi adalah perlu bahawa gelung dilaksanakan sekurang-kurangnya sekali, tanpa mengira hasil awal ungkapan bersyarat. Dalam kes ini, ungkapan bersyarat hendaklah diletakkan di hujung gelung, seperti ini:

Lakukan ... Gelung Sehingga Kosong(Sel(iRow, 1))

Sila tinggalkan balasan anda