プロが教えるわが家の防犯対策術!

今エクセル2013で、B5セルに「8」を入力して、C5セルには「月実績」と入力してあります。
B5セルはシートをコピーして月ごとに変更していきます。C5セルのほうも例えば「月生産数」等に変更して使用します。(つまり、B5もC5も両方内容を変更していきます。)

このB5とC5のセルの内容をシート名に自動で変更したいのですが、どうすればよいでしょうか?
たとえば上記の例だと、シート名が「8月生産数」になってくれればよい。

今とりあえずWorksheetに下記コードを記述していますが、これだとシート名が「8$C$5」となってしまい、C5を文字で認識してしまい、セルの内容がシート名になりませんでした。
どうすればよいでしょうか?
また、記述場所は使っているシートのWorksheetにかきこめばよいでしょうか?(シート名を右クリックしてコードの表示ででてくる所に記述しています)
VBAの事、あまり分からないままやっていますが、お願いいたします。

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
On Error GoTo ERR:
If Target.Cells(1, 1).Address = "$B$5" Then
Me.Name = Target.Cells(1, 1) & "$C$5"
End If
Target.Cells(1, 1).Select
Exit Sub
ERR:
MsgBox "その名前には変更出来ません。", vbCritical + vbOKOnly, "ERROR"
Resume Next
End Sub

A 回答 (2件)

間違えないよう行います:


ALT+F11でVBE画面を開く
プロジェクトエクスプローラで当該ブックのVBAProjectの中に含まれているThisWorkbookをWクリックする
現れたシートに下記をコピー貼り付ける

private sub Workbook_SheetChange(byval Sh as object, byval Target as excel.range)
’if application.intersect(taget, sh.range("B5:C5")) is nothing then exit sub
 on error goto errhandle
 sh.name = sh.range("B5") & sh.range("C5")
 exit sub

errhandle:
 MsgBox "その名前には変更出来ません。", vbCritical + vbOKOnly, "ERROR"
end sub


これまでに試した「シート名タブを右クリックしてコードの表示」のマクロは綺麗に全部消去する。
    • good
    • 1
この回答へのお礼

見事にできました。どうもありがとうございました。

お礼日時:2014/08/22 23:59

> B5セルはシートをコピーして月ごとに変更していきます。



ということなので、コードもそのままコピーしたシートに移行されますね。

勘違いされているのは以下の部分です。

Me.Name = Target.Cells(1, 1) & "$C$5"

これだと$C$5という文字列を追加していますので、セルC5の内容を追加したい場合には

Me.Name = Target.Cells(1, 1) & Range("$C$5").Value

に変更してください。

Me.Name = Target.Value & Range("$C$5").Value
でもいけます。
    • good
    • 0
この回答へのお礼

試したらどちらでも出来ました。
どうもありがとうございました。

すいません、こちらも問題なかったのですが、ベストアンサーは最初に回答をいただきまるまるコピーして使えるNO1の方にしようと思います。

でもありがとうございました。

お礼日時:2014/08/23 00:11

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

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


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