西暦8桁問題2

 ★ 空白行とか混ざると面倒くさい ★ 
 ご訪問頂きありがとうございます。アラクリカエシキ(阿良々木)です。
 とりあえず。備忘録として保存。
 先日アップしたコードは空白行や99999999などが混じっていたら使えないので試行錯誤して修正してみました。
 備忘録です、コードの解説とかはなしです。すみません。

Sub hachidate()
Dim o As String
Dim buf As String
Dim i As Long
Dim r As Long
r = Selection.Rows.Count
For i = 1 To r
With ActiveCell
o = .Value
If Len(o) = 8 Then
buf = _
Mid(o, 1, 4) & "/" & _
Mid(o, 5, 2) & "/" & _
Mid(o, 7, 2)
If IsDate(buf) = True Then
.Value = buf
.NumberFormatLocal = "gggee年mm月dd日"
.Offset(1, 0).Activate
End If
If IsDate(buf) = False Then
.Value = o
.Offset(1, 0).Activate
End If
End If
If Len(o) = 0 Then
.Value = ""
.Offset(1, 0).Activate
End If
If Len(o) <> 8 Then
.Value = o
.Offset(1, 0).Activate
End If
End With
Next
End Sub


使い方は↓こんな感じ?
Sub blankskip()
Dim startRC As String
Dim colind As Long
’-----ここから---------------
startRC ="B2" 'ここを変える
Range(startRC).Select
colind=Range(startRC).column
Range(startRC,Cells(Rows.Count,colind).End(xlUp)).Select
Call hachidate
’------ここまで---------------

’-----ここから---------------
startRC ="D2" 'ここを変える
Range(startRC).Select
colind=Range(startRC).column
Range(startRC,Cells(Rows.Count,colind).End(xlUp)).Select
Call hachidate
’------ここまで---------------

End Sub


startRCとかわかりにくい変数名ですが単純に訳せば開始行(Row)列(column)、という感じでVBAのコードを読み書き出来る人であれば解説なしでも、何をしているか解かることでしょう。なので細かい解説はなしです。
 hachidateは選択した行の中にあるYYYYMMDD形式の数値または文字列を日付に変換。
 blankskipは途中に空白行があっても対象範囲を選択する。
 ネットで検索したんですが、最終行を取得するとかはすぐ見つかのですが、例えば空白行が含まれている場合の範囲選択のしかたがなかなか見つかりませんでした。
Range(”B2”,Cells(Rows.Count,2).End(xlUp)).Select
変数使わなくても↑の赤字部分を書き換えれば選択できます。
 抽出したデータに西暦8桁が何列あるのか?
またその中で実際に日付形式でないと困る列はいくつか?考えたら数件かなと思いblankskipのような方式にしました。
 コードのここからここまでをコピーし開始セル番地を書き換えるだけです。
 ↓は実行例です。
vbamae.jpg
vbaato.jpg
実行後の日付が平成なのはこのPC改元のアップデート失敗してて今日は平成32年6月18日と表示します。
 ★ シリアル値 ★ 
 2020-06-19追記
「18731220」等19000101~99991231(シリアル値の範囲)を超えると「1873/12/20」のテキスト(文字列)を返します。そもそもエクセルが扱えない日付なのでしょうがありません。また、基幹システムにそのような値はないだろうということでコードはいじらず。
ただ、「18731220」ではなく「1873/12/20」を返すということはIsDateはTrueを返している?
そこがチョット気になりました^^
関連記事
スポンサーサイト



コメントの投稿

非公開コメント

頑張ってください!!

arakurikaesikiさま、こんばんは!

なんだか試行錯誤感が出ておりましたね..

私はこーゆーの大変に苦手でしたので
余力ながら、頑張れってエールしか送れませんよ~

なんとか頑張ってくださいねv-290

エールに感謝です^^

がちょーさま、こんばんは^^

試行錯誤はしましたが。あまり頑張ってはいませんでしたよ(笑)適当です^^

それにこの件はほぼ片がついたのでこれ以上頑張ることもありません。

医者からも頑張るな、適当流せと言われておりますよ。

いつもコメントありがとうございます。
訪問者さま
カレンダー
09 | 2020/10 | 11
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
プロフィール

arakurikaesiki

Author:arakurikaesiki
阿良々木(あらくりかえしき)と申します。趣味はらくがき/アクアリウム、好きな小説は物語シリーズです。あと、仕事で楽したいためにExcelのVBAをちょくちょくいじってます。
なお、当ブログはリンクフリーです、よろしければリンク貼ってください。
また、ブロともさまも募集中です。コメントとかもらえるとすごく喜びます。

ブロとも様募集中ですm(_)m

この人とブロともになる

最新コメント
リンク(敬称略)
らくがき
新着記事
参照不可? Oct 20, 2020
基幹システムの入れ替えと使えなくなるファイルメーカー Sep 30, 2020
季節の変わり目 Sep 01, 2020
ロード長くね? Aug 19, 2020
ルフィを描いてみた Aug 17, 2020
囲んで塗る? Aug 14, 2020
100.00cm Aug 12, 2020
サメ Aug 08, 2020
チョット多すぎる Aug 08, 2020
・・・・・・ Aug 06, 2020
カテゴリ
アクセスランキング
[ジャンルランキング]
ブログ
3191位
アクセスランキングを見る>>

[サブジャンルランキング]
イラストブログ
115位
アクセスランキングを見る>>
にほんブログ村(ビオトープ)
月別アーカイブ
人気ブログランキング
更新通知登録ボタン

更新通知で新しい記事をいち早くお届けします

検索フォーム