2016-05-24 21 views
0

私は、検証、数式、および保護と共に見積りと実際のシートに新しい顧客範囲を追加するルーチンを持っています。私は数式のシート全体で使用されるように、特定のセルに名前付き範囲を追加します。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内で名前付き範囲が実際に変更されていないために発生しますか?私はそれがそれであるとは思わないが、私は数多くのことを試みたが、どれもうまくいかない。

+0

rangeToFormatはstartCell、その関数にパラメータとして渡さ..です。私は投稿を編集するつもりです。私は別として、範囲の命名が元の投稿で正しく機能していることに気付きました。名前の取得はそうではありませんでした。 – dinotom

+2

明らかに、ワークブックとワークシート名の間には[違い](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

+0

@ findwindow投稿は回答として、病気は受け入れる... Name.Nameは名前を取得するためのものであり、Range.Name = ....はそれを設定する – dinotom

答えて

0

私はそれを呼び出すためにテストできません。私はあなたが名前のオブジェクトに対処する必要があると思う

+0

@dinotom:あなたはそれを通過しましたか? – user3598756

0

を参照する範囲に添付の名前を取得するには

Name(startCell) 

を使用してみてください

rng.Name.Name 
+0

はすでにOPの最初のコメント – dinotom

+0

に記されています@dinotomのコメントは永遠に続くわけではありません。どんなものであれ、私はこれをウィキにしようと、誰かの代理人や何かを盗むつもりはない。 – Raystafarian