VBA (Excel 2010) では、私は
- 名前付き範囲リストを動的に作成する
- そのリストを使用して、別の列にドロップダウンの選択肢を作成します
ドロップ ダウン リストを作成するときに、(a) 名前付き範囲を使用してもうまくいかないようです。(b) 名前付き範囲を使用しないと、シート名とセル参照で参照する必要があるため、問題が発生します。私のシートの名前が今日の日付に変更されたからです。
これは面倒ですが、これまでのところ私が持っているものは次のとおりです。
' find the name of the worksheet and replace it with today's date
Dim vTabOriginalName As String
Dim vTabDateName As String
Dim vRangeName As String
vRangeName = "StageListChoices"
vTabOriginalName = ActiveSheet.Name
vTabDateName = Format(Now(), "yyyy-mmm-dd")
ActiveSheet.Name = vTabDateName
'create a drop down list for the stage (col K)
Range("AK3").Value = "NO ACTIVITY"
Range("AK4").Value = "SOLICITATION"
Range("AK5").Value = "OPPORTUNITY"
ActiveWorkbook.Names.Add Name:="StageListChoices", RefersToR1C1:=(vTabDateName & "!R3C37:R5C37")
'~~> Creates the list
With Range("K2:K" & vReportRowCount).Validation 'report row count known earlier
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=StageListChoices"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
名前付き領域を作成したときに記録されたマクロは、十分に理にかなっています。
ActiveWorkbook.Names.Add Name:="StageListChoices", RefersToR1C1:= _
"=2013-JAN-24!R3C37:R14C37"
ActiveWorkbook.Names("StageListChoices").Comment = ""
もともと、文字列変数を使用して VBA でドロップダウンを作成していましたが、「実際の」リストは 15 項目の長さで、ファイルを再度開くと、検証が長すぎて (?)、変更されたというエラーが発生していました。オフ。
基本的に、私は次のようなことを試しました:
Formula1:="=StageListChoices"
Formula1:=vRangeName
Formula1:="=vRangeName"
Formula1:=vTabDateName & "!R3C37:R5C37"
私が調べたものはすべて、最初のもの (Formula1:="=StageListChoices") が機能するはずだったと言いますが、機能しません。
ありがとうございました!