私は、検証、数式、および保護と共に見積りと実際のシートに新しい顧客範囲を追加するルーチンを持っています。私は数式のシート全体で使用されるように、特定のセルに名前付き範囲を追加します。VBA名前付き範囲はシート名とセルアドレスとして取得します
次のように範囲がある名前のコード部分
までの名前を行う機能がとても
Function InitializeAddedRange(rangeToFormat As Range, _
custName As String, currentSheet As Worksheet)
として宣言されている(これは名前のマネージャーに見られるような範囲が正しく命名され、動作します) rangeToFormat以下スニペットで
Call InitializeAddedRange(startCell, customerName, sourceWorksheet)
ので、次のよう
とは呼ばれ
startCellありますSet rangeToFormat = rangeToFormat.Offset(0, 1)
If currentSheet.Name = "Actual Quarterly Sales" Then
rangeToFormat.Name = Replace(custName, " ", "") & "ActualBasePrice"
rangeToFormat.Offset(0, 1).Name = Replace(custName, " ", "") & "ActualIsCurrent"
ElseIf currentSheet.Name = "Quarterly Sales Projections" Then
rangeToFormat.Name = Replace(custName, " ", "") & "BasePrice"
rangeToFormat.Offset(0, 1).Name = Replace(custName, " ", "") & "IsCurrent"
End If
同じサブルーチンで呼び出されたが、上記のコードの後にある関数 私は多くの数式で必要な範囲の名前を取得しようとしています。 (startCell.Name)は
Set tempRange = Range(startCell.Offset(1, 3), startCell.Offset(1, 14))
For Each cCell In tempRange
With cCell
.Value = 0
.NumberFormat = "$#,##0"
.FormulaR1C1 = "=DrumGallons*" & startCell.Name & "*R[-1]C"
.Locked = True
End With
Next cCell
問題がstartCell.Name
戻りシート名とセルアドレス即ちSalesEstimates代わりcustomernameBasePriceなければならないという名前の範囲の$ B $ 12あります。私はVBAの仕事をたくさんしてきましたが、この問題を克服することはできません。これは、サブルーチンが終了せず、関数がアクセスしようとする前にExcel内で名前付き範囲が実際に変更されていないために発生しますか?私はそれがそれであるとは思わないが、私は数多くのことを試みたが、どれもうまくいかない。
rangeToFormatはstartCell、その関数にパラメータとして渡さ..です。私は投稿を編集するつもりです。私は別として、範囲の命名が元の投稿で正しく機能していることに気付きました。名前の取得はそうではありませんでした。 – dinotom
明らかに、ワークブックとワークシート名の間には[違い](https://msdn.microsoft.com/en-us/library/office/ff823060.aspx)があります。編集:また[this](http://stackoverflow.com/questions/3630496/how-do-you-get-a-range-to-return-its-name)? – findwindow
@ findwindow投稿は回答として、病気は受け入れる... Name.Nameは名前を取得するためのものであり、Range.Name = ....はそれを設定する – dinotom