
今エクセル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
No.1ベストアンサー
- 回答日時:
間違えないよう行います:
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
これまでに試した「シート名タブを右クリックしてコードの表示」のマクロは綺麗に全部消去する。
No.2
- 回答日時:
> 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
でもいけます。
試したらどちらでも出来ました。
どうもありがとうございました。
すいません、こちらも問題なかったのですが、ベストアンサーは最初に回答をいただきまるまるコピーして使えるNO1の方にしようと思います。
でもありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Changeイベントで複数セルへの貼り付けおよび値削除時に1個目のセルのみエラーになる 3 2022/12/21 09:07
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/06/10 11:06
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/05/26 17:19
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/02/02 09:25
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 3 2022/06/10 09:24
- Visual Basic(VBA) 【VBA】Excelで罫線を引きたい 3 2022/07/14 12:04
このQ&Aを見た人はこんなQ&Aも見ています
-
ExcelVBA シート名を複数セルから取得して変更
Visual Basic(VBA)
-
エクセル:シート名を手入力でなく、セル「A1」の文字を出したい。
Excel(エクセル)
-
VBAでセルに入っている日付をシート名にする
Excel(エクセル)
-
-
4
全シートを選択し、それぞれ特定のセルの値をシート名とするマクロを教えて
Excel(エクセル)
-
5
VBA セルの値と同じ名前のシートにデータを貼り付けするやり方を教えてください
Excel(エクセル)
-
6
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
7
VBAでシートコピー後、シート名が重複している時の処理
Access(アクセス)
-
8
別のシートから値を取得するとき
Visual Basic(VBA)
-
9
エクセルのシート名変更で重複した時のvbaの処理
Visual Basic(VBA)
-
10
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
11
特定のシート名のシートのみ除外して、それ以外のシート名のシートをすべて集約する方法(VBA)
Excel(エクセル)
-
12
ExcelでVBAを使用した際に、『パス名が無効です』とエラーになります。
Excel(エクセル)
-
13
エクセルVBA Ifでシート名が合致したら別ファイルから転記する場合のElse IfとForの書き方
Visual Basic(VBA)
-
14
特定のセルに数値が入っているシートのみ印刷する方法
Excel(エクセル)
-
15
特定の文字を含むシートだけマクロ処理をしたい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで条件に一致したセル...
-
Excelの「0」だけ非表示、小数...
-
Excelで複数シートの選択セルを...
-
エクセルで1月0日と表示される!!
-
ExcelでTODAY関数を更新させな...
-
日付が未入力の際はゼロか、空...
-
エクセルで、加筆修正したセル...
-
Excelシートの保護時にデータの...
-
エクセルについて
-
EXCELのハイパーリンクのセルを...
-
ハイパーリンク で『指定された...
-
複数シートの同じセル内容を1シ...
-
シート参照で変数を使いたい(EX...
-
Excelのファイル容量が減らない...
-
エクセルで複写のように自動入...
-
別シートのセルを絶対参照にする
-
エクセルで20万行あるシート...
-
エクセルで特定の文字を打つと...
-
(Excel)あるセルに文字を入力...
-
エクセルの文字
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
iPhoneのExcelアプリで、別のシ...
-
Excelの「0」だけ非表示、小数...
-
Excelで複数シートの選択セルを...
-
Excelシートの保護時にデータの...
-
エクセルで条件に一致したセル...
-
エクセルで1月0日と表示される!!
-
日付が未入力の際はゼロか、空...
-
ExcelでTODAY関数を更新させな...
-
EXCELのハイパーリンクのセルを...
-
別シートのセルを絶対参照にする
-
Excelでスクロールすると文字が...
-
複数シートの同じセル内容を1シ...
-
マクロ 新しいシートにデータ...
-
エクセルで複写のように自動入...
-
エクセルで、加筆修正したセル...
-
エクセル ハイパーリンクで画像...
-
ハイパーリンク で『指定された...
-
エクセルで20万行あるシート...
-
エクセルで特定のセルの値を別...
-
INDIRECT(空白や()がある文字列...
おすすめ情報