2017-07-26 18 views
0

ワークシート(PartsList)には、それぞれの行からデータをフィルタリングする単純な列のデータがあります。同じワークブック内の別のワークシート(BoM)では、この列をデータ検証 'リスト'で参照しています。データ検証ドロップダウンリストは自動更新ではありません

「PartsList」ワークシート内のデータが更新されると、ドロップダウンリストに表示される情報は同じままです。

下の図に示されているように、「部品番号」および「バリアント」列には、「部品番号」が更新されていません。 enter image description here enter image description here

そして、ここではリストを生成式である: enter image description here とにかくリストの自動更新ドロップダウンを作るのはありますか?

+0

データ検証リストはどのように定義されていますか?ここでは手伝いが難しいとは思っていません。 –

+0

データ検証のソース範囲を編集しましたか? – dwirony

+0

データ検証設定のイメージとリストを生成する式を追加しました。 –

答えて

0

ワークブックが開くたびにリストを更新するvbaコードをバックグラウンドで書き込みます。 ステップ1:パーツ・リストの行数に基づいて、列にデータ検証ファイラーを追加するvbaコードを記述します。 手順2:ブックを開くたびにマクロを実行するには、workbook_open fnを使用してください。

0

問題を解決できました。

私はVBAコードをオンラインで見つけ、必要に応じて改造しました。

Option Explicit 

Private Sub Worksheet_Change(ByVal Target As Range) 
' Ensure all lists are made from tables and that these tables are named 
' in the Name Manager. 
' When creating your Data Validation List, instead of selecting a range 
' in 'Source', click within 'Source' and press 'F3'. Finally select your 
' tables name. 
Dim strValidationList As String 
Dim strVal As String 
Dim lngNum As Long 

On Error GoTo Nevermind 
strValidationList = Mid(Target.Validation.Formula1, 2) 
strVal = Target.Value 
lngNum = Application.WorksheetFunction.Match(strVal, ThisWorkbook.Names(strValidationList).RefersToRange, 0) 

' Converts table contents into a formula 
If strVal <> "" And lngNum > 0 Then 
    Application.EnableEvents = False 
    Target.Formula = "=INDEX(" & strValidationList & ", " & lngNum & ")" 
End If 

Nevermind: 
    Application.EnableEvents = True 

End Sub 
関連する問題