今回は、セルの値を書式付きで取得する(つまり、見たまんまの値)方法です。
知っている人には非常に簡単なんですがね。
セルA1に"2000/10/29" という値が入っているとします。
で、書式を設定して"10月29日"と表示している場合に、 MsgBox Range("A1") または、MsgBox Range("A1").value とすると、 "2000.10.29"の様に表示とは違う形式になってしまいます。
それではっちゅうことで、次のような関数を作ってみました。
セルの書式でフォーマットしてしまおうということです。
'対象セルの値を現在の表示形式の文字列で返す Function getFormatValue(iRange As Range) As String With iRange getFormatValue = Format(.Value, .NumberFormatLocal) End With End Function
ちょっと面白いかなと思ったんですが、実は問題がありました。
この例の場合は上手くいくんですが、設定している書式によってはそうもいかないんですね。
実は、セルの書式に使用する文字と、Formatの文字とは少し違うようなんです。
大体同じなので、同じだろうと思っていたのですがね。
ちゃんちゃん!
・・・と終わってしまっては、意味が無いですね。
結局どう解決するかというと、実は非常に簡単な事でした。
なんのこたあない、MsgBox Range("A1").Text とすれば良いんですね。
教訓: 無駄な努力はするな。 ちゅうわけですな。
ちゃんちゃん!