ここから本文です

解決済みのQ&A

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

guchima0113さん

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

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

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


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

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




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

よろしくお願いします。

  • 質問日時:
    2013/11/28 11:26:58
  • 解決日時:
    2013/12/13 09:55:18
  • 閲覧数:
    2,253
    回答数:
    2
  • お礼:
    知恵コイン
    100枚

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

tanahashi_0530さん

こんにちは。

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

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

  • 違反報告
  • 編集日時:2013/11/28 18:13:35
  • 回答日時:2013/11/28 11:49:35

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

ベストアンサー以外の回答

(1件中1〜1件)

 

mskz1954さん

一例です。
因みに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をキーワードで検索:

総合Q&Aランキング

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

知恵コレに追加する

閉じる

知恵コレクションをするID/ニックネームを選択し、「追加する」ボタンを押してください。
※知恵コレクションに追加された質問や知恵ノートは選択されたID/ニックネームのMy知恵袋で確認できます。

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