こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VBA(エクセル)で『17.10.11』を『平成17年10月11日』の変換出力

エクセルのVBAでプログラムをつくりました。
その内容はシート1でいくつかセルに値を入力した後、
マクロを実行すると指定したセルのそのままの内容が、シート2へコピーされるというものです。
そこで『日付』を入力する欄があるのですが、
そこには『17.10.11』と入力する欄があるのです。
これをシート2へコピー出力するときに
『平成17年10月11日』という風に方変換して
出力したいのです。どうすればいいでしょうか?
どうか教えていただけたらうれしいです。

ちなみにコピープログラムはこんな感じにしています
s.Cells(r, 1).Copy Sheets("Sheet2").Range("A1")
A1セルに日付を入れる欄があるのでここを型変換して出力したいのです。助けてください。

投稿日時 - 2005-12-16 19:41:57

QNo.1843017

すぐに回答ほしいです

質問者が選んだベストアンサー

>『17.12.12.17:02』だったり『17.12.12.12:00~17.12.12.14:00』だったりする
'だいだい、こんな感じかと
Public Sub test()
Dim a
Dim str As String
str = s.Cells(r, 1).Value
If InStr(str, "~") > 0 Then
a = Split(str, "~")
str = toDateStr(a(0)) & "から" & toDateStr(a(1)) & "の間"
Else
str = toDateStr(str)
End If
Sheets("Sheet2").Range("A1")
.Value = StrConv(str, vbWide)
End Sub

Private Function toDateStr(s) As String
Dim d, t

d = Split(s, ".")
t = Split(d(3), ":")
t(0) = CInt(t(0))

toDateStr = "平成" & d(0) & "年" & d(1) & "月" & d(2) & "日" & IIf(t(0) >= 12, "午後" & (t(0) - 12), "午前" & t(0)) & "時" & t(1) & "分"
End Function

投稿日時 - 2005-12-18 15:10:43

補足

なにか私のやり方がまずいのか、コピーさせてもらい貼り付けてもオブジェクトが必要ですというエラーがでてしまいます。何がまずいのでしょうか??
何度もすいません。

投稿日時 - 2005-12-18 15:27:39

お礼

すいません。わたしの勘違いでしたm(_ _)m
本当にいろいろご指導ありがとうございました。
本当に勉強になりました。
BLUEPIXYさんには感謝ばかりです。

投稿日時 - 2005-12-18 15:44:06

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

>平成17年12月16日から平成17年12月18日までの間
Dim a
Dim str As String
str = Replace(s.Cells(r, 1).Value, " ", "") '全角スペース削除
str = Replace(str, " ", "") '半角スペース削除
str = Replace(str, "~", ".") '~を置換
a = Split(str, ".")
str = "平成" & a(0) & "年" & a(1) & "月" & a(2) & "日から平成" & a(3) & "年" & a(4) & "月" & a(5) & "日までの間"
Sheets("Sheet2").Range("A1").Value = StrConv(str, vbWide)

投稿日時 - 2005-12-16 22:20:01

補足

BLUEPIXYさんたびたび申し訳ありません。またもう一つどうしても必要な機能がでてきてしまいました。いろいろ調べてもわからず頼みの綱がBLUEPIXYさんだけだったので・・もしわかればお願いします。

日付の入力欄(すいません。時刻が必要になりましたm(_ _)m)は
『17.12.12.17:02』だったり『17.12.12.12:00~17.12.12.14:00』だったり
するのですが、前回質問したときと同じようにこれを判別して『平成17年12月12日午後5時02分』というような表記方式にするプログラムはできないでしょうか?
もし後記のような『~』が入った場合は『から』を付けて同じような表記に変換して出力したいのです。
ちなみに時刻は何時のところだけ午前午後判別できればいいのですが・・・
もう頼みの綱がBLUEPIXYさんしかいません。
もしわかればお願いいたします。すいません。

投稿日時 - 2005-12-18 14:17:15

ANo.2

Dim a

a = Split(s.Cells(r, 1).Value, ".")
Sheets("Sheet2").Range("A1").value=StrConv("平成" & a(0) & "年" & a(1) & "月" & a(2) & "日", vbWide)
でいいと思います。

個人的には、文字列にしてしまう方が応用が利かないと思いますが・

投稿日時 - 2005-12-16 21:07:24

補足

本当にありがとうございます。かなり悩んだ結果、BLUEPIXYさんのおかげで悩みが解決しました。
もし、わかればでよろしいのですが、これを発展させて『17.12.16 ~ 17.12.18』と打ったら同じように
シート2に
『平成17年12月16日から平成17年12月18日までの間』
という『~』は『から』という文字に変更して、↑のようなものを出力することは可能でしょうか???
もし今ほど教えてもらったプログラムをベースにしてできるなら教えていただけるとうれしい限りです。
m(_ _)m

投稿日時 - 2005-12-16 21:25:48

ANo.1

エクセルで日付として扱えるものとして出力するのでしょうか
それとも、単なる文字列として出力するのでしょうか

投稿日時 - 2005-12-16 20:15:45

補足

お早いご回答本当にありがとうございます。
シート1にはピリオドを使います。
『17.12.16』 これをマクロ実行すると
シート2に
『平成17年12月16日』という風にとにかく出力できればいいのですが、
はば広く応用が聞くという意味では、文字列として出力したいなと感じています。

投稿日時 - 2005-12-16 20:35:07

あなたにオススメの質問