• ベストアンサー

シート名の取得について

お世話になります。 以下の様な記述で、追加したシート名を 取得したいのですが、 元々「sheet1」しかない所に追加しており、 追加されたシートは「sheet2」で、 アクティブにもなっているのですが、 コードネームを取得すると、何度やっても 「sheet1」になってしまいます。 どこがおかしいのか分からなく、 ご教示お願い致します。 Sub MACRO() Dim newsheet As Worksheet Dim mysheet As String Dim myrngf As Range Workbooks.Open Filename:="C:\使用量.xls" Set newsheet = Worksheets.Add mysheet = ActiveSheet.CodeName Set myrngf = Workbooks("使用量.xls").Sheets(mysheet).Range("a:a") ~処理内容~ Range("a:b").Columns.AutoFit End Sub

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

  • ベストアンサー
  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.2

mysheet = ActiveSheet.CodeName の下に MsgBox mysheet MsgBox ActiveSheet.CodeName MsgBox ActiveSheet.Name の3行を入れてみましょう。 使用量.xlsに元からあるSheet1が以下 Nameプロパティ="Sheet1"(元々Sheet3として作り、名前をSheet1に変更) CodeNameプロパティ="Sheet3" のようになっている場合に、Addでシートを足すと、足されたシートは Nameプロパティ="Sheet2" CodeNameプロパティ="Sheet1" となります。 すると、足されたシート名のつもりでCodeNameを参照すると"Sheet1"が返される為 mysheet = ActiveSheet.CodeName の行で、mysheetの内容は"Sheet1"になります。 当然ながら Set myrngf = Workbooks("使用量.xls").Sheets(mysheet).Range("a:a") は Set myrngf = Workbooks("使用量.xls").Sheets("Sheet1").Range("a:a") と同じ意味になります。 つまり mysheet = ActiveSheet.CodeName ではなく mysheet = ActiveSheet.Name と書かなければなりません。

miruchoko
質問者

お礼

ご丁寧にありがとうございました。

その他の回答 (1)

  • higekuman
  • ベストアンサー率19% (195/979)
回答No.1

CodeName と Name は違うものですが、それはご存知でしょうか?

miruchoko
質問者

お礼

ありがとうございました。

関連するQ&A