SSブログ

Excel小僧:「令和4年」を自動更新 [コンピューター]

"今年"セルに西暦年(例:2022)が入力されていて、値が更新されたら、別のセルに「令和4年」(4は全角)と表示させる方法です。

最初、表示形式を

myString1 = Chr(34) & "令和" & Chr(34) & "@" & Chr(34) & "年"
Range(myRangeName2(i)).NumberFormatLocal = myString1

として、値「4」を代入したのですが、循環参照が発生して「令和令和4年年」となってしまう問題が発生しました。

そこで、表示形式を「@」とし、値「令和4年」を代入する様に変更しました。

以下、"今年"セルが変更されたら起動されるVBAマクロです。

Sub myFTrYrReiwa1()
'【機能】西暦年(半角)を元号年(令和、全角)にする(一覧シート)
'【変数】
  Dim Year1 As Integer ' 元号年(令和)
  Dim Year2 As String ' 元号年(令和、全角)
  Dim myRangeName1 As String ' Range名(元号年3)
  Dim myRangeName2(11) As Variant ' Range名
  Dim myString1 As String
  Dim i, j As Integer
'【実行コード】
  Year1 = Range("今年").Value - 2018 ' 元号年(令和)
  Year2 = StrConv(Year1 & "", vbWide) & "" ' 元号年(令和、全角)
'
  myRangeName1 = "元号年3"
  Range(myRangeName1).NumberFormatLocal = "@" ' 表示形式
  Range(myRangeName1).Errors.Item(xlNumberAsText).Ignore = False ' エラーチェック表示(数値が文字列として保存)
  Range(myRangeName1) = Year2 ' 全角の元号年を代入
  Range(myRangeName1).Errors.Item(xlNumberAsText).Ignore = True ' エラーチェック非表示(数値が文字列として保存)
' 1 - 12月のタイトル
  For i = 0 To 11
    j = i + 1
    myRangeName2(i) = "_" & j & "月top"
    ' クリア
    Range(myRangeName2(i)).NumberFormatLocal = "@"
    Range(myRangeName2(i)) = ""
    ' エラーチェック表示(数値が文字列として保存)
    Range(myRangeName2(i)).Errors.Item(xlNumberAsText).Ignore = False
    ' 各月のタイトルを設定
    ' 表示形式
    ' myString1 = Chr(34) & "令和" & Chr(34) & "@" & Chr(34) & "年" & StrConv(j, vbWide) & "月 明細書" & Chr(34)
    ' Range(myRangeName2(i)).NumberFormatLocal = myString1
    Range(myRangeName2(i)) = "令和" & Year2 & "年" & StrConv(j, vbWide) & "月 明細書"
    ' エラーチェック非表示(数値が文字列として保存)
    Range(myRangeName2(i)).Errors.Item(xlNumberAsText).Ignore = True
  Next i
End Sub
ヤバイぜ!(11)  コメント(1) 
共通テーマ:日記・雑感

ヤバイぜ! 11

コメント 1

cheese999

やばいぜ、ありがとうございます。。
by cheese999 (2023-03-14 04:50) 

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字(英大文字の「オー」、英小文字の「ユー」、アラビア数字の「ハチ」、アラビア数字の「イチ」、アラビア数字の「ニ」)を入力してください。

Facebook コメント

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。