У меня есть таблица Excel с несколькими тысячами строк данных, которые разбиты на несколько разделов в зависимости от Менеджера. Я создал код, который скрывает любые строки с нулевым значением в пределах диапазона для отдельных разделов, но они работают медленно, и я не уверен, есть ли более быстрый способ достичь того же результата. Вот что у меня есть на данный момент:
Option Explicit
Public shp As Single
Public r1 As Single
Public r23 As Single
Public sFind as String
1-я часть кодирования, которая обозначает строки, которые будут прокручиваться внутри группы менеджеров. У меня есть кнопка для каждого менеджера и дополнительная кнопка с # _Click () до go с каждым разделом данных. Ниже приведен пример кнопки № 1, каждая из которых выглядит одинаково, за исключением того, что номера строк отличаются.
Sub Button1_Click()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
shp = 6
r1 = 14
r23 = 36
Call Button_Macro
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Приведенный выше код вызывает следующий код для запуска:
Sub Button_Macro()
Dim r as Single
Dim x as Single
Dim i as Single
Dim MyArray as Variant
Dim ShpName as String
ShpName = "Rounded Rectangle " & Shp
ActiveSheet.Shapes.Range(ShpName).Select
sFind = Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text
If sFine = "-" Then
ActiveSheet.Shapes.Range(Array(ShpName)).Select
Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = "+"
Rows(r1 & ":" & r23).Hidden = True
Else
ActiveSheet.Shapes.Range(Array(ShpName)).Select
Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = "-"
Rows(r1 & ":" & r23).Hidden = False
MyArray = Range(Cells(r1,4), Cells(r23,6)).Value
r = 1
x = r1
For i = r1 to r23
If MyArray(r,1) + MyArray(r,2) + MyArray(r,3) = 0 Then
Rows(x).EntireRow.Hidden = True
End If
x = x + 1
r = r + 1
Next i
End If
Cells(r1 - 1, 2).Select
End Sub
Рядом с В каждом разделе данных есть кнопка со знаком +, когда все строки в разделе Менеджера скрыты, затем, когда вы нажимаете кнопку, запускается код и меняет текст кнопки на - и отображаются только строки со значениями больше нуля. Когда я нажимаю кнопку, запуск кода занимает около 10 секунд. Я знаю, что это звучит не так уж и много, но люди ожидают, что, когда они нажмут кнопку, строки со значениями должны появиться сразу, а не через 10 секунд, поэтому я пытаюсь выяснить, есть ли более быстрый способ кодирования этого. Спасибо.