[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBAでのシートの名前変更』(VBABAA)
sheet1を情報の入力シートとして
sheet2を様式を整えたものを作成しています。
マクロを使ったら、sheet2をコピー、作成されたsheet2(2)にsheet1の情報をに入れて、sheet2(2)のシート名をsheet1のA1セルに書かれた文字列に変更をしたいです。
が、どうにもシート名を変更するところでエラーが出てしまいますが理由が分かりません。
どこに問題があるのでしょうか。
コード
worksheets("sheet2").copy before:=worksheets("sheet2")
activesheet.name=worksheets("sheet1").range("A1")
(sheet1からsheet2(2)へ情報を移すコードは省略しています。)
< 使用 Excel:Excel2010、使用 OS:Windows10 >
A1セルの文字列はシート名として有効なものだろうか? (ねむねむ) 2019/08/02(金) 12:00
>どうにもシート名を変更するところでエラーが出てしまいます
どのようなエラーでしょうか?
エラー番号(と出来ればメッセージも)提示いただくとアドバイスできることがあるかもしれません。
また、個人的にはActive○○の操作が好きではないので別案。
(ラベルを使ったのでややこしくなっちゃいましたが、興味があればステップ実行して研究してみてください。)
Sub さんぷる()
Worksheets("sheet2").Copy before:=Worksheets("sheet2")
With Worksheets("sheet2").Previous On Error GoTo エラートラップ .Name = Worksheets("sheet1").Range("A1").Value On Error GoTo 0 'なんやかんやの処理
Exit Sub
エラートラップ: Select Case Err.Number Case 9 MsgBox "【sheet1】シートが見つかりません" & vbCrLf & "【" & .Name & "】のシート名を変更出来ませんでした"
Case 1004 MsgBox _ "シート名を【" & Worksheets("sheet1").Range("A1").Value & "】に変更できません" & vbCrLf & _ " ・既に別のシート名に使われていないこと" & vbCrLf & _ " ・ブランクでないこと" & vbCrLf & _ " ・シート名として使用できない文字が含まれていないこと" & vbCrLf & _ " ・31文字を超えていないこと" & vbCrLf & _ "を確認して、手動で修正してください。"
Case Else MsgBox "原因不明のエラーが発生しました" & vbCrLf & .Name & "のシート名を変更出来ませんでした" End Select
Err.Clear Resume Next
End With
End Sub
(もこな2) 2019/08/02(金) 12:43
もこな2さんの書いてくださったコードを見ていて原因が分かりました。
試しに打っていた文字列が、すでに別のシートに使われていたのです・・・。
うっかりしていました。
また、勉強になりました。お二方、ありがとうございました。
(VBABAA) 2019/08/02(金) 13:52
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.