2011-06-23 20 views
0

何か他のクエリ。私はここにコードを提出せずに質問をすることが許されていますか?しかし、とにかくここに行く。日付に応じてフォームのセクションを隠す/表示する

vbaを使用してExcelでフォームのセクションを表示/非表示にすることができるかどうかは、日付によって異なります。私が作成しているフォームは監査に使用され、毎月異なる監査が完了します。このフォームは以下のように使用されます。

ワークブックが開きます----ユーザーは、ユーザーがドロップダウン

からYES/NOを選択した-----患者ID番号(データベースからデータを取得するために使用されるルックアップ機能を(私はこのビットWITH HELPを必要としない)に入ります

はい - は何の日 に応じて、関連するフォームを示していない - あるとして形を残し

はそう何か提案は以下のようになり/非表示セクションを表示する方法を知っているフォームのセットアップを設定してはいけない対処するための適切な方法を考えることはできません。

+1

ユーザーフォームやフォームのように作成されたワークシートのようなフォームを意味しますか? –

+0

@Remnant - フォームのように作成されたワークシート。ワークシートにボタンを追加して、ユーザーが記入したいフォームを選択できるように、私はどこから来ているのかわかります。しかし、フォームは長くて面倒であり、ワークシート上でよりうまく座ります。 –

答えて

1

あなたの質問は少し自由であり、明確な答えはありません。私の思考:

フォームがわずかに異なる場合は(つまり、 90%は同じでわずか10%は可変です)、それは変化するフォームの特定のセクションに過ぎず、各セクションを作成して選択的に非表示にします。

たとえば、ユーザーが女性の男性であるかどうかによって異なるセクションがあるとします。私は両方のセクションを構築し、次のように/非表示を示すことができる:

If gender = "Male" Then 
    Rows("10:20").EntireRow.Hidden = True //Assume you built male section in rows 10 to 20 
    Range("20:30").EntireRow.Hidden = false //Assume you built female section in 20 to 30 
Else // replicate code for female scenario 
    Rows("10:20").EntireRow.Hidden = False 
    Rows("20:30").EntireRow.Hidden = True 
End if 

フォームがたくさんを変更した場合(つまり、わずか10%の静的および90%の変数)私の経験は、あなたがオフに良く、各フォームを構築しているということです別々のワークシートにし、それに応じて表示:あなたの入力フィールドがを異なる場合

If gender = "Male" Then 
    Worksheets("maleForm").Visible = True 
Else 
    Worksheets("femaleForm").Visible = True 
End if 

あなたが選択的に特定のフィールドを無効にすることを検討することができます

If gender = "Male" Then 
     Worksheets("myForm").OLEObjects("lipstickDropDown").Enabled = False //Using Control Toolbox items e.g. textbox, combobox etc... 
     Worksheets("myForm").OLEObjects("beerDropDown").Enabled = True 
Else 
     Worksheets("myForm").OLEObjects("lipstickDropDown").Enabled = True 
     Worksheets("myForm").OLEObjects("beerDropDown").Enabled = False 
End if 

これを後で追加することができます。これがあなたを助けますか?

+0

多くのおかげでRemnant。それは私が探していたアドバイスのようなものです。ちょうどそれをする方法を考えることができませんでした。異なるワークシート上のフォームがよりうまくいくと思う。再度、感謝します –

関連する問題