日本中近世史史料講読で可をとろう

ただし、当ブログは高等教育課程における日本史史料講読の単位修得を保証するものではありません

日本中近世史料を中心に濫読・少読・粗読し、各史料にはできるだけ古文書学に倣い表題をつけ
史料講読で「可」を目指す初学者レベルの歴史学徒として史料を読んでいきます

日付から和暦を判定するVBAコードを作ってみました

和暦は突然改元されるので、史料に書かれた日付が実在するのか逐一確認する必要がある*1。架空の年号*2としてよく知られるのは未来年号である。未来年号で書かれているからといってただちに偽文書であるとはいえないが、内容を読む上で避けて通れない作業である。年号と干支が一致しない場合、どちらを採用するのか、それとも別の年代か、あるいはそもそも文書自体が「『神の手』によって創り上げられた作品」(意図は問わない)なのかという問題もある*3

 

今日使われる歴史的事件名と同時代に記された年代が食い違うケースは珍しくない。たとえば秀吉による最初の「唐入」は天正20年からだが、12月8日「文禄」に改元されたので一般には「文禄の役」と呼ばれる。また嘉永7年11月4日と5日に起きた東海地震、南海地震は11月27日に「安政」に改元されたため「安政」地震と呼ばれる。歴史叙述上問題ない*4が、同時代史料に安政東海地震や安政南海地震が起きた年代が「安政元年」と記されていることはありえない*5。逆に改元されても旧来の年号を引き続き使用する例はよく見られる。

 

ちなみにポルトガル宣教師たちは「年号」を以下のように説明している。

 

  

Nengǒ(ネンガゥ)

 

年号、日本で頻繁に変わる、時代の通称

(『邦訳日葡辞書』458頁)

  

 

ここで「①日本で、②頻繁に変わる」という部分が重要である。 明やベトナムが一世一元制であり、改元が新皇帝践祚の翌年元日に行われるのに対して、という含意なのだろう。

 

f:id:x4090x:20210326170738p:plain

註:文禄5年は10月27日に改元されたのでそれより前の「閏7月」は慶長1年ではなく文禄5年でなければならない。文書に「慶長元年閏7月」と記されていればその日付は未来年号である。

 

ただし本記事では地方暦は扱わない、というより扱えない。もとより地方暦を網羅することなど不可能なことである。京暦と地方暦が異なる例として有名なのは天正10年閏12月の件であろう。京暦では置かれなかったが、東国では置かれた形跡がある*6。置かれたとすれば京都と当該地域は1ヶ月ほど時差が生じる。

 

使用例

 

f:id:x4090x:20210326180810p:plain

天正20年12月7日はまだ改元前なので「天正20壬辰年」と返す例。 

 

f:id:x4090x:20210326131444p:plain

翌8日「文禄」に改元されたので「文禄1壬辰年」と返す例。

 

f:id:x4090x:20210326175904p:plain

  文禄2年1月は小の月、29日までしかないので実在しない旨返す例。

 

VBAコードを除いた雛形はこちらから。

drive.google.com

 

 

コード

 

 

 

Private Sub 年号判定_Click()

 

Dim i As Long, j As Long, SerialNo As Long
Dim 年月 As String, 日 As Long
Dim row As Long, column As Long

 年月 = Range("Q1").Value
 日 = Range("U1").Value


 row = WorksheetFunction.XMatch(年月, Range("H3:H2006"), 1)
 column = WorksheetFunction.XMatch(日, Range("I2:AL2"), 1)
 SerialNo = WorksheetFunction.Index(Range("I3:AL2006"), row, column)

 i = Range("AD1").Value
 j = Range("U1").Value
 Range("AA1").Calculate
 Range("AD1").Calculate

If SerialNo = 0 Then
   MsgBox "お調べになった日付は使われておりません" & vbCrLf & "年代をよくお確かめの上再度お調べ直しください"
   Range("AA1").Value = ""
   Range("AG1").Value = ""

Else
   Range("AA1").Value = SerialNo

   Range("AA1").Calculate
   Range("AD1").Calculate


  Select Case Range("A" & i)
    Case Is = ""
     Range("AG1").Value = Range("B" & i).Value
     MsgBox "その日は" & Range("B" & i).Value & Range("C" & i).Value & "年です"
    Case Is <> ""
      Select Case Range("F" & i)
        Case Is = ""
          Range("AG1").Value = Range("B" & i).Value
          MsgBox "その日は" & Range("B" & i).Value & Range("C" & i).Value & "年です"
        Case Is <> ""
         If j >= Range("F" & i).Value Then
           Range("AG1").Value = Range("A" & i).Value
           MsgBox "その日は" & Range("A" & i).Value & Range("C" & i).Value & "年です"
         Else
           Range("AG1").Value = Range("B" & i).Value
           MsgBox "その日は" & Range("B" & i).Value & Range("C" & i).Value & "年です"
         End If

      End Select
  End Select

End If


End Sub

 

 

 

 

エクスキュース

 

ド素人が見よう見まねで組んだものですので、答えるまでに数秒かかりますし、不備ばかりと思います。お気づきの点がありましたらコメント欄にてご教示下さい。

 

 

*1:西暦もユリウス暦からグレゴリオ暦に切り替えた際に日付が飛ぶので、必ずしも連続しているわけではない。そこで計算上設けられたのがユリウス日である

*2:私年号は実在した年号で、架空のそれではない

*3:椿井政隆はさまざまな意味において「神の手」と呼ぶにふさわしい

*4:適切か否かは別であるし、大きな誤解を生んでいる現実もある

*5:慶応4年10月23日、新政府は同年を元日に遡って明治元年としたが、制度上の話にすぎず現実に慶応4年と書かれたあらゆる文書を書き換えさせたわけではない

*6:上杉家文書