Vba excel удалить переменную

Содержание

  • Как сбросить все переменные в Excel VBA?
  • Как очистить переменную в VBA?
  • Как очистить переменную?
  • Как очистить кеш памяти в Excel VBA?
  • Как выпустить объект в VBA?
  • Как очистить массив в VBA?
  • Как очистить строку в VBA?
  • Как использовать Isblank в VBA?
  • Нулевой или пустой в VBA?
  • Как проверить, пуста ли переменная?
  • Что такое пустая переменная?
  • Как очистить переменную в R?
  • Безопасно ли удалить Officefilecache?
  • Где хранится кеш Excel?

Код VB:

  1. Вариант явный.
  2. Dim mlLongVar As Long.
  3. Sub ProcOne ()
  4. mlLongVar = 10.
  5. MsgBox mlLongVar.
  6. mlLongVar = Пусто ‘Сброс настроек ничего.
  7. Конец подписки.
  8. Sub ProcTwo ()

Как очистить переменную в VBA?

Вы можете назначить ключевое слово Empty, чтобы явно установить для переменной значение Empty. Используйте функцию IsEmpty чтобы проверить, инициализирована ли переменная. Функция возвращает логическое значение — возвращает True для неинициализированной переменной или если для переменной явно задано значение Empty, в противном случае функция возвращает False.

Как очистить переменную?

Описание. В Командлет Clear-Variable удаляет данные, хранящиеся в переменной, но не удаляет переменную. В результате значение переменной равно NULL (пусто). Если переменная имеет указанный тип данных или объекта, этот командлет сохраняет тип объекта, хранящегося в переменной.

Как очистить кеш памяти в Excel VBA?

Использование кода VBA

Дважды щелкните «ThisWorkbook» на панели «Проект» слева. Это откроет окно кода. Чтобы запустить код, нажмите F5. Это очистит кеш сводных таблиц в активной книге.

Как выпустить объект в VBA?

Освободить все объектные переменные из памяти

  1. Name = Range («GroupName»)
  2. Eff = Диапазон («EffDate»)
  3. Spec = Range («SpecDed»)
  4. Spec2 = Диапазон («g35»)
  5. Spec3 = Диапазон («g36»)
  6. Установите Name = Nothing.
  7. Установите Eff = Nothing.
  8. Установите Spec = Nothing.

Как очистить массив в VBA?

VBA Очистить массив (стереть)

Тебе следует используйте оператор «Стереть» очистить массив в VBA. Добавьте ключевое слово «Erase» перед именем массива, который вы хотите очистить, но обратите внимание, что все значения будут сброшены из массива. В следующем массиве у вас есть 3 элемента, и мы использовали оператор erase, чтобы стереть все.

Как очистить строку в VBA?

Вариантная переменная имеет пустое значение до того, как ей будет присвоено значение.

  1. Инициализация варианта. Тип данных Empty — это значение по умолчанию, когда вы объявляете переменную как Variant. …
  2. Empty = 0. Ключевое слово Empty также является нулевым значением. …
  3. Empty = «» Ключевое слово Empty также является строкой нулевой длины. …
  4. Функция IsEmpty. …
  5. vbVarType.

Как использовать Isblank в VBA?

Если вы хотите проверить, пуста ли ячейка рабочего листа в VBA, вы не можете использовать функцию рабочего листа ISBLANK. В VBA вы должен использовать функцию ISEMPTY. В этом примере мы проверим, пуста ли ячейка A1. Если ячейка A1 пуста, отобразится сообщение «Ячейка A1 пуста».

Нулевой или пустой в VBA?

НУЛЕВОЙ в VBA — это логическая функция, которая используется для определения, является ли данная ссылка пустой или NULL или нет, поэтому имя ISNULL, это встроенная функция, которая дает нам истинный или ложный результат в зависимости от результата, который мы можем получить к выводам, если ссылка пуста, она возвращает истинное значение, иначе ложь …

Как проверить, пуста ли переменная?

Чтобы узнать, пуста ли переменная bash:

  1. Вернуть истину, если переменная bash не установлена ​​или установлена ​​в пустую строку: if [-z «$ var»];
  2. Другой вариант: [-z «$ var»] && echo «Пусто»
  3. Определите, пуста ли переменная bash: [[! -z «$ var»]] && echo «Не пусто» || эхо «Пусто»

Что такое пустая переменная?

Переменная считается пустой если он не существует или его значение равно false .

Как очистить переменную в R?

Очистка окружающей среды

  1. Использование команды rm (): если вы хотите удалить одну переменную из среды R, вы можете использовать команду «rm ()», за которой следует переменная, которую вы хотите удалить. -> rm (переменная) …
  2. Использование графического интерфейса: мы также можем очистить все переменные в среде, используя графический интерфейс на панели окружения.

Безопасно ли удалить Officefilecache?

Исправить кэш документов Office

Когда происходит повреждение файла кеша, ваш файл будет казаться застрявшим в Центре загрузки Office. … Удаление кеша — это не такт опасно, и это может решить проблему синхронизации.

Где хранится кеш Excel?

Windows 11/10: C: Users AppData Local Microsoft Office UnsavedFiles. Windows 8/7 / Vista: C: Users UserName AppData Local Microsoft Office UnsavedFiles. Windows XP: C: Documents and Settings UserName Local Settings Application Data Microsoft Office UnsavedFiles.

Интересные материалы:

Как работает проверка имён?
Как работает провод?
Как работает proxmox?
Как работает PSP?
Как работает пылесос?
Как работает радио Baofeng?
Как работает радио Bose Wave?
Как работает радиотелефон?
Как работает распродажа флеш-памяти Amazon?
Как работает разблокировка по лицу Xiaomi?

I want to thank everyone who gives answers on this site for the years of helpful information I’ve been able to derive from this forum. This is my first question ever posted:

Here is the issue: I wrote the following code in order to create a continuous calendar that my co-workers can fill out and refresh to the current day and beyond. After I finished the code seemed to work until I used a second code that references this sheet from another sheet. After breaking apart the first code I realized that simply deleting any cell in the referenced sheet causes the second code to freeze up. It will continually look for the sheet but never find it. I was able to create a workaround where the code copies and pastes on the refresh macro instead of deleting any cells. However I’m afraid that someone will delete a cell in the future and cause problems on my workbook.

Here is my question: Is there a code that resets variables or declaring of variables without having to close and open the workbook.

Things I’ve tried: Not using variables and referencing the sheet directly, trying the same code and circumstances on another workbook and computer. I tried not deleting Range B1 but even deleting any cell on sheet 1 without a vba causes code 2 to freeze up. It will reset when the workbook is saved, closed and opened again.

Code 1 on Sheet 1:

Sub OoDCalUpdate()
    '
    '
    ' Keyboard Shortcut: Ctrl+Shift+Q
    '

    Dim str As String

    str = Range("A2")

    On Error GoTo errHandler

    iFind = Range("B1:CF1").Find(str).Column

    Range(Cells(1, 2), Cells(100, iFind)).**Delete**

    Range(Cells(1, 85 - iFind), Cells(2, 85 - iFind)).AutoFill Destination:=Range(Cells(1, 85 - iFind), Cells(2, 84)), Type:=xlFillSeries

    errHandler:
    Exit Sub

End Sub

In case you need Code 2 on Sheet 2 I put asterix where I believe the code freezes:

Sub CalendarMaker()

       ' Unprotect sheet if had previous calendar to prevent error.
       ActiveSheet.Protect DrawingObjects:=False, Contents:=False, _
          Scenarios:=False
       ' Prevent screen flashing while drawing calendar.
       Application.ScreenUpdating = False
       ' Set up error trapping.

       ' Clear area a1:g14 including any previous calendar.
       Range("A1:O27").Clear
       ' Use InputBox to get desired month and year and set variable
       ' MyInput.

       ' Allow user to end macro with Cancel in InputBox.

       **Dim ws As Worksheet
       Dim str As String

       Set ws = Worksheets("OoD Tracker")
       str = Worksheets("OoD Tracker").Range("B1")**



'MONTH 1

       ' Get the date value of the beginning of inputted month.
       StartDay = DateValue(str)
       ' Check if valid date but not the first of the month
       ' -- if so, reset StartDay to first day of month.
       If Day(StartDay) <> 1 Then
           StartDay = DateValue(Month(StartDay) & "/1/" & _
               Year(StartDay))
       End If
       ' Prepare cell for Month and Year as fully spelled out.
       Range("a1").NumberFormat = "mmmm yyyy"
       ' Center the Month and Year label across a1:g1 with appropriate
       ' size, height and bolding.
       With Range("a1:g1")
           .HorizontalAlignment = xlCenterAcrossSelection
           .VerticalAlignment = xlCenter
           .Font.Size = 18
           .Font.Bold = True
           .RowHeight = 35
           .Interior.ColorIndex = 33
       End With
       ' Prepare a2:g2 for day of week labels with centering, size,
       ' height and bolding.
       With Range("a2:g2")
           .ColumnWidth = 15
           .VerticalAlignment = xlCenter
           .HorizontalAlignment = xlCenter
           .VerticalAlignment = xlCenter
           .Orientation = xlHorizontal
           .Font.Size = 12
           .Font.Bold = True
           .RowHeight = 20
       End With
       ' Put days of week in a2:g2.
       Range("a2") = "Sunday"
       Range("b2") = "Monday"
       Range("c2") = "Tuesday"
       Range("d2") = "Wednesday"
       Range("e2") = "Thursday"
       Range("f2") = "Friday"
       Range("g2") = "Saturday"
       ' Prepare a3:g7 for dates with left/top alignment, size, height
       ' and bolding.
       With Range("a3:g8")
           .HorizontalAlignment = xlRight
           .VerticalAlignment = xlTop
           .Font.Size = 18
           .Font.Bold = True
           .RowHeight = 21
       End With
       ' Put inputted month and year fully spelling out into "a1".
       Range("a1").Value = Application.Text(str, "mmmm yyyy")
       ' Set variable and get which day of the week the month starts.
       DayofWeek = Weekday(StartDay)
       ' Set variables to identify the year and month as separate
       ' variables.
       CurYear = Year(StartDay)
       CurMonth = Month(StartDay)
       ' Set variable and calculate the first day of the next month.
       FinalDay = DateSerial(CurYear, CurMonth + 1, 1)
       ' Place a "1" in cell position of the first day of the chosen
       ' month based on DayofWeek.
       Select Case DayofWeek
           Case 1
               Range("a3").Value = 1
           Case 2
               Range("b3").Value = 1
           Case 3
               Range("c3").Value = 1
           Case 4
               Range("d3").Value = 1
           Case 5
               Range("e3").Value = 1
           Case 6
               Range("f3").Value = 1
           Case 7
               Range("g3").Value = 1
       End Select
       ' Loop through range a3:g8 incrementing each cell after the "1"
       ' cell.
       For Each cell In Range("a3:g8")
           RowCell = cell.Row
           ColCell = cell.Column
           ' Do if "1" is in first column.
           If cell.Column = 1 And cell.Row = 3 Then
           ' Do if current cell is not in 1st column.
           ElseIf cell.Column <> 1 Then
               If cell.Offset(0, -1).Value >= 1 Then
                   cell.Value = cell.Offset(0, -1).Value + 1
                   ' Stop when the last day of the month has been
                   ' entered.
                   If cell.Value > (FinalDay - StartDay) Then
                       cell.Value = ""
                       ' Exit loop when calendar has correct number of
                       ' days shown.
                       Exit For
                   End If
               End If
           ' Do only if current cell is not in Row 3 and is in Column 1.
           ElseIf cell.Row > 3 And cell.Column = 1 Then
               cell.Value = cell.Offset(-1, 6).Value + 1
               ' Stop when the last day of the month has been entered.
               If cell.Value > (FinalDay - StartDay) Then
                   cell.Value = ""
                   ' Exit loop when calendar has correct number of days
                   ' shown.
                   Exit For
               End If
           End If
       Next


'MONTH 2

       ' Get the date value of the beginning of inputted month.
       StartDay = DateValue(str)
       ' Check if valid date but not the first of the month
       ' -- if so, reset StartDay to first day of month.
       If Day(StartDay) <> 1 Then
           StartDay = DateValue(Month(StartDay) + 1 & "/1/" & _
               Year(StartDay))
       End If
       ' Prepare cell for Month and Year as fully spelled out.
       Range("I1").NumberFormat = "mmmm yyyy"
       ' Center the Month and Year label across I1:O1 with appropriate
       ' size, height and bolding.
       With Range("I1:O1")
           .HorizontalAlignment = xlCenterAcrossSelection
           .VerticalAlignment = xlCenter
           .Font.Size = 18
           .Font.Bold = True
           .RowHeight = 35
           .Interior.ColorIndex = 22
       End With
       ' Prepare I2:O2 for day of week labels with centering, size,
       ' height and bolding.
       With Range("I2:O2")
           .ColumnWidth = 15
           .VerticalAlignment = xlCenter
           .HorizontalAlignment = xlCenter
           .VerticalAlignment = xlCenter
           .Orientation = xlHorizontal
           .Font.Size = 12
           .Font.Bold = True
           .RowHeight = 20
       End With
       ' Put days of week in I2:O2.
       Range("I2") = "Sunday"
       Range("J2") = "Monday"
       Range("K2") = "Tuesday"
       Range("L2") = "Wednesday"
       Range("M2") = "Thursday"
       Range("N2") = "Friday"
       Range("O2") = "Saturday"
       ' Prepare I3:O7 for dates with left/top alignment, size, height
       ' and bolding.
       With Range("I3:O8")
           .HorizontalAlignment = xlRight
           .VerticalAlignment = xlTop
           .Font.Size = 18
           .Font.Bold = True
           .RowHeight = 21
       End With
       ' Put inputted month and year fully spelling out into "I1".
       Range("I1").Value = Application.Text(StartDay, "mmmm yyyy")
       ' Set variable and get which day of the week the month starts.
       DayofWeek = Weekday(StartDay)
       ' Set variables to identify the year and month as separate
       ' variables.
       CurYear = Year(StartDay)
       CurMonth = Month(StartDay)
       ' Set variable and calculate the first day of the next month.
       FinalDay = DateSerial(CurYear, CurMonth + 1, 1)
       ' Place a "1" in cell position of the first day of the chosen
       ' month based on DayofWeek.
       Select Case DayofWeek
           Case 1
               Range("I3").Value = 1
           Case 2
               Range("J3").Value = 1
           Case 3
               Range("K3").Value = 1
           Case 4
               Range("L3").Value = 1
           Case 5
               Range("M3").Value = 1
           Case 6
               Range("N3").Value = 1
           Case 7
               Range("O3").Value = 1
       End Select
       ' Loop through range I3:O8 incrementing each cell after the "1"
       ' cell.
       For Each cell In Range("I3:O8")
           RowCell = cell.Row
           ColCell = cell.Column
           ' Do if "1" is in first column.
           If cell.Column = 9 And cell.Row = 3 Then
           ' Do if current cell is not in 1st column.
           ElseIf cell.Column <> 9 Then
               If cell.Offset(0, -1).Value >= 1 Then
                   cell.Value = cell.Offset(0, -1).Value + 1
                   ' Stop when the last day of the month has been
                   ' entered.
                   If cell.Value > (FinalDay - StartDay) Then
                       cell.Value = ""
                       ' Exit loop when calendar has correct number of
                       ' days shown.
                       Exit For
                   End If
               End If
           ' Do only if current cell is not in Row 3 and is in Column 9.
           ElseIf cell.Row > 3 And cell.Column = 9 Then
               cell.Value = cell.Offset(-1, 6).Value + 1
               ' Stop when the last day of the month has been entered.
               If cell.Value > (FinalDay - StartDay) Then
                   cell.Value = ""
                   ' Exit loop when calendar has correct number of days
                   ' shown.
                   Exit For
               End If
           End If
       Next

       ' Create Entry cells, format them centered, wrap text, and border
       ' around days.
       For x = 0 To 5
           Range("I4").Offset(x * 2, 0).EntireRow.Insert
           With Range("I4:O4").Offset(x * 2, 0)
               .RowHeight = 65
               .HorizontalAlignment = xlCenter
               .VerticalAlignment = xlCenter
               .WrapText = True
               .Font.Size = 12
               .Font.Bold = False
               ' Unlock these cells to be able to enter text later after
               ' sheet is protected.
               .Locked = False
           End With
           ' Put border around the block of dates.
           With Range("I3").Offset(x * 2, 0).Resize(2, _
           7).Borders(xlLeft)
               .Weight = xlThick
               .ColorIndex = xlAutomatic
           End With

           With Range("I3").Offset(x * 2, 0).Resize(2, _
           7).Borders(xlRight)
               .Weight = xlThick
               .ColorIndex = xlAutomatic
           End With
           Range("I3").Offset(x * 2, 0).Resize(2, 7).BorderAround _
              Weight:=xlThick, ColorIndex:=xlAutomatic
       Next
       If Range("I13").Value = "" Then Range("I13:O13").Offset(0, 0) _
          .Resize(2, 8).Delete

'REST OF MONTH 1

       ' Create Entry cells, format them centered, wrap text, and border
       ' around days.
       For x = 0 To 5

           With Range("A4:G4").Offset(x * 2, 0)
               .RowHeight = 65
               .HorizontalAlignment = xlCenter
               .VerticalAlignment = xlCenter
               .WrapText = True
               .Font.Size = 12
               .Font.Bold = False
               ' Unlock these cells to be able to enter text later after
               ' sheet is protected.
               .Locked = False
           End With
           ' Put border around the block of dates.
           With Range("A3").Offset(x * 2, 0).Resize(2, _
           7).Borders(xlLeft)
               .Weight = xlThick
               .ColorIndex = xlAutomatic
           End With

           With Range("A3").Offset(x * 2, 0).Resize(2, _
           7).Borders(xlRight)
               .Weight = xlThick
               .ColorIndex = xlAutomatic
           End With
           Range("A3").Offset(x * 2, 0).Resize(2, 7).BorderAround _
              Weight:=xlThick, ColorIndex:=xlAutomatic
       Next
       If Range("A13").Value = "" Then Range("A13:G13").Offset(0, 0) _
          .Resize(2, 8).Delete


       Dim strMo As String
       Dim MoRow As Integer
       Dim MoCol As Integer
       Dim DaRow As Integer
       Dim DaCol As Integer

        With Application.FindFormat.Font
        .FontStyle = "Bold"
        End With
       For Counter = 2 To 84
       tcell = ws.Cells(1, Counter)
       strMo = DateValue(Month(tcell) & "/1/" & Year(tcell))
       strDa = Format(tcell, "d")
       MoRow = Range("A1:O30").Find(strMo, LookIn:=xlFormulas, SearchOrder:=xlByRows, SearchDirection:=xlNext, SearchFormat:=True).Row
       MoCol = Range("A1:O30").Find(strMo, LookIn:=xlFormulas, SearchOrder:=xlByRows, SearchDirection:=xlNext, SearchFormat:=True).Column
       DaRow = Range(Cells(MoRow, MoCol), Cells(MoRow + 14, MoCol + 6)).Find(strDa, LookIn:=xlFormulas, SearchOrder:=xlByRows, SearchDirection:=xlNext, SearchFormat:=True).Row
       DaCol = Range(Cells(MoRow, MoCol), Cells(MoRow + 14, MoCol + 6)).Find(strDa, LookIn:=xlFormulas, SearchOrder:=xlByRows, SearchDirection:=xlNext, SearchFormat:=True).Column
       Cells(DaRow + 1, DaCol).Value = "='OoD Tracker'!" & ws.Cells(2, Counter).Address
       Next Counter

       ' Turn off gridlines.
       ActiveWindow.DisplayGridlines = False
       ' Protect sheet to prevent overwriting the dates.
       ActiveSheet.Protect DrawingObjects:=True, Contents:=True, _
          Scenarios:=True

       ' Resize window to show all of calendar (may have to be adjusted
       ' for video configuration).
       ActiveWindow.WindowState = xlMaximized
       ActiveWindow.ScrollRow = 1

       ' Allow screen to redraw with calendar showing.
       Application.ScreenUpdating = True
       ' Prevent going to error trap unless error found by exiting Sub
       ' here.
       Exit Sub
   ' Error causes msgbox to indicate the problem, provides new input box,
   ' and resumes at the line that caused the error.
MyErrorTrap:
       MsgBox "Please check OoD Tracker sheet to ensure the dates are correct. See LitProd Data Help File for more information."
       Exit Sub


End Sub

Thank you

AndreA SN

1014 / 118 / 2

Регистрация: 26.08.2011

Сообщений: 1,113

Записей в блоге: 2

1

11.11.2021, 13:55. Показов 1647. Ответов 3

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Нарисовал вот такое

Visual Basic
1
2
3
4
5
6
7
8
9
Dim rng
...
 
 
            On Error Resume Next
            Set rng = Range("A2:A" & n).SpecialCells(xlCellTypeVisible)
...
            If IsEmpty(rng) = False Then 
                 rng = Nothing ' вот тут неправильно

Как правильно очистить эту переменную?



0



2630 / 1636 / 744

Регистрация: 23.03.2015

Сообщений: 5,141

11.11.2021, 14:02

2

Лучший ответ Сообщение было отмечено AndreA SN как решение

Решение

Set Rng = Nothing



1



1014 / 118 / 2

Регистрация: 26.08.2011

Сообщений: 1,113

Записей в блоге: 2

11.11.2021, 15:49

 [ТС]

3

Narimanych, спасибо, особенно за цитату.



0



2630 / 1636 / 744

Регистрация: 23.03.2015

Сообщений: 5,141

11.11.2021, 16:04

4

AndreA SN,



0



Home / VBA / Arrays / VBA Clear Array (Erase)

You need to use the “Erase” statement to clear an array in VBA. Add the keyword “Erase” before the name of the array that you want to clear but note that all the values will be reset from the array. In the following array, you have 3 elements and we have used the erase statement to erase all.

Sub myMacro1()

Dim myArray() As Long
ReDim myArray(4)

myArray(1) = 1
myArray(2) = 2
myArray(3) = 3
myArray(4) = 4

ReDim myArray(1 To 5)

MsgBox myArray(3)

End Sub

And with that statement, it has erased all the elements from the array, and when we use the Debug.Print (Immediate Window) to get the array element, there’s nothing left.

Clear Dynamic Array

When you use ReDim it removes all the elements. But you can use the preserve statement to preserve some of the elements and clear an array partially. In the following example, we have an array and we have partially erased the fourth value and then re-defined the elements to 5.

And if you want to clear a dynamic array partially.

Sub myMacro2()

Dim myArray() As Long
ReDim myArray(1 To 4)

myArray(1) = 1
myArray(2) = 2
myArray(3) = 3
myArray(4) = 4

'erase position 4 but preserve the 1,2, and 3
ReDim Preserve myArray(1 To 3)

'redefine the array items to five
ReDim Preserve myArray(1 To 5)

MsgBox myArray(3)

End Sub

Important Points

  1. When you erase a fixed array:
    1. In an array that has all the values of a string, erase statement will reset all the elements to (variable length) to the zero-length string “” and (fixed length) to zero.
    2. In an array which has numeric values, erase statement will reset all the elements to zeros.
    3. In an array which as variant data type, erase statements will reset all the elements to empty.
    4. In an array which has objects, erase statement will reset all the elements to nothing.
    5. In an array which has objects, erase statement will reset all the elements if it were a separate variable.
  2.   When you erase a dynamic array erase statement frees the space used by the dynamic array.

У меня ситуация, когда мне нужно clear переменную lastWord, чтобы msgbox ничего не отображал в следующем loop.

Следующий код — это просто пример.

Sub clear_lastWord_Variable()

    Dim wordArr() As String
    Dim lastword As String
    Do
        selection.Find.ClearFormatting
        selection.Find.Font.Bold = True
        With selection.Find
            .Forward = True
            .Wrap = wdFindStop
        End With
        selection.Find.Execute

        If selection.Find.Found Then

            wordArr = Split(selection, " ")

            For i = LBound(wordArr) To UBound(wordArr) Step 1
                lastword = wordArr(i)

            Next i

            MsgBox lastword

            ' here should be something to clear lastword
        Else
            Exit Do
        End If
    Loop

End Sub

Это видео может помочь вам узнать секретный трюк https://youtu.be/MaiSBVguh28

2 ответа

Лучший ответ

Вы не можете «очистить» переменную, не являющуюся объектом, вы можете только установить для нее определенное значение. Для строковой переменной это обычно пустая строка "".

lastword = ""

Или (идентичный)

lastword = vbNullString

Для объектных переменных существует Set myObj = Nothing.


17

Andre
15 Май 2016 в 07:30

Если ваша переменная не является объектом, вы также можете:

lastword = Empty


6

I.Samp
21 Дек 2018 в 09:52

Like this post? Please share to your friends:
  • Vba excel удалить папку с файлами
  • Vba excel фильтрация массива
  • Vba excel умный поиск
  • Vba excel фильтр содержит
  • Vba excel удалить отфильтрованные строки