2016-11-30 11 views
0

私はExcel VBA UserFormにスクリプトを書いています。このフォームには、ユーザーが記入する3つのフィールド(ComboBox)があります。私はComboBox 3の内容をCombobox2に入力されたものに依存させたいと思っています。次のようにComboBox Excel VBAをフリーズする方法

ComboBox2が移入さ:

With ComboBox2 
     .AddItem "Legal Information" 
     .AddItem "Media" 
     .AddItem "Official Disclosures" 
     .AddItem "Patents and Trademarks" 
     .AddItem "Private Corporate Information" 
     .AddItem "Private Individual Information" 
     .AddItem "Property Information" 
     .AddItem "Public Company Information" 
     .AddItem "Public Tenders" 
     .AddItem "Ships, Vessels and Aircraft Information" 
     .AddItem "Watchlists/Blacklists" 
    End With 

ComboBox2でどのようなユーザ入力に応じて、ComboBox3は異なるオプションによって移入されます。私は、次のようなやっている:

Private Sub ComboBox2_Change() 

Dim index As Integer 
index = ComboBox2.ListIndex 

ComboBox3.Clear 

Select Case index 
    Case Is = 0 
     With ComboBox3 
      .AddItem "Administrative" 
      .AddItem "Civil" 
      .AddItem "Criminal" 
     End With 
    Case Is = 1 
     With ComboBox3 
      .AddItem "Arts and Culture" 
      .AddItem "Blog/Social Media" 
      .AddItem "Business and Economics" 
      .AddItem "General News" 
      .AddItem "Intelligence and Security" 
      .AddItem "Official News Agency/Official Press" 
      .AddItem "Energy" 
      .AddItem "Pharmaceutical and Medical News" 
      .AddItem "Politics" 
      .AddItem "Religion" 
      .AddItem "Society, Lifestyle and Opinion" 
      .AddItem "Sport" 
     End With 

End Sub 

ComboBox3を凍結させるために、私はケースにComboBox2のオプションのいずれかの他が選択され、記入するユーザーのために不可能、すなわち、たい - イベントにCase is = 2, 3, 4, 5, 6, 7, 8, 9, 10 。私はこれをどうすればよいのですか?ありがとうございました。

+4

'ComboBox3.Enabled = False'? – CMArg

+2

.lockedを使用してロックするか、または使用可能にすることができます。 –

+2

FWIW 'Case Is = 0'は、より簡単に' Case 0'として書き込むことができます。 –

答えて

0

コメントに記載されているように、ComboBox3ComboBox3.Enabled = Falseで「フリーズ」されています。ただし、ユーザーがComboBoxを「フリーズ」してからComboBox2で別のオプションを選択する場合を避けるため、各インデックスの前にComboBox3.Enabled = Trueを挿入する必要があります。

修正されたコードは以下のとおりです。

Private Sub ComboBox2_Change() 

Dim index As Integer 
index = ComboBox2.ListIndex 

ComboBox3.Clear 

Select Case index 
    Case Is = 0 
     ComboBox3.Enabled = True 
     With ComboBox3 
      .AddItem "Administrative" 
      .AddItem "Civil" 
      .AddItem "Criminal" 
     End With 
    Case Is = 1 
     ComboBox3.Enabled = True 
     With ComboBox3 
      .AddItem "Arts and Culture" 
      .AddItem "Blog/Social Media" 
      .AddItem "Business and Economics" 
      .AddItem "General News" 
      .AddItem "Intelligence and Security" 
      .AddItem "Official News Agency/Official Press" 
      .AddItem "Energy" 
      .AddItem "Pharmaceutical and Medical News" 
      .AddItem "Politics" 
      .AddItem "Religion" 
      .AddItem "Society, Lifestyle and Opinion" 
      .AddItem "Sport" 
     End With 
    Case Is = 2 
     ComboBox3.Enabled = False 
    Case Is = 3 
     ComboBox3.Enabled = False 
    Case Is = 4 
     ComboBox3.Enabled = False 
    Case Is = 5 
     ComboBox3.Enabled = False 
    Case Is = 6 
     ComboBox3.Enabled = False 
    Case Is = 7 
     ComboBox3.Enabled = False 
    Case Is = 8 
     ComboBox3.Enabled = False 
    Case Is = 9 
     ComboBox3.Enabled = False 
    Case Is = 10 
     ComboBox3.Enabled = False 
End Select 

End Sub 
+0

'ComboBox3.Clear'の直後に' ComboBox3.Enabled = False'を追加して、cmbを無効にして起動することができます。そして、他のすべてのケース(2,3,4など)をリストする代わりに、 'Case Else'と書いてください – CMArg

1

コンボボックスの "MatchRequired"を使用し、それをTRUEに設定すると、ユーザーはコンボボックスに存在する項目のみを選択または入力できます。それを凍らせる必要はありません。

関連する問題