アプリ版:「スタンプのみでお礼する」機能のリリースについて

VBA超ビギナーです。
シート名をセルから取得して変更するVBAをご教授願えませんでしょうか...。

①シート名「シート名変更」「日付変更」以外の全てのシートのシート名を変更
②値はシート「シート名変更」のA2〜A16から取得

質問者からの補足コメント

  • あらかじめシートを30個用意しているので、全シートのうち末尾から先頭にかけて、シート「シート名変更」のE2〜E31の値を取得して変更したいです。

    No.1の回答に寄せられた補足コメントです。 補足日時:2024/03/15 17:10
  • 自分でも調べて何度も試しましたがわからないのでここで尋ねています。ここで調べてください、勉強してくださいみたいな回答は求めていません。

      補足日時:2024/03/15 18:53
  • 新たに
    If Worksheets(i).Name <> "シート名変更" And Worksheets(i).Name <> "日付変更" And Worksheets(i).Name <> "発注書工場用原本" And Worksheets(i).Name <> "箱注文原本" Then


    を追記して実行したのですが

    Worksheets(i).Name = ws.Cells(wrow, "E").Value

    のところで

    実行時エラー1004:
    入力されたシートまたはグラフの名前が正しくありません。次の点を確認して修正してください。入力文字が31 文字以内であること 次の使用できない文字が含まれていないこと:コロン、円記号、スラッシユ、疑問符、アスタリスク、左角かっこ、右角かっこ名前が空白でないこと(文字数の関係上別途続きます)

    No.5の回答に寄せられた補足コメントです。 補足日時:2024/03/16 09:16
  • というエラーが生じました。
    シート名に「.」が入っているのが原因だったりするでしょうか?初歩的なところもわかっておらず、すみません...。

      補足日時:2024/03/16 09:16

A 回答 (6件)

以下のマクロを標準モジュールへ登録してください。



Option Explicit
Public Sub 全シート名変更()
Dim i As Long
Dim wrow As Long: wrow = 2
Dim ws As Worksheet
Set ws = Worksheets("シート名変更")
For i = Worksheets.Count To 1 Step -1
If Worksheets(i).Name <> "シート名変更" And Worksheets(i).Name <> "日付変更" Then
Worksheets(i).Name = ws.Cells(wrow, "E").Value
wrow = wrow + 1
End If
Next
End Sub
この回答への補足あり
    • good
    • 0

>というエラーが生じました。


>シート名に「.」が入っているのが原因だったりするでしょうか?初歩的な>ところもわかっておらず、すみません...。

シート名に「.」は使用可能です。

Worksheets(i).Name = ws.Cells(wrow, "E").Value
の行で止まったとき、wrowにマウスを当ててください。
そうすると、wrowの値が表示されます。(wrowは行番号)
例えばその値が20とするとセルE20の内容がおかしいということになります。そのセルに不当な文字がないか確認してください。
そのセルの内容が○○とすると、直接、その○○をシート名に打ち込んで使用できるか確認してください。
それでも、判らないときは、そのセルの内容を提示してください。
    • good
    • 0
この回答へのお礼

E列の内容を文字列に変換したら解決しました!ありがとうございます!

お礼日時:2024/03/16 12:29

私も独学ではじめは苦労しました


やりたい事は書いてありますがやった事は書いてありません
実際にコピペでも何でも良いので実行して試したコードを書いてはいかがでしょう?
躓いているポイントはどこでしょうか?
調べた先の解説はおそらくここの回答者より優れていると思います
VBAの初心者で覚える気持ちが有るのならポイントを絞ってご質問される方が良い回答がされると思います
始めが肝心なので敢えてこのような書き方をしました ご理解ください
    • good
    • 0

>VBA超ビギナーです



具体的な処理コードの作成は自身で行う事で理解が得られます
参考サイトの一例
全てのシート名を処理する
https://www.tipsfound.com/vba/10008-vba
条件分岐の書き方
https://excel-ubara.com/excelvba1/EXCELVBA320.html
セルの値を取得する
https://www.tipsfound.com/vba/07001-vba
繰り返し処理の書き方
https://valmore.work/excel-vba-for/
    • good
    • 0
この回答へのお礼

自分でも調べながらやった上でわからないからこちらで聞いています。

お礼日時:2024/03/15 17:15

Worksheets(1).Name = Worksheets("シート名変更").Range("A2").Value


と書けば1番目のシートの名前がA2セルの文字列になります。
    • good
    • 0

たとえば、どのシートをA2セルの値に変更したいのでしょうか。


現状のシート名とA2、A3・・・・セルの名称の対応関係はどうなっているのでしょう。
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A