2016-07-19 7 views
0

現在、名前付き範囲のタブ内で作業しています。それらはすべてクラス1に関連付けられています。これらのセルを2回複製して、クラス2と3の同じ列を作成したいとします。名前付き範囲は、次の2つのクラスに付けられた_2/_3と同じでなければなりません。また、各列内で式を変更する必要がありますが、正しい接尾辞(_2/_3)が含まれている必要があります。名前付き範囲の重複/数式の変更

これは、より良い私がやろうとしていますかを説明するための簡易版である:

**Class 1** 

    Lives   
    Age  
    Adjust   
    Claim  
    Risk  

**Class1 Class2  Class3** 

    Lives  Lives_2  Lives_3 

    Age  Age_2  Age_3 

    Adjust Adjust_2 Adjust_3 

    Claim  Claim_2  Claim_3 

    Risk  Risk_2  Risk_3 

これらは名前細胞のの代表的なものです。それらはすべて、各クラス内でリンクする数式も含んでいます。既に完了しているクラス1領域は、9列120行を有する。

Sub ChangeNames() 
    Dim OldName As String 
    Dim NewName2 As String 
    Dim NewName3 As String 
    Dim rng As Range 



    For r = 1 To 127 
     For c = 1 To 10 
      If IsNamedRange(Cells(r, 1 + c)) Then 
        Set rng = Sheets("Medical").Cells(r, 1 + c) 

        OldName = rng.Name 
        NewName2 = OldName & "_2" 
        NewName3 = OldName & "_3" 

        Sheets("Medical").Cells(r, 11 + c).Name = NewName2 
        Sheets("Medical").Cells(r, 21 + c).Name = NewName3 

      End If 

     Next c 
    Next r 


End Sub 

Function IsNamedRange(MyRange) As Boolean 
    Dim vntName As Variant 
    On Error Resume Next 
     IsNamedRange = MyRange.Name <> "" 
    Exit Function 
End Function 
:私はここで、次9.私はちょうど名前を変更しようとして働いていたが、私が失敗したコードである18にコラム10を移入するには、クラス2とクラス3をしたいと思います

これはVBAで可能ですか?どんな助けでも大歓迎です! DIMが整数

For Each this In Workbook.names 
    If Range(this).Worksheet = "Medical" Then 
     NewName2 = Range(this).Name & "_2" 
     NewName3 = Range(this).Name & "_3" 
     x = Range(this).Column 
     y = Range(this).Row 
     Sheets("Medical").Cells(x, 10 + y).Name = NewName2 
     Sheets("Medical").Cells(x, 20 + y).Name = NewName3 
    End If 

Next this 

End Subの

+1

*これはVBAで可能ですか?はい。 *しかし私はうまくいかなかった* - あなたが働いていないものについて詳述すれば、私たちはもっとあなたを助けることができます。 –

+0

上記のコードを実行すると、古い名前変数は、セルの名前であるMed_Prodではなく、 "= Medical!$ b $ 3"の値を持ちます。セルの場所ではなく名前の範囲を返すにはどうすればよいですか? – Brian

+0

がシートレベルまたはブックレベルで定義されている名前であることをさらに明確にする必要があるかどうかを教えてください。 –

答えて

1
よう整数 暗いyとxは文字 として文字列 として文字列 暗いOLDNAMEとして

サブ名() 暗いこのString として薄暗いNewName2薄暗いNewName3

このコードを試してみてください。正確なデータセットに合わせてオフセットや微調整を少し調整する必要があるかもしれませんが、できる限り正確に定義しました。

Sub ChangeNames() 

    Dim rName As Name 
    For Each rName In ThisWorkbook.Names 

     If rName.RefersToRange.Parent.Name = "Medical" Then 

      Select Case rName.RefersToRange.Column 

       Case 2 To 10 

        For i = 1 To 2 

         Dim sName As String 
         sName = "=" & rName.RefersToRange.Offset(, i * 10).Parent.Name 
         sName = sName & "!" & rName.RefersToRange.Offset(, i * 10).Address 
         ThisWorkbook.Names.Add rName.Name.Name & "_" & i + 1, RefersTo:=sName 

        Next 

      End Select 

     End If 

    Next 

End Sub 
+0

Imアプリケーションまたはオブジェクト定義エラーを取得した場合*** rName.RefersToRange.Parent.Name = "Medical" Then *** line – Brian

+0

with the wsの機能は何ですか?どうすればよいでしょうか? – Brian

+0

とrNameは、A15 .. – Brian

関連する問題