Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(指定なし : 指定なし)
和暦が1桁の場合にハイフンをつける
投稿日時: 22/01/20 09:52:23
投稿者: アリオス

すみませんが、教えてください。
下記のとおり、テキストフレームに日付を入れるコードを考えています。
 
そこで和暦であるeが一桁の場合にハイフンを入れるようにしたいので教えてください。
例 令和4年 →  -4
  令和10年→  10
 
 
With Selection.ShapeRange
    With .TextFrame
         .Characters.Text = Format(Date, "e/mm/dd")
        .Characters.Font.Size = Stamp_width / 5
        .Characters.Font.ColorIndex = 3
        .HorizontalAlignment = xlHAlignCenter
        .VerticalAlignment = xlVAlignCenter
    End With
 
宜しくお願いします。

回答
投稿日時: 22/01/20 10:17:10
投稿者: simple

    Dim d As Date
    d = DateSerial(2032, 1, 20)
    d = Date
などとどちらであっても、共通に

.Characters.Text = Right("-" & Format(d, "e/mm/dd"), 8)
などとすればよいかもしれませんね。

投稿日時: 22/01/20 12:31:33
投稿者: アリオス

年だけでなく、日付についても1桁の場合はハイフン"−"を入れる仕様でした。
 
例:令和4年1月5日   −4/1/−5
  令和4年1月15日  −4/1/15
  令和10年1月5日  10/1/−5
  令和10年1月15日 10/1/15
  令和4年10月5日  −4/10/−5
 
 
With Selection.ShapeRange
    With .TextFrame
         .Characters.Text = Format(Date, "e/mm/d")
        .Characters.Font.Size = Stamp_width / 5
        .Characters.Font.ColorIndex = 3
        .HorizontalAlignment = xlHAlignCenter
        .VerticalAlignment = xlVAlignCenter
    End With
 
すみませんがご教授ください。

回答
投稿日時: 22/01/20 13:26:39
投稿者: めんたん

MsgBox Split(Format(Date, "e-m-d"), "-")(0) & vbCrLf & _
       Split(Format(Date, "e-m-d"), "-")(1) & vbCrLf & _
       Split(Format(Date, "e-m-d"), "-")(2)
 
任意の分割してから
1. 文字[ - ]を足す
2. 右2文字を取ってくる
3. 文字列として結合する
なんてどうですか?

回答
投稿日時: 22/01/20 13:31:45
投稿者: hatena
投稿者のウェブサイトに移動

下記でどうでしょう。
 

Dom D As Date
D = Date
.Characters.Text = _
    Right(Format(D, "-e"),2) & Format(D, "/m/") & Right(Format(D, "-d"),2)

投稿日時: 22/01/20 17:34:29
投稿者: アリオス

hatena様
 
うまくいきました。
ありがとうございます。
 
他の皆様のご協力いただきありがとうございました。(^^♪