この質問は特に技術的ではなく、より理論的です。フォーム/ VBA - ステータスに基づいてコントロールを有効にする
私は時々アクセスする "プロジェクトキュー"のことをやっています。私たちはいくつかのステップを経てきました。私は、特定のステップで意味をなさないボタンを隠し、最も関連性の高いタブに星を追加しています。たとえば、プロジェクトの開発が割り当てられている場合、プロダクションに移す前にテストを行う必要があるため、「プロダクションに移動」ボタンは非表示になっています。私はまた、開発タブの名前をDevelopment *に変更して、それをキューに入れます。
VBAではすべてがハードコードされていましたが、それでも問題はありませんが、維持するのに時間がかかり、醜いです。私は誰かがベストプラクティスを持っているのか、それとも一般的な提案があるのか疑問に思います。私は6つのステータスを持っていましたが、私は12になります。これをもっとうまくやることを考えなければなりません。
ボタンをクリックすると、あなたがこのようなコードブロックを得る:
Private Sub AssignScoping_Click()
Me.RequestStatus.Enabled = True
Me.RequestStatus = "Scoping"
Me.RequestStatus.Enabled = False
End Sub
各ボタンは、ちょうどこのようになります。残りのロジックを駆動するRequestStatusフィールドに異なるテキスト値を割り当てます。
Private Sub setButtonAvailability()
Select Case Me.RequestStatus
Case Null
Me.PlaceInQueue.Visible = True
Me.PlaceInQueue.Enabled = True
Me.AssignScoping.Visible = False
Me.AssignScoping.Enabled = False
Me.AssignDevelopment.Visible = False
Me.AssignDevelopment.Enabled = False
Me.AssignTesting.Visible = False
Me.AssignTesting.Enabled = False
Me.AssignProduction.Visible = False
Me.AssignProduction.Enabled = False
Me.AssignAutomation.Visible = False
Me.AssignAutomation.Enabled = False
Me.Tabs.Pages("Intake").Caption = "Intake" & "*"
Me.Tabs.Pages("Scoping").Caption = "Scoping"
Me.Tabs.Pages("Development").Caption = "Development"
Me.Tabs.Pages("Testing").Caption = "Testing"
Me.Tabs.Pages("Production").Caption = "Production"
Me.Tabs.Pages("Automation").Caption = "Automation"
...
Case Else
Me.PlaceInQueue.Visible = True
Me.PlaceInQueue.Enabled = True
Me.AssignScoping.Visible = True
Me.AssignScoping.Enabled = True
Me.AssignDevelopment.Visible = True
Me.AssignDevelopment.Enabled = True
Me.AssignTesting.Visible = True
Me.AssignTesting.Enabled = True
Me.AssignProduction.Visible = True
Me.AssignProduction.Enabled = True
Me.AssignAutomation.Visible = True
Me.AssignAutomation.Enabled = True
Me.Tabs.Pages("Intake").Caption = "Intake"
Me.Tabs.Pages("Scoping").Caption = "Scoping"
Me.Tabs.Pages("Development").Caption = "Development"
Me.Tabs.Pages("Testing").Caption = "Testing"
Me.Tabs.Pages("Production").Caption = "Production"
Me.Tabs.Pages("Automation").Caption = "Automation"
End Select
End Sub
私は、目的のためだけにテーブルに制御情報を入れておくことを含むたくさんのオプションがあると思いますが、自分の仕事で孤立して働く傾向があるので、私はあなたの集団のノージンから、私はいつもtとは思っていません彼は何かをする最善の方法、私は今すぐそれを行うことができる方法。