advanced help
per page, with , order by , clip by
Results of 1 - 1 of about 779 for シリアル値 とは (0.008 sec.)
シリアル値 (1874), とは (29344)
[[20150720223743]]
#score: 8289
@digest: 23e8fcf451d4f5b2b6b31d264f0bbe96
@id: 68541
@mdate: 2015-07-21T09:06:08Z
@size: 4007
@type: text/plain
#keywords: smachine (60898), nwfi (22142), 201506 (17497), myfile (15527), nwfr (14761), syear (12851), dateadd (12848), savedir (11336), 策等 (8724), 2451 (6812), 三連 (4723), replace (4640), 善策 (4182), 連発 (3076), 年号 (2794), 究明 (2271), 2015 (2042), 数部 (2001), xlsm (1972), シリ (1927), く20 (1786), 日目 (1548), ル値 (1527), string (1448), format (1303), アル (1199), マウ (1068), ウス (1029), プ実 (998), 改善 (992), 年6 (984), 割合 (911)
『ファイル名の日付がシリアル値になってしまう』(fafa)
Excelで月ごとのファイルを作成していて、ファイル名はKV-1-2015⁻06.xlsmとなっています。 現在開いているファイル名から翌月のファイル名のファイルを作成するためのマクロの中で、DateAddのコードのところで年号・月がシリアル値で表示されてしまいます。 コードの一部ですが次のようになっています。 Dim myfile As String Dim s As String Dim sYear As String Dim sMachine As String Dim nwfi As String Dim nwfr As String Dim SaveDir As String myfile = ThisWorkbook.Name s = Replace(myfile, ".xlsm", "") sYear = Left(Right(s, 7), 4) sMachine = Left(s, Len(s) - 8) nwfi = Format(DateAdd("m", 1, Replace(Replace(Replace(myfile, sMachine, ""), "-", ""), ".xlsm", "")), "yyyy-mm") nwfr = Format(DateAdd("m", 1, Replace(Replace(Replace(myfile, sMachine, ""), "-", ""), ".xlsm", "")), "yyyy") SaveDir = "C:¥Users¥Desktop¥" & sMachine & "¥" & nwfr ・・・ マウスを持っていくとnwfiの値が"2451⁻10"、nwfrが"2451"となっています。 何が原因でしょうか? 改善策等ありましたらアドバイスよろしくお願いします。 < 使用 Excel:Excel2013、使用 OS:Windows8 > ---- >>何が原因でしょうか? >>改善策等ありましたらアドバイスよろしくお願いします。 まず、この不具合の発生の場所を自分で調べます。 最終的に、Replaceの三連発をDateAddでくるみ、さらにFormatで仕立て上げる1行コードにするとしても、 原因究明のためには、まず単発に書き直します。 Sub Test() Dim myfile As String Dim s As String Dim sYear As String Dim sMachine As String Dim nwfi As String Dim nwfr As String Dim SaveDir As String myfile = "KV-1-2015-06.xlsm" s = Replace(myfile, ".xlsm", "") sYear = Left(Right(s, 7), 4) sMachine = Left(s, Len(s) - 8) myfile = Replace(myfile, sMachine, "") myfile = Replace(myfile, "-", "") myfile = Replace(myfile, ".xlsm", "") myfile = DateAdd("m", 1, myfile) myfile = Format(myfile, "yyyy-mm") End Sub で、このプロシジャの任意のところをマウスでクリックし、F8 を押してステップ実行を開始します。 コードが黄色く光りながら進んでいきます。 myfile = Replace(myfile, sMachine, "") の黄色が、次のコードに移ったら、このコードが実行されたということですから ここで myfileにマウスを当てます。すると、myfileの値がポップアップされます。 このようにして、1行1行、実行しながら myfileの値を調べます。 最初は思惑通り。でも、どこかで、あれ?? となります。 犯人はそこです。 次に、 Sub Test2() Dim s As String s = "2015" MsgBox DateAdd("m", 1, s) s = "201506" MsgBox DateAdd("m", 1, s) s = "2015/06/01" MsgBox DateAdd("m", 1, s) End Sub こんなコードを書いて実行してみます。 最初の2つ、表示される日付は なんだこれは? でしょうし、上記のステップ実行で、あれ? となった現象だと思います。 日付データは、ご自身でコメントされる通り、正体はシリアル値です。 このシリアル値は 整数部に 1900年1月1日の0時を1 とした【経過日数】、小数部に、その時刻の24時間に対する割合が入っています。 2015 というのは 2015年ではなく 2015日目、201506 は 2015年6月ではなく 201506日目 とみなされます。 (β) 2015/07/21(火) 05:32 ---- こんな組み立て方も。 Sub Test3() Dim s As String s = "KV-1-2015-06.xlsm" s = Replace(s, ".xlsm", "") MsgBox Left(s, Len(s) - 7) & Format(DateAdd("m", 1, Right(s, 7) & "-01"), "yyyy-mm") & ".xlsm" End Sub (β) 2015/07/21(火) 05:52 ---- 回答ありがとうございます。 dateaddに問題があるとは思っていましたが、201506になっていたためにダメだったんですね。 nwfiのところで2015の前の"-"を消すつもりが、年号と月の間の分も消してしまったために、シリアル値に変換されてしまったようですね。 nwfi = Format(DateAdd("m", 1, Replace(Replace(myfile, Left(s, Len(s) - 7), ""), ".xlsm", "")), "yyyy-mm") このようにして無事2015⁻07が得られるようになりました。 複雑な式は一つ一つ噛み砕いて確かめることが大事だと非常に勉強になりました。 どうもありがとうございました。 (fafa) 2015/07/21(火) 18:06 ...
http://www.excel.studio-kazu.jp/wiki/kazuwiki/201507/20150720223743.txt - [detail] - similar
PREV NEXT
Powered by Hyper Estraier 1.4.13, with 97023 documents and 608156 words.

訪問者:カウンタValid HTML 4.01 Transitional