0

VBA (Excel 2010) では、私は

  1. 名前付き範囲リストを動的に作成する
  2. そのリストを使用して、別の列にドロップダウンの選択肢を作成します

ドロップ ダウン リストを作成するときに、(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") が機能するはずだったと言いますが、機能しません。

ありがとうございました!

4

1 に答える 1

2

変化する

ActiveWorkbook.Names.Add Name:="StageListChoices", RefersToR1C1:=(vTabDateName & "!R3C37:R5C37")

ActiveWorkbook.Names.Add Name:="StageListChoices", RefersToR1C1:=("='" & vTabDateName & "'!R3C37:R5C37")

あなたは と を見逃してい=ました'

于 2013-01-24T22:14:17.253 に答える