• ベストアンサー

シートが変わるとマクロが働かない

記録式マクロでセルに名前を付けるものを作りました。 しかし、その時のシート名が記録されたため、他のシートで使えません。 Sub Macro1() ActiveWorkbook.Names.Add Name:="参照A", RefersToR1C1:="='2-28'!R1C8" End Sub シート名が「2-28」でないと、「3-01」などだと使えません。。 そのとき開いているシートどれにでも通用させるにはどう書き換えるんでしょうか?

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

  • ベストアンサー
  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

"='2-28'!R1C8" の 2-28 をシート名に書き換えるか、削除すると動くと思いますよ。 もし、同名の範囲名のまま実行した場合は、最後に実行したシートに名前が設定されます。

hiro-ss
質問者

お礼

シート名を削除したら、他のシートでも動くようになりました。 有り難うございます。

関連するQ&A

  • VBAで名前定義を変更するとき

    おはようございます。 ExcelVBAで教えてください。 名前の定義はマクロの自動記録で解りました。 ActiveWorkbook.Names.Add Name:="名前A", RefersToR1C1:="=参照範囲" のようになりました。 VBAで参照範囲を変更したいとき、どのようにするのでしょうか? 再度、ActiveWorkbook.Names.Add Name:="名前A", RefersToR1C1:="=参照範囲" としてもエラーにはならなかったのですが、すでに"名前A"があるのに Names.Addとするのはおかしいかと思いました。 それで、どのようにするのかお教えください。

  • 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 これを実行しますと、「参照範囲」にダブルクォーテーション""が余計に入ってしまい、正しく参照できません。 このダブルクォーテーションをつけない方法はありますか?よろしくお願いします。

  • エクセルのマクロ記録を他のシートでも実行したい

    エクセル2010を使用しています。 シート1でマクロ記録を使用しデータの並び替えをし、 同じブック内にシート1をコピーしてシート2としました。 このシート2でもシート1で行ったデータの並び替えをしたいのですが シート2ではマクロは実行されませんでした。 わからないながらもVBAを見たところ下記のように 記述されおりましたが、どのような修正をすればよいかご教授いただけると助かります。 ちなみに、シート1でマクロを記録し、そのシートを同ブック内に複数コピーして それぞれのシートでマクロを実行させるということを考えています。 Sub Macro1() ' ' Macro1 Macro ' ' Range("A11:Q17").Select ActiveWorkbook.Worksheets("1").Sort.SortFields.Clear ActiveWorkbook.Worksheets("1").Sort.SortFields.Add Key:=Range("B11:B17"), _ SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:="日,月,火,水,木,金,土" _ , DataOption:=xlSortNormal ActiveWorkbook.Worksheets("1").Sort.SortFields.Add Key:=Range("A11:A17"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("1").Sort .SetRange Range("A11:Q17") .Header = xlGuess .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End Sub

  • 範囲に名前を付けたいのですが vba

    vbaでA1から2列目の最終行までの範囲に名前を付けたいのですが ActiveWorkbook.Names.Add Name:="範囲の名前", RefersToR1C1:="=Sheet1!R1C1:INDEX(Sheet1!C2,COUNTA(Sheet1!C1))" これで出来るのですが、 R1C1方式じゃない書き方にしたいのですが ActiveWorkbook.Names.Add Name:="範囲の名前", RefersToRange:="=Sheet1!$A$1:INDEX(Sheet1!$B:$B,COUNTA(Sheet1!$A:$A))" だと、「名前付き引数が見つかりません」になります。 RefersToRangeの部分が違うのと思うのですが、どうすればいいでしょう???

  • エクセル VBAで範囲に名前を定義する

    Sub 範囲import設定() Sheets("Format").Select Range("A1").Select Selection.CurrentRegion.Select ActiveWorkbook.Names.Add Name:="import", RefersToR1C1:="=Format!R1C1:R26C7" End Sub 「マクロの記録」でCTRL + * で全データ範囲を選択して"import"という名前を定義したところ 上のようなコードになりました。全データ範囲は毎回違うのですが、ごらんのようにセル番号 で指定されてしまいます。そのつど異なる全データ範囲に名前を定義するにはどうすればいいのでしょうか。 よろしくお願いします。

  • Excelマクロ教えてください。

    いつも大変お世話になっております。 あるシートにあるフォントのすべてをMSゴシックにしたいのですが、 マクロ記録→全選択してフォント変更→記録解除 で下記のマクロができました。 Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2007/11/21 ユーザー名 : TEST ' ' Cells.Select With Selection.font .Name = "MS ゴシック" .Size = 11 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic End With End Sub 全選択せずに、あるシートすべてのフォントを変更する方法はありますか? シートのフォントを変更するだけの目的です。 よろしくお願いします。

  • エクセル マクロ シートの追加 メモリー

    エクセル2003のマクロでシートのコピーを行っておりますが、シート数35枚程度からたびたびマクロ異常が出ます。(表示内容:実行エラー 1004worksheetクラスcopyソメッドが失敗しました ) メモリーが足りないのでしょうか、 現在の回避方法:異常が出たらエクセルを再読み込みする。作業終了まで4回程度再読み込みで、終了時ファイルの大きさは約4000kbytです。 詳しいご指導をいただければ幸いです Sub シート追加() ' Macro2 Macro ' マクロ記録日 : 2011/2/3 ユーザー名 : son ' Keyboard Shortcut: Ctrl+q ActiveCell.FormulaR1C1 = Date Range("D8").Select 'シートのコピー Sheets("sheet1(0)").Copy After:=Sheets(3) '上書保存 ActiveWorkbook.Save End Sub

  • マクロのシートでのコピーができません。

    ビスタ エクセル 2007を使用しています。B2~E12まで簡単な表を作り E列で昇り順に並べ替えしました。そして並べ替えからこの表を印刷するまでマクロで完成しました。 ところが、別のシートにコピーすると印刷はされますが、並べ替えがされずに印刷だけされます。同じ表を30枚作成し、それぞれ同じ操作と印刷のマクロを組みたいのですが・・・・どなたか助けてください。 Sub ボタン5_Click() ' ' ボタン5_Click Macro ' ' Columns("E:E").Select ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("E1"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Sheet1").Sort .SetRange Range("B2:E12") .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With ActiveWindow.SelectedSheets.PrintOut Copies:=1 End Sub

  • マクロ 並び替え エラーがでる

    マクロの記録で以下のようなマクロを作りましたが、実行するとエラー91「オブジェクト変数またはブロック変数が設定されていません」とでます。どう直したらよいでしょうか? Sub Macro6() Columns("A:L").Select Selection.AutoFilter ActiveWorkbook.Worksheets("Sheet1").AutoFilter.Sort.SortFields.Clear ActiveWorkbook.Worksheets("Sheet1").AutoFilter.Sort.SortFields.Add Key:=Range _ ("A1:A497"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _ xlSortNormal With ActiveWorkbook.Worksheets("Sheet1").AutoFilter.Sort .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Range("B2").Select End Sub

  • EXCELでマクロが

    昨日から、期待する動きでなくなりました。 シートに新たに数式を加え、rank関数ではきちんと表示するのですが、マクロを動かすと、 期待した動きでなくなりました。 Sub Sheet2STD昇順並べ替え() ' ' Sheet2STD昇順並べ替え Macro ' ' Range("B6:V24").Select ActiveWorkbook.Worksheets("Sheet2").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Sheet2").Sort.SortFields.Add Key:=Range("C7:C24") _ , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Sheet2").Sort .SetRange Range("B6:V24") .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Range("A1").Select End Sub 図にある下向きの矢印にマクロを登録しています。

専門家に質問してみよう