У меня есть несколько флажков на листе, а на другом листе у меня есть форма. Когда флажок установлен, соответствующий контент будет добавлен в виде столбца в листе формы.
У меня более 500 флажков, поэтому я хочу создать простой способ сделать это. Например, у меня есть следующие флажки:
- pROJECT_ID
- Название Проекта
- Project_Type
- Статус проекта
Имя объекта этих флажков начинается с CB_
поэтому имя объекта флажка Project_Type - CB_Project_Type
.
Теперь я создал функцию для каждого флажка, когда на него нажимают. например, имя функции Sub CB_Project_Type_Click()
Затем функция проверит, существует ли этот столбец, и добавит его в лист формы.
Создание функции для всех флажков будет глупо. Я хочу динамический метод для этого. Примерно так: если установлен флажок "ЛЮБОЙ", используйте это имя объекта флажка, чтобы добавить столбец с соответствующим именем на листе формы.
Я сейчас использую вот что:
Sub CB_Projects_Type_Click()
CB_List "Projects_Type"
End Sub
Sub CB_List(Name As String)
If ActiveSheet.Shapes("CB_" & Name).ControlFormat.Value = 1 Then
For i = 0 To 99
If IsEmpty(Sheets("English").Range("B1").Offset(0, i)) Then
Sheets("English").Columns(i + 2).Copy
Sheets("English").Columns(i + 3).Insert
Sheets("English").Range("B1").Offset(0, i).Value = Name
i = 99
End If
Next i
Else
For i = 0 To 99
If Sheets("English").Range("B1").Offset(0, i).Value = Name Then
Sheets("English").Columns(i + 2).Delete
i = 99
End If
Next i
End If
End Sub
Итак, вы можете видеть, что по крайней мере я использую одну функцию, чтобы получить этот столбец из флажка, но мне все еще нужно создать Sub для каждого флажка. Как я могу использовать 1 конечную функцию, которая получит имя функции от имени объекта?
Надеюсь, мне было ясно.