2016-09-06 8 views
1

VBAをしばらく学習していますが、私が直面していた1つの問題がありました。VBAを使用してExcelの動的列に名前を付ける方法

VBAを使用して列に名前を付けることができるように、後で他のセル/列で参照列(INDEX関数を使用)として使用できます。

固定されている列の名前を付ける方法を知っています。しかし、それは私が探しているものではありません。私の問題の

例:

今月私はTotalAmountとして列Dを命名しています。 VBAコードとすることができる:私は、INDEX関数を使用して他のセルに、その列を参照する

ActiveWorkbook.Names.Add Name:="TotalAmount", RefersToR1C1:="=Sheet1!C4" 

ただし、翌月、列番号Dの直前に新しい列を追加します(前月の販売額を言います)。したがって、TotalAmountという名前の新しい列は、Dではなく、Eという列になります。

新しい列を追加するときに列の名前を変更しないでください。列Eは自動的にTotalAmount列になります。しかし、私はそれに頼ることはできません。なぜなら、Excelシートにはさまざまな人々がアクセスし、誰もが自分の計算をしているからです。

だから私は、同様にこれを試してみました(私はそれが愚かであると確信していますが、ちょっと、私はまだnoobのだ)が、それはうまくいきませんでした:(

Sub Macro4() 
    Range("D1").Select 
    '(I can select the desired cell each month using the search function) 
    Dim i As Integer 
    i = ActiveCell.Column 
    ActiveWorkbook.Names.Add Name:="TotalAmount", RefersToR1C1:="=Sheet1!Ci" 
End sub 

誰も私を助けることができるのであれば、私は非常に感謝されますあるいは、このテーマに私を導く。あなたは引用符で。引用符では、そのは、単に「i」はと値がないことを使用することはできませんので

答えて

0

「私」は可変である。これはあなたの問題を解決するかどうActiveWorkbook.Names.Add Name:="TotalAmount", RefersToR1C1:="=Sheet1!C" & i
わからないしてみてくださいただし

+0

テキスト"Total Amount"ためA1:Z1を検索し、そのセルに名前付き範囲を設定します!チャームのように働いた!ありがとうございました! :D – Alomical

0

VBAは、あなたのために、細胞見つけるために:コードに

Sub SetNamedRange() 
    Dim rng As Range 

    Set rng = ThisWorkbook.Worksheets("Sheet1").Range("A1:Z1").Find("TotalAmount") 
    ThisWorkbook.Names.Add Name:="TotalAmount", RefersToR1C1:=rng 
End Sub 

をこれは私が探していたまさにです

+0

ねえ! ありがとうございました! これは現在の列の名前を設定しますか?シート内のテキスト「TotalAmount」ではない可能性があるためです。むしろ、私は現在の列の名前を "TotalAmount"に設定します スクリプトを疲れさせて、 "ランタイムエラー" 1004 "アプリケーション定義またはオブジェクト定義のエラー"を表示しています:S – Alomical

+0

この 'ThisWorkbook.Names。名前の追加:= "TotalAmount"、RefersToR1C1:= rng.Address '。それはあなたのエラーを解決するはずです。それを言って、私はあなたが何をしようとしているのか分かりません。現在の列の名前を "TotalAmount"に設定しますか?もしそうなら、なぜあなたは "TotalAmount" initを持つセルを探していますか? – Zac

+0

こんにちは! はい現在の列の名前を "TotalAmount"にしたいと思います。私はCallumDA33に私の説明を説明しようとしていました。私は彼が私の意見を誤解していると思うので。 これで、現在の列の名前を「TotalAmount」にしたかっただけです。課題は、今月、 "TotalAmount"という名前の列は列Dです。しかし、来月は、列Eになります。 これで、ヘッダー行のテキストを検索して、毎月右側の列を識別できます。希望の列のセルが選択されたら、その列の名前を「TotalAmount」にします。 – Alomical

関連する問題