-1
データ検証入力メッセージでは、名前付き範囲( "MyRange")内の各セルについて、Table1 [Column1]と照合し、表1 [列2]。Excel VBA:動的データ検証入力メッセージ(インデックス一致)
アクティブなセルは一定であり、範囲全体に同じ入力メッセージがあるので、ループするためにはこれが必要です。私は数式INDEX MATCHにコミットしていない、それだけでその機能を実行する必要があります。
Sub Tester()
Dim mycell As String
mycell = ActiveCell
With Range("MyRange").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertInformation, _
Operator:=xlBetween, Formula1:="=INDIRECT(Test1&Test2)"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = Application.WorksheetFunction.Index(Range("Table1[Column2]"), _
Application.WorksheetFunction.Match(mycell, Range("Table1[Column1]"), 0))
.ErrorMessage = ""
.ShowInput = True
.ShowError = False
End With
End Sub
ありがとうございました!
何のループはありませんか?あなたはRange Validationを持っているだけです...どこがループすると思いますか? *少なくとも、あなたが最初に 'Cells(activecell.row + 1、ActiveCell.Column)'を使ってアクティブセルを変更したいと思うでしょう。 ...また、[.Select'/'.Activate'の使用を避けるのが最善です(https://stackoverflow.com/questions/10714251/how-to-avoid-using-select)。 -in-excel-vba)。 – BruceWayne
私はそれを期待していません。それが私が解決しようとしている問題です。 :) – AlivePresumably
あなたは範囲内のループについてのWeb検索を行うことができます.... http://www.excel-easy.com/vba/examples/loop-through-defined-range.html – jsotola