No.3ベストアンサー
- 回答日時:
こんばんは。
>参照元のデータが更新されると同時にシート名も変わるといいのですが・・・。
もちろん、こういう方法もできますが、イベントというのは、常に、マクロを待機状態にしているわけですから、負担が大きくなります。おまけに、こういう大元のオブジェクトのプロパティを頻繁に、シート名を換えるような内容は、ブックを壊す原因にもなりますから、できる限り気をつけて扱ってください。
本来は、自分が明示的に行う、一般プロシージャのほうがよいです。
自動的に行うのは、リスクが高いです。
ThisWorkbook に貼り付けてください。
Application.Undo '設定を戻す は、不要だったら抜いてください。
単独にこのプロシージャだけでよいです。
以下のマクロの日付値は、ワークシートに Text 関数はお使いにはならないでください。シリアル値を入れ、書式で設定してください。
二つのマクロは、絶対に同時に使わないでください。片方だけにしてください。無限ループになる可能性があります。
---------------------------------------------------------------
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim myDate As String
If Target.Address <> "$A$1" Then Exit Sub
On Error GoTo ErrHandler
If IsDate(Target.Text) Then
myDate = Format$(Target.Value, "GEE.M.D")
If Sh.Name <> myDate Then
Sh.Name = myDate
End If
End If
Exit Sub
ErrHandler:
MsgBox Sh.Name & "のシート名の変更はできませんでした。", 32
Application.Undo '設定を戻す
End Sub
-----------------------------------------------------------------
トラブルに責任は持ちませんが、以下のようにすれば可能です。
こちらは、ActiveWindow になっていなくとも設定されますから、エラーを吐きません。シート名が変わらない場合は、シート名が同じかエラーが発生しています。
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
Dim myDate As String
Dim sht As Worksheet
On Error Resume Next
Application.EnableEvents = False
For Each sht In ThisWorkbook.Worksheets
If IsDate(sht.Range("A1").Text) Then
myDate = Format$(sht.Range("A1").Value, "GEE.M.D")
If sht.Name <> myDate Then
sht.Name = myDate
End If
End If
Next sht
Application.EnableEvents = True
On Error GoTo 0
End Sub
おばんでございます。
Wendy02様、ありがとうございます。
お力を頂き、お陰様で仕事を完成させて頂きました。
非常に丁寧にお教え下さったご説明、超初心者の私にとりましては難しく、
今回は、そのままコピーさせて頂きましたが、これからよく勉強させて頂きたく存じます。
この度初めて、教えて!gooさんに質問させて頂いたのですが、
見ず知らずの私のような者に、こんなに親切丁寧にして頂けたこと、ものすごく感激しています。お会いして直接お礼を申し上げたい気持ちで一杯です。本当にありがとうございました。
蛇足ですが(失礼な話になりますが)亡くした愛犬Wendyと同じお名前でしたことも・・・。本当にありがとうございました。感謝多謝。
No.2
- 回答日時:
>A1が計算式の形になっているため参照元のブックのデータ変更と同時にシート名が変わってくれません。
コード(プログラム)が解らないので、文面だけでは何とも言えません。
エラーが表示されるなら、エラー内容も記載して下さい。
また、他のブックが更新された事を知るためのイベントも無いので、自動的に変化を知ることは不可能だと思います。
シート名には、"/"等の一部の記号が使えないので、別の文字にするなどの工夫が必要です。
With Sheets("Sheet1")
.Name = Format(.Range("A1"), "yyyy-mm-dd")
End With
回答頂き誠にありがとうございます。
VBAは全く初心者で、急な必要に迫られコードは探してコピーして作りました。
日付の表示の仕方は、H19-10-10 のようにしているため、
エラーはおっしゃる通り使えない記号を使っていることへの指摘でした。(実行時エラー1004)ただし、TEXTで文字列にしてからは出ていません。
文字列でもかまわないので、参照元のデータが更新されると同時にシート名も変わるといいのですが・・・。
すみません。イベントのやり方もわかりません。
下記が現在のコードです。
宜しくお願い申し上げます。
Option Explicit
Function CheckName(AName As String) As Boolean
Dim i As Long
CheckName = True
For i = 1 To ThisWorkbook.Sheets.Count
If AName = Sheets(i).Name Then
CheckName = False
Exit Function
End If
Next
End Function
Private Sub Workbook_SheetChange(ByVal Sh As Object, _
ByVal Source As Range)
If Source.Row = 1 And Source.Column = 1 Then
If Sh.Range("A1") <> "" And CheckName(Sh.Range("A1")) Then
Sh.Name = Sh.Range("A1")
End If
End If
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) ユーザー定義について質問です。 2 2023/06/28 13:21
- Excel(エクセル) 複数セルデータを別シートの単一セルにコピーしたい。(詳細をご参照ください) 1 2022/12/14 15:08
- Excel(エクセル) 条件に合った数値の合計を表示させたい関数と条件指定の方法 3 2023/05/13 16:07
- Excel(エクセル) 前の(左隣の)シートを連続参照するように、あとから変更したい 1 2023/02/22 00:51
- Excel(エクセル) エクセルの祝日に色が反映しない 4 2022/05/18 09:58
- Excel(エクセル) 【エクセル」 特定のセルで条件抽出した列を、別シートに上から詰めて表示したい。 8 2022/04/08 16:00
- Excel(エクセル) エクセル関数について 2 2022/04/13 18:25
- Excel(エクセル) シート参照を含む数式を連続コピー 3 2022/12/10 11:42
- Excel(エクセル) エクセルのことで教えてください。 A1セルに、 別シートのA1セルが1のときは「A」、2のときは「B 4 2023/02/24 23:08
- Excel(エクセル) エクセルの表示形式について教えてください あるセルの「A」という値と、別のセルの「B」という値を組み 4 2023/02/21 21:55
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの関数について教えて...
-
Excelカスタム関数(アドイン登...
-
Excelデータをコピペして、ペー...
-
Excel関数-文字列で自動作成さ...
-
スプレッドシート、Excelでの数...
-
Excelで50個のセルに同じ文字を...
-
Microsoft Officeの中古は信用...
-
スプレッドシートで使う数式を...
-
エクセルVBA、別ブックへ転記す...
-
エクセルで会社の従業員のデー...
-
エクセルで不等号記号(≠)が上に...
-
エクセルの表で1年間の曜日を...
-
A列とB列を参照してC列に連番を...
-
エクセルの空欄をつめて、次の...
-
エクセルでの特別な文字を上に...
-
エクセルでセルに標準で入力さ...
-
エクセル日付 文字列の関数がエ...
-
エクセル2013で月間勤務表から...
-
エクセルの日付を編集する
-
EXCELの質問です 119から足した...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBA、別ブックへ転記す...
-
エクセルでの作業計算方法について
-
時間によってファイル名が変わ...
-
【関数】適切な文字数の数字を...
-
Excelについて教えてください
-
エクセル初心者です 関数の入れ...
-
【マクロ】ファイル名の変更に...
-
UNIQUE関数が使えないバージョ...
-
エクセルの計算
-
【関数】先頭だけにある、半角...
-
Excelで、決まった行を繰り返し...
-
Excelでセルの値が同じか...
-
LOOKUP関数を使えばいいのでし...
-
Excel
-
はがきについて。
-
エクセルの条件付き書式につい...
-
エクセルのデーターが2か月前の...
-
エクセル②
-
エクセルで「-0.0」と表示さ...
-
Microsoft1Officeの互換ソフト...
おすすめ情報