• 締切済み

Excel-VBAで新しいシート挿入直後にシートの名前を変更する。

お世話になります。 Excel-VBAで、Sheets.Addメソッドで、sheetを挿入すると、都度sheet1とかsheet2とか、何回目のシート挿入を実行したのかによって勝手にsheet番号を振ってワークシートが出来ると思いますが、挿入直後にシートの名前を変更するのはどういうコードを書けば良いのでしょうか?

みんなの回答

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

追加直後には、新規シートがアクティブになります。 シートを移動(別のシートをアクティブ)する前に、シート名を設定してください。

回答No.1

ActiveSheet.Name = "シート名" でどうでしょう。

souta_n
質問者

お礼

回答ありがとうございます。 この質問を上げた後に、コードをがちゃがちゃ変更して、試してたのですが、「そうだシートインデックスで指定すりゃいいんだ」ということに気がつき、それでやってうまくいきました。 お騒がせしました。

関連するQ&A

  • Excel2002のVBAでワークシートの挿入で疑問

    VBAの勉強をし始めたばかりものものです。 ワークシートの数が10枚になるまでワークシートの挿入を繰り返すように、以下のVBAを作成しました。 Sub wsins() Dim i As Integer For i = Worksheets.Count To 10 Step 1 Sheets.Add Next End Sub しかし、上記の方法だと、ワークシートが11枚になってしまいます。 もちろん10のところを9にすることによって、ワークシートがトータルで10枚にはなるのですが、理由がわかりません。 勉強したばかりで、思い違いをしているのかと思いますが、教えていただけないでしょうか?よろしくお願いいたします。

  • 常に一番右(末尾)にシートを挿入したい

    エクセルvbaですが 現在のシート数が3シートの場合、 Sub Macro() Sheets("基本").Copy After:=Sheets(3) End Sub で基本シートをコピーして、一番左に生成することはできますが この時点でシート数は4枚になり、また同じコードを実行すると、 右から2番目、左から3番目、にシートが挿入されます。 Sheets(3)をすることによって左から3番目になってしまうと思うのですが 常に一番右にシートを挿入する方法を教えてください。 よろしくお願いします。

  • 【Excel VBA】ワークシートの表示

    Excel 2013で以下のコードを実行し、 非表示にしているワークシートの表示を試みましたが、 上手く機能しませんでした。 コード自体にエラーはなく、該当シートのVisibleプロパティを確認すると xlSheetVisibleに変わっているのですが、実際のシートは非表示のままでした。 どう対処すればワークシートを表示することが可能でしょうか? ==================== If actsht = tmp(i) Then If Sheets(元データ).Visible = False Then Sheets(元データ).Visible = True End If End If ====================

  • Excel vba テーブルに列を挿入できない

    Excel vba で、次のコードでテーブルに列を挿入しています。 これはExcel2013で作った一連のvbaコードの一部です。 Range("テーブル名" & "[[#Headers],[地区]]").Select Selection.EntireColumn.Insert 「地区」フィールドの前に列を挿入するものです。 Excel2010、2013では問題なくできますが、Excel2016のPCでは   Selection.EntireColumn.Insertでエラーになります。エラーメッセージは、 「この操作を実行するとワークシート上のテーブル内でセルが移動されてしまうため、この操作は実行されません。」というもので、列を挿入するのだから、当然セルは移動されますが、それがダメだと。 エラーになった同じテーブルで手動での列挿入はできます。また、そのマクロ記録を取れば、上のコードと同じ記録ができます。 OSはWindows10です。 このvbaはExcel2016では通らないのでしょうか。エラーを解決する方法を教えてください。

  • エクセルでグラフ追加について教えてください。

    すみませんが、教えてください。 VBAで、エクセルワークブックのシートの最後にグラフを追加しようとしています。 Charts.Add after:=Sheets(Sheets.Count) このコードだとグラフが、最終シートの後ろではなく、前に追加されてしまいます。 どうすれば、シートの後ろに挿入することができるのでしょうか?

  • EXCEL2003 VBAを表示ロック

    Sheets("DATA")にあるデータを、Sheets("Branch").Range("B2:B20")にあるコード(数字)で順に抽出します。 それをSheets("Form")を複製したシートに貼ります。 複製シートに名前をつけ、保存します。 ここまでは問題なく、以下のVBAでできました。(だいぶ省略しましたが) Sub Make_BrCopy() Dim myCl As Range With Sheets("DATA") For Each myCl In Sheets("Branch").Range("B2:B10") Sheets("Form").Copy Before:=Sheets(1) Sheets(1).Name = myCl.Value .Range("A1:G1").AutoFilter Field:=2, Criteria1:=myCl.Value .UsedRange.SpecialCells(xlCellTypeVisible).Copy Sheets(CStr(myCl.Value)).Range("A1") Sheets(CStr(myCl.Value)).Copy ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & CStr(myCl.Value) & ".xls" ActiveWindow.Close Application.DisplayAlerts = False Sheets(CStr(myCl.Value)).Delete Application.DisplayAlerts = True .ShowAllData Next myCl End With End Sub ところが、少し困ったことがあります。 Sheets("Form")には、ワークシートモジュール、Private Sub Worksheet_Change(ByVal Target As Range) があるのです。 これを複製したワークシートにそのまま必要なのでそうしてあるのですが、できることなるら、VBAを表示ロックさせたいのです。 元のファイルではVBAProjectのロックでそうしているのですが、ワークシートをコピーして作成したあらたなBOOKはVBAを表示にロックにはなっていません。 丸見えです。 どうすればよいでしょうか? Excel2003です。 また、上記のVBAコードになにかご指摘のことなどありましたらそれもあわせて教えてください。

  • VBAで別のシートに図形描画

    お世話になっております。 現在VBAにおいて以下のものを作っております。 Sheet3で設定を行い、コマンドボタンを押下すると Sheet2に描画を行う ところが Range(Sheets("Sheet2").Cells(HightCnt, WidthCnt), Sheets("Sheet2").Cells(HightCnt, WidthCnt)).Select のところで 「実行時エラー'1004' Rangeメソッドは失敗しました」 となります。 (どうも同じシートSheet3に描画する分には問題ないようなのですが) コマンドボタン押下時に別シートにデータ出力等行うことはできないのでしょうか? もしできるのであれば方法をおしえていただけませんでしょうか? よろしくお願いします。

  • シートの名前の変更について(VBA)

    いつもお世話になっております。 VBAでシートの名前の変更を行おうと考えています。エクセルのシートで手動でシートの名前変更を入力すると使用できない文字は、入力が出来ないようになっています。VBAでテキストボックスへの入力を同じように規制する場合、Change()を使って1文字づつチェックするルーチェンを組むしかないのでしょうか? 取って置きの手法がありそうな気がしますが、思いつきません。どなたか?助けて頂けないでしょうか?よろしくお願いいたします。

  • ExcelのVBAでシートのコピー

    Excel2000 Win2000 複数(最低5)のシートが存在するExcelのBookでExcelのVBAを使用して strSheetName="XXX1" intSheetNo = 1 Sheets(strSheetName).Copy after:=Sheets(intSheetNo) とシートのコピーをしています。 この時コピーされたシートのインデックスが2にならないんですが、何故なんでしょ? やりたい事はコピーしたシートの名前をExcelが勝手につけた名前から変更したいんです。 コピーされたシートのインデックスが2になると思っていたので上手く行きません。 Sheets(intSheetNo + 1).Name = "XXX1-1"

  • エクセルVBAで選択していないシートのセルコピー

    エクセルVBAで質問させてください。 現在選択していないシートから、セルの書式ごとコピーして貼り付けたいのです。 たとえば Sheets(1).Range(Cells(1, 1), Cells(4, 1)).Copy Sheets(2).Range("A1") 等とすると、Sheets(2)が選択されている状態だとエラーになってしまいます。 おそらく、Copyメソッドというのは、選択されているシートにのみ有効だからなのではないか、と思いますが、セルの値だけでなくフォントその他の書式を、別のシート(現在アクティブでない)から持ってくる方法はありますか?