Лучший способ делать вещи? VBA - PullRequest
0 голосов
/ 24 апреля 2018

У меня есть следующие коды. Однако этот код повторяется много раз на разных пользовательских формах. Однако, что изменяется в этом коде, так это имя всех объектов, поскольку оно находится на другой пользовательской форме

Sub FirstOne ()
Call RunFast_Begin
    Me.Position_MYORG = ""
    Select Case Me.TheORG
        Case ""
            Position_elswhere.Visible = False
            'Small text informing the user it needs to select the Branch
            Branch_TEXT.Visible = False
            'Dropdown list of branch and regions at my Org
            Branch.Visible = False
            'Small text informing the user needs to select the Position
            Position_TEXT.Visible = False
            'Dropdown for My OrgPositions
            Position_MYORG.Visible = False
            'Positions drop down for known
            Postion_Drop_Down_Elsewhere.Visible = False

    '* For all departments where there are many positions *
        Case "My Org"
            Me.Position_MYORG.RowSource = "MYORG"
            'in case user selected wrong option first
            Position_elswhere.Visible = False
           Postion_Drop_Down_Elsewhere.Visible = False
            'My Org info
            Branch_TEXT.Visible = True
            Branch.Visible = True
            Position_TEXT.Visible = True
            Position_MYORG.Visible = True
End Select
        Call RunFast_End
        End sub

Таким образом, на другой пользовательской форме будет отображаться тот же код, но следующим образом:

Sub SecondOne()
Call RunFast_Begin
    Me.Position_MYORG2 = ""
    Select Case Me.TheORG2
        Case ""
            Position_elswhere2.Visible = False
            'Small text informing the user it needs to select the Branch
            Branch_TEXT2.Visible = False
            'Dropdown list of branch and regions at My Org
            Branch2.Visible = False
            'Small text informing the user needs to select the Position
            Position_TEXT2.Visible = False
            'Dropdown for My OrgPositions
            Position_MYORG2.Visible = False
            'Positions drop down for known
            Postion_Drop_Down_Elsewhere2.Visible = False

    '* For all departments where there are many positions *
        Case "My Org"
            Me.Position_MYORG2.RowSource = "MYORG"
            'in case user selected wrong option first
            Position_elswhere2.Visible = False
           Postion_Drop_Down_Elsewhere2.Visible = False
            'My Org info
            Branch_TEXT2.Visible = True
            Branch2.Visible = True
            Position_TEXT2.Visible = True
            Position_MYORG2.Visible = True
       End select 
Call RunFast_End
           End sub

Как вы можете себе представить, это боль, когда мне нужно внести изменение ... этот код находится на трех разных пользовательских формах, и на них он появляется 5 раз, поэтому в основном мне приходится вносить 15 изменений каждый раз, когда меняется одна маленькая вещь.

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

Любая помощь с благодарностью Большое вам спасибо

1 Ответ

0 голосов
/ 24 апреля 2018

Вот сокращенная версия того, о чем я говорю:

Sub SetUpControls(frm As Object, i As Long)
    RunFast_Begin
    frm.Controls("Position_MYORG" & i) = ""
    Select Case frm.Controls("TheORG" & i)
        Case ""

            frm.Controls("Position_elswhere" & i).Visible = False
            frm.Controls("Branch_TEXT" & i).Visible = False
            'etc
        Case "My Org"
            frm.Controls("Position_MYORG" & i).RowSource = "MYORG"
            frm.Controls("Position_elswhere" & i).Visible = False
            'etc...
    End Select
    RunFast_End
End Sub

Из любой формы вы можете назвать это как:

SetUpControls Me, 2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...