- ベストアンサー
シート名の取得について
お世話になります。 以下の様な記述で、追加したシート名を 取得したいのですが、 元々「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
- みんなの回答 (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 と書かなければなりません。
その他の回答 (1)
- higekuman
- ベストアンサー率19% (195/979)
CodeName と Name は違うものですが、それはご存知でしょうか?
お礼
ありがとうございました。
お礼
ご丁寧にありがとうございました。