ここから本文です

エクセルのシート名をセルから取得して変更するには? -----------------------...

このエントリーをはてなブックマークに追加

質問者

guchima0113さん

2013/11/2811:26:58

エクセルのシート名をセルから取得して変更するには?

----------------------------------

Sheet1のA1:A10にある文字列を取得し、
Sheet2~Sheet11の名前を取得した文字列に変更するに


どのようにしたら良いのでしょうか?

例えば
Sheet1 A1 が「山田」ならSheet2のシート名が「山田」
Sheet1 A2 が「伊藤」ならSheet3のシート名が「伊藤」




また、Sheet1のA1:A10のいずれかの値が変更された時にそれぞれの
シート名を変更するようにしたいと思っています。

よろしくお願いします。

閲覧数:
3,445
回答数:
2
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

編集あり2013/11/2818:13:35

こんにちは。

過去に似た質問がありましたので、その時の回答を参考まで。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1111618245...

ちなみに、mskz1954さんのコード例ですと、シートの順序を変えると、A1:A10セルとの対応も変わってしまうので、運用上の注意が必要です。(特にSheet1の位置を変えてしまうと、意図しない不具合が発生するおそれがあります。)
Sheet1セルと各シートを一意的に結び付け、Sheet1自身が変更対象とならないようにするには、各シートにダミーセルを設けてSheet1セルを参照し、ダミーセルの値に対してシート名を変更する(過去回答の応用)方法か、シートをVBAProject上のオブジェクト名で直接指定する方法か、どちらかかと思います。

この質問は投票によってベストアンサーに選ばれました!

ちょい足しを取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル
  • このエントリーをはてなブックマークに追加
簡単にみんなで作るショート動画アプリ Yahoo!Chocotle for Android(無料)
ベストアンサー以外の回答
1〜1件/1件中

mskz1954さん

2013/11/2815:11:09

一例です。
因みにSheet1のA1:A10変更を考慮していますので、サンプルコード貼り付け後にA1:A10にデータを入力してください。

Sheet1のシートタブ上で右クリック→コードの表示→サンプルコード貼り付け

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("a1:a10")) Is Nothing Then End
If Target.Count > 1 Then End
If Target <> "" Then
On Error Resume Next
Sheets(Target.Row + 1).Name = Target
If Err.Number <> 0 Then
MsgBox "不正な文字、重複シート名、又は対象シートが存在していません"
End If
End If
End Sub

ちょい足しを取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

ID/ニックネームを選択し、「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問や知恵ノートは選択されたID/ニックネームのMy知恵袋で確認できます。

ほかのID/ニックネームで利用登録する