2017-10-20 11 views
1

似たようなものがたくさんありますが、正確には私の問題ではありません。私は、タブ名の詳細に基づいて、各タブの範囲に名前を付けようとしています。私は1つのシートにタブ名を配置し、これらのセルに基づいて名前付き範囲を定義したいと考えています。変数を使って範囲名を好きにすることはできません。シートごとに名前付き範囲のリストを作成する

Sub Test() 

    Dim x As Integer 
    Dim y As String 
    Dim YY As String 
    Dim z As String 
    Dim ZZ As String 

    For x = 1 To Worksheets.Count 

    Sheets("List of Tab Names").Activate 

    y = Cells(x, 1).Value 
    z = Cells(x, 2).Value 
    YY = y & "Data2" 
    ZZ = z & "YoA2" 


    Sheets(y).Activate 

    Range("C9:BG233").Name = " ' " & YY & " ' " 
    Range("C7:BG7").Name = " ' " & ZZ & " ' " 

    Next x 

End Sub 

答えて

0

範囲名を一重引用符で囲む必要はありません。ただ、試してみてください。

Range("C9:BG233").Name = YY 
Range("C7:BG7").Name = ZZ 
+0

私は実行を取得時エラー '1004':メッセージ。それは私が非文字かアンダースコアで何かを命名しようとしていると言います。だから、私はその助けが見えるように列の名前を変更しています。 – user8806917

+0

yとzにはどのような値がありますか?私はyがあなたのシート名に正確に何かを仮定していますが、スペースやハイフンがあれば問題が発生します。 – Michael

+0

ああ!タブの名前には空白があります。ありがとうございました! – user8806917

0

を私はあなたのアイデアを持っている場合は、右私はあなたが不足しているすべてはあなたがここにコード内で見ることができるように機能Worksheets(sheetname)

だと思う:

Range("A1:A5").Name = Worksheets("Sheet2").Range("A1") 
+0

私の問題は、すべてのシートをループして名前を付けることです。 Sheet2をループにする必要があります。 – user8806917

+0

関数 'Worksheets()'は、整数( 'Worksheets(1)'のように)で使用できるので、forループを使ってすべてのシートを処理できます。それとも、シートの名前を付けるだけですか? – amitklein

関連する問題