Как да използвам VBA за всеки цикъл? (с примери за Excel)

Excel VBA за всеки цикъл

VBA For Every Loop преминава през цялата колекция от обекти или предмети и извършва подобен набор от дейности. Той ще вземе предвид всички налични посочени обекти и ще извърши инструктирана дейност във всеки обект.

Във VBA е задължително разбирането на циклите. Цикълът ви позволява да провеждате същия вид дейност за много клетки или обекти в Excel. В днешната статия ще се концентрираме върху механизма за всеки цикъл.

Синтаксис

За всеки цикъл може да премине през цялата зададена колекция от обекти или елементи. Групата не е нищо друго освен „Всички отворени работни книги“, „Всички работни листове в работна книга“, „Цялата колекция от форми и диаграми в работната книга“.

Нека разгледаме синтаксиса.

За всеки обект в колекцията Какво да правя? Следващ обект

Например имате 10 листа в работната си книга и искате да скриете всички работни листове с изключение на този, в който се намирате. Можете ли да скриете ръчно? Да, можете, но какво, ако имате 100 такива листа? Не е ли това досадна и отнемаща време задача? Можете да направите това, като използвате за всеки цикъл.

Как да използвам за всеки цикъл във VBA? (Примери)

Пример # 1 - Вмъкване на същия текст във всички листове

Ще видим как да използваме ЗА ВСЕКИ във VBA с прост пример. Да приемем, че имате 5 работни листа в работна книга и искате да вмъкнете думата „Здравейте“ във всички работни листове в клетка A1.

Можем да направим това ЗА ВСЕКИ ЛИП. Тук трябва да запомните едно нещо, ние изпълняваме тази дейност във всеки работен лист, а не в един и същ работен лист. Следвайте стъпките по-долу, за да напишете кода на VBA.

Стъпка 1: Стартирайте Excel макроса.

Код:

Sub For_Each_Example1 () End Sub

Стъпка 2: Тъй като имаме предвид работните листове, декларирайте променливата като „Работен лист“.

Код:

Sub For_Each_Example1 () Dim Ws As Worksheet End Sub

Стъпка 3: Сега, използвайки FOR EACH LOOP, трябва да препратим всеки работен лист в активната работна книга.

Код:

Sub For_Each_Example1 () Затъмняване на Ws като работен лист за всеки Ws в ActiveWorkbook. Работни таблици Следващ Ws End Sub

Стъпка 4: Сега напишете какво искаме да направим във всеки работен лист. Във всеки работен лист трябва да поставим думата „Hello“ в клетка A1.

Код:

Sub For_Each_Example1 () Затъмняване на Ws като работен лист за всеки Ws в ActiveWorkbook.Worksheets Ws.Range ("A1"). Value = "Hello" Next Ws End Sub

Стъпка 5: Сега стартирайте този код ръчно чрез опция или натиснете клавиш за бърз достъп F5. Няма значение колко листа имате; ще вмъкне думата „Здравейте“ във всички работни листове.

Пример # 2 - Скриване на всички листове

Както беше казано по-рано в публикацията, какво, ако имате стотици листове, които да скриете, освен този, в който се намирате. Използвайки За всеки цикъл, можем да скрием всички листове в Excel.

Стъпка 1: Стартирайте макроса с вашето име.

Код:

Sub For_Each_Example2 () Край Sub

Стъпка 2: Декларирайте променливата като „ Ws.“

Код:

Sub For_Each_Example2 () Dim Ws As Worksheet End Sub

Стъпка 3: Сега във всеки работен лист това, което трябва да направите, е да скриете листа.

Код:

Sub For_Each_Example2 () Затъмняване на Ws като работен лист за всеки Ws в ActiveWorkbook. Работни листове Ws.Visible = xlSheetVeryHidden Next Ws End Sub

Стъпка 4: Но ако стартирате горния код, той ще се опита да скрие всички листове, но Excel се нуждае от поне един лист, видим. Затова трябва да кажем кой лист да не скриваме.

Код:

Sub For_Each_Example2 () Затъмняване на Ws като работен лист за всеки Ws в ActiveWorkbook.Worksheets Ако Ws.Name "Основен лист" Тогава Ws.Visible = xlSheetVeryHidden End Ако следващ Ws End Sub

Символът на оператора означава, че не е равен на VBA .

So code says when you are looping through all the worksheets in the active workbook, hide only if the sheet name is not equal to the sheet name of Main Sheet.

This can be done by using the IF statement in VBA. Write the code as IF Ws.Name “Main Sheet” Then hide or if it is equal to the sheet name “Main Sheet,” then don’t hide.

Step 5: Now run the code using the F5 key or manually. Then, it will hide all the worksheets except the one named “Main Sheet.”

Example #3 - Unhide All the Sheets

We have seen how to hide all sheets except the one we are in. Similarly, we can unhide all the worksheets as well.

We need to change the code from xlSheetVeryHidden to xlSheetVisible.

Code:

Sub For_Each_Example3() Dim Ws As Worksheet For Each Ws In ActiveWorkbook.Worksheets Ws.Visible = xlSheetVisible Next Ws End Sub

Here we don’t need the IF condition because we are unhiding all the sheets. If you don’t want to unhide any specific sheet, then you can use the IF condition and supply the sheet name.

Example #4 - Protect and UnProtect All the Sheets

Protect All Sheets: We can protect all the sheets in the workbook with just a piece of code. All the principle is the same only thing we need to do here is instead of Ws. Visible, we need to put the code Ws. Protect and type the password.

Code:

Sub For_Each_Example4() Dim Ws As Worksheet For Each Ws In ActiveWorkbook.Worksheets Ws.Protect Password:="Excel@2019" Next Ws End Sub

Отстранете защитата на всички листове: В подобна бележка, използвайки VBA, можем също да премахнем защитата на всички листове, защитени в работната книга. Трябва да сложим думата Unprotect и парола.

Код:

Sub For_Each_Example6 () Затъмняване на Ws като работен лист за всеки Ws в ActiveWorkbook.Worksheets Ws.Unprotect Password: = "Excel @ 2019" Next Ws End Sub

Неща за запомняне

  • Всяка е за събиране на предмети.
  • Той ще разгледа всички посочени обекти в посочената работна книга.
  • Докато декларираме променливата, трябва да посочим обекта - например Работен лист, Работна книга, Диаграма и т.н.

Интересни статии...