Развернуть и свернуть строки с помощью Excel VBA

Вопрос:Я создаю форму с разными разделами. Я не хочу использовать командную кнопку или кнопку Toggle (их внешний вид уродливый), и поскольку это для клиентов, я хочу, чтобы он был удобным для пользователя. В любом случае, так что в основном я хочу создать макрос, который, когда он нажимает на фигуру, будет сбрасывать ненужные строки и расширять

Вопрос:

Я создаю форму с разными разделами. Я не хочу использовать командную кнопку или кнопку Toggle (их внешний вид уродливый), и поскольку это для клиентов, я хочу, чтобы он был удобным для пользователя. В любом случае, так что в основном я хочу создать макрос, который, когда он нажимает на фигуру, будет сбрасывать ненужные строки и расширять правильные строки.

До сих пор это то, что я смог найти… но он применим только к командной кнопке.

Private Sub CommandButton1_Click() With Me.CommandButton1 If .Caption = «Initial Request» Then .Caption = «Hide Rows» Rows(«12:20»).Hidden = False Else .Caption = «Initial Request» Rows(«12:200»).Hidden = True End If End With End Sub

Это работает отлично… но есть ли способ преобразовать это, чтобы его можно было добавить в модуль и, следовательно, присвоить форме?

Большое спасибо за вашу помощь.

Ответ №1

Вы можете добавить фигуру, скажем, Rectangle и присвоить ей макрос с этим эквивалентным кодом:

Sub Rectangle2_Click() With Sheet3.Shapes(«rectangle 2»).TextFrame2.TextRange If .Text = «Initial Request» Then .Text = «Hide Rows» sheet3.Rows(«12:20»).Hidden = False Else .Text = «Initial Request» sheet3.Rows(«12:20»).Hidden = True End If End With End Sub

Очевидно, что в этом примере я добавил прямоугольник в Sheet3 и получил имя “прямоугольник 2”. Вы должны скорректировать эти имена в своем случае.

Ответ №2

Попробуйте этот код:

Option Explicit Sub Cloud_Click() Dim ws As Worksheet Set ws = ThisWorkbook.Worksheets(«Sheet2») If ws.Shapes(«Cloud 2»).TextFrame2.TextRange.Text = «Initial Request» Then ws.Shapes(«Cloud 2»).TextFrame2.TextRange.Text = «Hide rows» ws.Rows(«12:20»).Hidden = False Else ws.Shapes(«Cloud 2»).TextFrame2.TextRange.Text = «Initial Request» ws.Rows(«12:20»).Hidden = True End If End Sub

Я надеюсь, что следующий экранный снимок объяснит остальное.

Оцените статью
Добавить комментарий