エクセル 特定のセルの値をシート名にする マクロ
お知恵をお貸しください。
現在、月計表なるものを作っています。
シートは12あります。
シート名は「1月、2月、3月、、、12月」としています。
1月シートの「月度セル(D1)」をリスト選択としており1~12までを選択するようにしています。
他のシートの「月度セル」は直前のシートの「月度セル」の値を参照し、「直前のシートの月度値が12」であれば「1(翌年になるので)」を、12以外であれば「直前のシートの月度に+1」した値を自動表示するIF関数を書いています。
2月シートの月度セルの関数>=IF('1月'!$D$1=12,1,'1月'!$D$1+1)
ここで問題となったのが、1月シートの月度を1月以外にした時に、シート名とシート内の月度がミスマッチを起こしてしまうということです。
例>1月シートの月度を「2」とするとシート名は「1月」なのにシート内の月度項目は「2」月となる。
色々調べて以下のマクロを見つけたのですが、、、
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo ERR_HANDLER
If Target.Address(False, False) = "D1" Then
ActiveSheet.Name = Range("D1").Value
End If
Exit Sub
ERR_HANDLER:
MsgBox "現在のD1セルの値はシート名にできません。"
End Sub
これをVisual Basic画面で各シート(12のシート全て)に記述してみました。
確かに、1月シートは「月度」をプルダウンで選択したと同時にシート名も月度のセル値と同じ値に変わるのですが、2月以降のシート名はそれだけ(1月シートの月度を選んだだけ)では変わりませんでした。
2月以降のシート名を変更するには、各シートの月度セルをアクティブにし、そこに記述している前途のIF関数を再計算させないと変更されませんでした。
これでは、、、再計算させるより2月以降の月度を手入力した方が早いかもしれません。
でも、それでは。。。
調べた中で「ThisWorkbook」に記述すればどのワークシートでも機能するような事が書いてあったのですが、既にお手上げ状態で。
お知恵をお貸しいただければ幸いです。
宜しくお願い致します。
お礼
大変便利なサイトですね。有り難うございます。