Excel2003でセルに名前を付ける方法を教えてください

このQ&Aのポイント
  • Excel2003でセルに名前を付ける方法を教えてください。
  • D12からD36のセルまで1行おきに名前をつけたい名称が13ケ登録されています。結合セルにも名前を付与する方法を教えてください。
  • マクロを使用してセルに名前を付ける方法を教えてください。13個以上の名前を付与する場合、どのようなマクロを作成すれば良いですか。
回答を見る
  • ベストアンサー

セルに名前をつける

excel2003 セルに名前を付与するマクロで繰り返し処理する設定を教えていただきたく。 構成: D12からD36のセルまで1行おきに名前をつけたい名称が13ケ登録されています 結合されたセルが (1)AG11:AH12、AG13:AH14、AG15:AH16…AG35:AH36 全部で13ケ (2)AI11:AJ12、AI13:AJ14、AI15:AJ16…AI35:AJ36 全部で13ケ 存在します (1)のセル名称はD12を参照し先頭には_CKC_を付加、末尾には_1を付加 (2)のセル名称はD12を参照し先頭には_CKC_を付加、末尾には_0を付加 という内容を下記のマクロで作成しました。 Sub Sample1() Dim name1 As String Dim name2 As String Dim name3 As String Dim name4 As String Dim name5 As String Dim name6 As String Dim name7 As String Dim name8 As String Dim name9 As String Dim name10 As String Dim name11 As String Dim name12 As String Dim name13 As String name1 = Range("D12") Names.Add name:="_ckc_" & name1 & "_0", RefersTo:="=$AG$11" Names.Add name:="_ckc_" & name1 & "_1", RefersTo:="=$AI$11" name2 = Range("D14") Names.Add name:="_ckc_" & name2 & "_0", RefersTo:="=$AG$13" Names.Add name:="_ckc_" & name2 & "_1", RefersTo:="=$AI$13" name3 = Range("D16") Names.Add name:="_ckc_" & name3 & "_0", RefersTo:="=$AG$15" Names.Add name:="_ckc_" & name3 & "_1", RefersTo:="=$AI$15" name4 = Range("D18") Names.Add name:="_ckc_" & name4 & "_0", RefersTo:="=$AG$17" Names.Add name:="_ckc_" & name4 & "_1", RefersTo:="=$AI$17" name5 = Range("D20") Names.Add name:="_ckc_" & name5 & "_0", RefersTo:="=$AG$19" Names.Add name:="_ckc_" & name5 & "_1", RefersTo:="=$AI$19" name6 = Range("D22") Names.Add name:="_ckc_" & name6 & "_0", RefersTo:="=$AG$21" Names.Add name:="_ckc_" & name6 & "_1", RefersTo:="=$AI$21" name7 = Range("D24") Names.Add name:="_ckc_" & name7 & "_0", RefersTo:="=$AG$23" Names.Add name:="_ckc_" & name7 & "_1", RefersTo:="=$AI$23" name8 = Range("D26") Names.Add name:="_ckc_" & name8 & "_0", RefersTo:="=$AG$25" Names.Add name:="_ckc_" & name8 & "_1", RefersTo:="=$AI$25" name9 = Range("D28") Names.Add name:="_ckc_" & name9 & "_0", RefersTo:="=$AG$27" Names.Add name:="_ckc_" & name9 & "_1", RefersTo:="=$AI$27" name10 = Range("D30") Names.Add name:="_ckc_" & name10 & "_0", RefersTo:="=$AG$29" Names.Add name:="_ckc_" & name10 & "_1", RefersTo:="=$AI$29" name11 = Range("D32") Names.Add name:="_ckc_" & name11 & "_0", RefersTo:="=$AG$31" Names.Add name:="_ckc_" & name11 & "_1", RefersTo:="=$AI$31" name12 = Range("D34") Names.Add name:="_ckc_" & name12 & "_0", RefersTo:="=$AG$33" Names.Add name:="_ckc_" & name12 & "_1", RefersTo:="=$AI$33" name13 = Range("D36") Names.Add name:="_ckc_" & name13 & "_0", RefersTo:="=$AG$35" Names.Add name:="_ckc_" & name13 & "_1", RefersTo:="=$AI$35" End Sub 付与したい名称が13ケであれば、上記の通りベタでも対応可能ですが、 付与したいセルが多くなった時、ベタで対応するのは大変なので、 Nケの名前を付与させるマクロを教えていただきたく。 マクロ初心者なので、VBAはベタで教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

sub macro1()  dim r as long  dim c as integer  for r = 11 to 35 step 2   for c = 0 to 1    cells(r, c * 2 + 33).name = "_CKC_" & cells(r + 1, "D").value & "_" & c   next c  next r end sub ぐらいで十分です。

3620313
質問者

お礼

回答ありがとうございます。大変助かりました。

関連するQ&A

  • Excel VBA セル範囲に名前をつける

    Excel VBA独学中の初心者です。 セル範囲に名前をつける方法で以下の2つの方法があるようです。 (1) 同じように動作しますが違いは有るのでしょう。 (2) 本質的に考え方または内部動作は違うのでしょうか。 お分かりの方教えていただけますと助かります。 --------------- '方法1 Sub 名前の定義1() Range("sheet1!A2:B3").Name = "名前1" End Sub '方法2 Sub 名前の定義2() Range("A1").Select ActiveWorkbook.Names.Add Name:="名前2", _ RefersTo:="=sheet1!A2:B3" End Sub

  • Excel VBA 「名前の定義」で参照範囲RefersToR1C1に

    Excel VBA 「名前の定義」で参照範囲RefersToR1C1にString型を代入するとダブルクォーテーションが入ってしまう問題を解決するには? Excel VBAで、次のように「名前の定義」で参照範囲にString型を代入するとダブルクォーテーションが入ってしまいます。 Sub Macro0() Dim str As String Range("B162").Select str = "'" + Range("B162").Value + "'" + "!A1:Z65535" ActiveWorkbook.Names.Add Name:="name", RefersToR1C1:=str ActiveWorkbook.Names("tes1").Comment = "" End Sub これを実行しますと、「参照範囲」にダブルクォーテーション""が余計に入ってしまい、正しく参照できません。 このダブルクォーテーションをつけない方法はありますか?よろしくお願いします。

  • セルの値を参照して名前を定義する方法

    A列  B列 a    ああああ b   いいいい b   うううう b   ええええ c   おおおお c   かかかか d   きききき d   くくくく d   けけけけ d   ここここ d   ささささ このような配列でデータが存在します。 A列の文字を名前にしてB列に名前を定義しようとしています。 例えばああああという文字列にaという名前を定義したいのです。 いいいい、うううう、ええええにはbという名前を定義したいのです。 A列の同じデータの数が決まっていないので Dim cnt As Long 'A列の同じ値の数 Dim tName As String 'A列の値 cnt = WorksheetFunction.CountIf(ActiveSheet.Range("A1:B500"), tName) という関数を探してきたので、これでA列の同じ値のセルの数を取得しようと思います。 名前の定義はマクロを記録したところ・・・ ActiveWorkbook.Names.Add Name:="a", RefersToR1C1:="=Sheet1!R2C2:R2C2" を得ました。 この後どのようにしてプログラムを組み立てたらいいでしょうか。 よろしくお願いします。

  • エクセルVBA 「名前の定義」について

    いつもお世話様です。エクセル2000での名前定義に関するVBA操作で疑問がありますのでよろしくお願い申し上げます。 (o。_。)oペコッ 以下のマクロで、あるエクセルのBOOKの名前の定義をすべて書き出してみました。 Sub Names_Check() Dim nm As Object Set sh = ActiveWorkbook.Worksheets.Add For Each nm In ActiveWorkbook.Names i = i + 1 sh.Cells(i, 1) = nm.Name sh.Cells(i, 2) = "'" & nm.RefersTo Next End Sub すると、なかにはセル範囲を参照していない名前の定義がけっこう見つかりました。 それらはよく見ると =○○○.xls!△△マクロ のようなマクロの名前を参照していました。 そんな名前の定義はつけた覚えが無いのですが、これは何でしょうか? なぜそのような名前の定義が出来てしまうのでしょうか? 次にセル範囲を参照していないこれらの名前定義を削除するため下記のマクロを書いてみたところ、「実行時エラー1004 その名前は正しくありません」というエラーがでてしまいます。 どう書いたら削除できるのでしょうか?(もちろん手動では削除できます。) Sub Del_NameRefQuestion() '不明な参照の名前定義削除 Dim nm As Object Dim mystr As String, ans As Integer For Each nm In ActiveWorkbook.Names If InStr(nm.RefersTo, "$") = False Then ans = MsgBox(nm.Name & "/" & nm.RefersTo, vbYesNo + vbQuestion, "削除しますか?") If ans = vbYes Then nm.Delete ’ここでエラー End If Next MsgBox "不明参照の名前定義削除完了", , " ( ̄ー ̄)v" End Sub

  • エクセルVBAで指定したセルへジャンプするコード(追加の追加質問です)

    http://oshiete1.goo.ne.jp/qa2903797.html たびたびすみません。最後にひとつだけお願いします。 お教えいただいた下のコードは順調に動作するのですが、 対象セルが結合セルの場合、エラーが出てしまいます。 とまってしまうコードの部分は With Selection.AddComment です。 エラーメッセージにはプロシージャの呼び出し、 または引数が不正です。(Error 5)と書いてあります。 結合セルは動作しないものでしょうか? Sub test01() Dim x As String Dim ThisSheet_Name As String Dim Sheet_Name As String Dim Range_Name As String Dim I As Integer, n As Integer Dim Ans As Integer Dim myComment As String '新規追加 Dim Colors As Integer '新規追加 ThisSheet_Name = ActiveSheet.Name '設定シート Select Case Workbooks.Count Case 1 MsgBox "チェックするファイルがありません。" Exit Sub Case 2 For n = 1 To 2 If Workbooks(n).Name <> ThisWorkbook.Name Then x = Workbooks(n).Name '開いている“もうひとつのブック”の名前 End If Next Case Else MsgBox "他に開いているファイルが複数のため対象を特定できません。" Exit Sub End Select I = 0 Do While (1) With ThisWorkbook.Sheets(ThisSheet_Name) If .Range("A3").Offset(I, 0).Value = "" Then MsgBox "検査項目は以上です。" ThisWorkbook.Activate Exit Do 'A列の3行目以下が、空白なら終わる End If Sheet_Name = .Range("A3").Offset(I, 0).Value Range_Name = .Range("B3").Offset(I, 0).Value myComment = .Range("C3").Offset(I, 0).Value End With Windows(x).Activate Sheets(Sheet_Name).Select Range(Range_Name).Select Colors = Selection.Interior.ColorIndex '新規追加 Selection.Interior.ColorIndex = 6 With Selection.AddComment .Visible = True .Text myComment End With Range(Range_Name).Select Ans = MsgBox("「次をチェックしますか?」", vbYesNo) Selection.Interior.ColorIndex = Colors '修正 Selection.ClearComments '新規追加 If Ans = vbYes Then I = I + 1 Else Exit Do End If Loop End Sub

  • VBAで差し込みシート作成はできないでしょうか?

    sb-yamatoと申します。よろしくお願いします。 ボランティア団体の登録者管理をしておりまして、エクセルVBAで人数分のシートを作成しながら差し込みができないかと悩んでいます。 イメージとしては、ワードの差し込み印刷をすると、人数分のページができると思います。それをエクセルシートでできないでしょうか? 自分なりに作ってはみたのですが、変数iの使い方が悪いのか、どうも上手くいきません。こんな感じです。 Sub シートの作成() Dim touroku As Long ←登録番号です。(8桁) Dim simei As String ←漢字氏名です。 Dim seinen As Date  ←生年月日です。 Dim i As Byte    ←150人までです。 i = 2        ←1行目はタイトル行です。 Worksheets("名簿").Activate Do While Cells(i, "B").Value <> "" touroku = Range(i, "B").Value simei = Range(i, "C").Value seinen = Range(i, "D").Value Worksheets("登録台帳(原本)").Copy After:=Worksheets(i) Range("AI2").Value = touroku Range("AJ2").Value = simei Range("AK2").Value = seinen ActiveSheets.Name = Range("AJ2").Value i = i + 1 Loop End Sub 名簿sheetのB列[変数i]行目をコピーしたsheetのセルAI2に貼り付けているつもりなのですが、反応してくれません。 皆様のお力添え、よろしくお願いいたします。

  • エクセルの名前定義で、配列は使用できないのでしょう

    こんにちは。 エクセルでの名前定義ですが、通常、下記のように、セル番地を使用すると思いますが、 配列を使用することは出来ないのでしょうか? ActiveWorkbook.Names.Add Name:="test", RefersToLocal:="=Sheet1!$A$1:$B$2" 下記のようなマクロを作り実行しましたが、うまくいきませんでした。 Dim ABC(0 to 1) ABC(0) = 1 ABC(1) = 2 ActiveWorkbook.Names.Add Name:="test", RefersToLocal:="=ABC" ご指導のほど宜しくお願いいたします。

  • VBAによるエクセルデータの貼り付けについて

    会社で使用しているエクセルにボタンがあり、そのボタンを押すと指定したフォルダー内のファイルのデータをコピーし、貼り付けるようVBAコードが設定されています。 指定したファイルのデータを下記のどの部分でセルを指定しているのかを教えてください。 Sub 読込() Dim WorkFileNAME, FolderNAME, DBYear, DBMonth, ItemNO(45) As String Dim WorkSheetNAME As String Dim i As Integer Dim BASECelladd1, BASECelladd2 As String BASECelladd1 = "C4" BASECelladd2 = "D3" WorkFileNAME = ActiveWorkbook.Name WorkSheetNAME = ActiveSheet.Name Worksheets(WorkSheetNAME).Select FolderNAME = Range("J1").Value & "\" & Range("T1").Value DBYear = Range("D1").Value DBMonth = Range("E1").Value i = 0 Do While i <= 45 ItemNO(i) = Range(BASECelladd1).Cells(i + 1, 1).Value i = i + 1 Loop Data11READ WorkFileNAME, WorkSheetNAME, FolderNAME, DBYear, DBMonth, ItemNO, BASECelladd1, BASECelladd2 End Sub

  • マクロ セル参照時の記述

    いつも回答ありがとうございます。 似たような質問をしていますが、下記の記述の(b3.value!"$B$1").の箇所でエラーがかかりました。 .SetSourceData Source:=Range(b3.value!"$B$1").CurrentRegion どのように変更したら上手く動作するのでしょうか?b3は変数です。御指導の程宜しくお願い致します。 Sub グラフの作成() Dim Date1 As Date 'グラフの始点の日付 Dim Date2 As Date 'グラフの終点の日付 Dim SName As String '商品名 Dim b1 As Variant 'グラフの始点のセル番号 Dim b2 As Variant 'グラフの終点のセル番号 Dim b3 As Variant '対象の商品名のセル番号 Dim d1 As Variant 'b1と違う列のセル番号 Dim d2 As Variant 'b2と違う列のセル番号 Dim d3 As Variant 'b3と違う列のセル番号 With Worksheets("集計用") s1: Date1 = Application.InputBox("最初の日付を2012/12/1のように入力してください。") If Date1 = 0 Then MsgBox "キャンセルされました。", vbOKOnly Exit Sub End If Set b1 = .Columns("B").Find(Date1, , xlValues, 1) If b1 Is Nothing Then If MsgBox("入力した日付が見当たりません。" & vbNewLine & _ "再度入力しますか?", vbYesNo) = vbYes Then GoTo s1 Else MsgBox "処理を中止しました", vbOKOnly Exit Sub End If End If d1 = b1.Row s2: Date2 = Application.InputBox("最初の日付を2012/12/31のように入力してください。") If Date1 = 0 Then MsgBox "キャンセルされました。", vbOKOnly Exit Sub End If Set b2 = .Columns("B").Find(Date2, , xlValues, 1) If b2 Is Nothing Then If MsgBox("入力した日付が見当たりません。" & vbNewLine & _ "再度入力しますか?", vbYesNo) = vbYes Then GoTo s2 Else MsgBox "処理を中止しました", vbOKOnly Exit Sub End If End If d2 = b2.Row s3: SName = Application.InputBox("商品名を入力して下さい。") If SName = "False" Then MsgBox "キャンセルされました。", vbOKOnly Exit Sub End If Set b3 = .Rows("3").Find(SName, , xlValues, 1) If b3 Is Nothing Then If MsgBox("入力した商品名が見当たりません。" & vbNewLine & _ "再度入力しますか?", vbYesNo) = vbYes Then GoTo s3 Else MsgBox "処理を中止しました", vbOKOnly Exit Sub End If End If d3 = b3.Column Worksheets.Add After:=Worksheets("集計用") ActiveSheet.Name = b3.Value .Activate .Range(b1, b2).Copy _ Destination:=Worksheets(b3.Value).Range("B2") .Activate .Range(Cells(d1, d3), Cells(d2, d3)).Copy _ Destination:=Worksheets(b3.Value).Range("C2") With Worksheets(b3.Value).Range("D2:D" & Range("C65536").End(xlUp).Row) .Formula = "=SUM(C2,D1)" .Value = .Value End With End With Charts.Add With ActiveChart .ChartType = xlColumnClustered .SetSourceData Source:=Range(b3.value!$B$1").CurrentRegion With .Axes(xlValue) .MaximumScale = 10 .MajorUnit = 1 End With .Location Where:=xlLocationAsObject, Name:=b3.Value End With End Sub

  • 色付セルの数

    こんにちは、詳しい方よろしくお願いします。 添付画像の表内赤色セルの数の合計を表したいのですが、0になってしまいます。 VBA Function CountColorA(Rng As Range) As Long Dim myRng As Range Dim Col_cnt As Long Application.Volatile Col_cnt = 0 For Each myRng In Rng If myRng.Interior.ColorIndex > 0 Then Col_cnt = Col_cnt + 1 End If Next myRng CountColorA = Col_cnt End Function 数を表示させたいセルに =CountColorA(D3:D29)としています。 どこが間違っているかわかる方、よろしくお願いします。 勉強不足ですみません。

専門家に質問してみよう