2017-10-23 13 views
1

VBAでコード化されたデータ検証ボックスがあります(下記を参照してください)。データ検証セルに人が入力したときに読み込みが完了し、オートコンプリートを行う方法が見つかりません。データ検証オートコンプリート

ほとんどの人がコンボボックスを提案していますが、コンボボックスを特定のセルの内側に配置する方法は見つかりませんでした。誰かがコンボボックスが存在する行をコピーしようとすると、別の行を別のコンボボックスに貼り付けることができるようにしたい。

データ検証では、これは既に可能ですが、自動補完機能はありません。

ご協力いただきましてありがとうございます。

Sub DataValidation() 

Dim WS As Worksheet 
Dim WS2 As Worksheet 
Dim Range1 As Range, Range2 As Range 

Set WS = ThisWorkbook.Worksheets("Report") 
Set WS2 = ThisWorkbook.Worksheets("MachineList") 

Set Range1 = WS.Range("A7") 'This is the cell the data validation is placed in. 
Set Range2 = WS2.Range("A2:A64") 'This will change if the Machine List gains or loses machines. 

    With Range1.Validation 
     .Delete 
     .Add Type:=xlValidateList, _ 
      Formula1:="='" & WS2.Name & "'!" & Range2.Address 
     .IgnoreBlank = True 
     .InCellDropdown = True 
     .InputTitle = "Machine Name" 
     .ErrorTitle = "ERROR: Invalid Machine" 
     .InputMessage = "Please enter or select a machine..." 
     .ErrorMessage = "You have entered an invalid machine. Please try again." 
     .ShowInput = True 
     .ShowError = True 
    End With 

End Sub 
+1

[https://www.extendoffice.com/documents/excel/2401-excel-drop-down-list-autocomplete.html](https://www.extendoffice.com/documents/excel/2401- excel-drop-down-list-autocomplete.html)help? –

+0

これに最も簡単なやり方は、ドロップダウンリストの内容で隠れた行を束ねることです。こうすると、これらの値が上記のセルにあるため、ユーザーが入力すると、Excelは上記の行の値に基づいてオートコンプリートしようとします。それらのコンテンツ行が非表示になっていることを確認してください。 – tigeravatar

+0

こんにちはtigeravatar、私は仕事にそれを得ることができませんでした - それはリストが短い場合はそれを行いますが、私は私のリスト全体を入れて、それはdoes not autocomplete ...また、リストは、可能であれば、このルートを避けたいと考えています。私はあなたの助けに感謝します! – mitchmitch24

答えて

0

完璧な解決策はありませんが、ここで私は、実装が容易で、編集したものです:

http://www.contextures.com/xlDataVal14.html#works(シングルセルをクリック/選択) http://www.contextures.com/xlDataVal11.html#works(ダブル細胞クリック)

は、基本的に、ユーザーがデータ検証セルをクリックすると、このコードはコンボボックスを直接その上に置きます(これはデータ検証と同じ式を使用して行われます)。この方法では、ユーザーはまだオートコンプリートできますが、細胞が何らかの形で変化するならば、コンボボックスは動く。