5倍速!メールマガジン
外部アカウントで登録
受講生の声
新着の講座投稿
新着の講座コメント
新着のノート投稿
投稿一覧へ新着のノートコメント
表示できる投稿はありません。
サイト運営者紹介
小川 慶一講師/教材/システム開発者紹介
この学習サイトの教材制作、サポート、システム開発をすべてやっています。
表示できる投稿はありません。
この学習サイトの教材制作、サポート、システム開発をすべてやっています。
受講生さんの投稿
(投稿ID: 4703)
お世話になります。
大変勉強になりました。1点質問があります。
ウォーミングアップ問題の[2]、[3]で文字列を入力するマクロを作成する際に、試しに文字列の前に[’]’を入れ”’001”、”’2010-08-31”と書いて実行してみると、”@”の一文なしでも同じ結果が得られました。この方法でも問題ないでしょうか?
小川 慶一さんのコメント
(コメントID: 6545)
「問題ないか?」ということであれば僕の見解は、「現状ギリギリ問題ないが、非推奨」というところです。
「001」について比較してみましょう。
以下のマクロを実行し、エクセルシート上で結果確かめてみてください。
これは、 "001", "'001" を、標準書式、文字列型書式のセルに投入するマクロです。
格納された値を見ると、以下の状態になっていることが分かります。
[1] "001"とエクセルシート上で表示されるもの:
セルC3, B4, C4
[2] [1] のうち、セルに実際に"001が格納されているもの:
セルB4
[3] [1] のうち、セルには、実際には"'001が格納されているもの:
セルC3, C4
[参考] 実行結果イメージ
https://www.dropbox.com/s/nwkpupnefqj0yom/12020_reply.JPG?dl=0
ということで、実際に格納されている値が異なります。
エクセルも、エクセルVBAも、現状、この[2], [3]の差異は吸収してくれています。
例えば、エクセルマクロで .Value を取得しても、 .Formula, .Text を取得しても、同じ値になります。
Len関数でも、Left関数で1文字目を取得しても、同じ結果になります。
エクセルのワークシート関数ならどうか?たとえば、やはり、同じ値を掛け算すれば同じ結果を得られます。
CSVファイルで保存するときも、[3]のパターンの場合、保存時に先頭のアポストロフィーを落とし、[2]と同じ値で保存してくれます。エクセルは、先頭アポストロフィーのある/なしで生じかねない問題回避のためにかなりのいろいろ配慮をしているということですね。
しかし、将来に渡りそうとは限りません。
また、「新規リリースされたバージョンではバグがあってこういう差異を吸収できなかった。そこで、マイナーバージョンアップで解消した」なんてこともありかねないです。
さらに言うと、エクセル以外のアプリケーションでこのファイルを読み込んだときにこの差異を必ず吸収してくれるかとなると、そこまで期待するのはちょっと期待しすぎでしょう。
(Pythonで取り扱う、GoogleSpredsheetで読み込む、あるいは、何かのツールにエクスポートする、等々)
となると[2], [3]のどちらが好ましいか?という話になるわけですが、表示された値と実際に格納された値が同一の[2]のほうが、汎用性が高い分だけ(未知のバージョンのエクセルや未知のシステムに対しても安心して提供できるデータである分だけ)、勝ると僕は考えます。
以上より、「問題ないか?」ということであれば僕の見解は、「現状ギリギリ問題ないが、非推奨」というものになります。
受講生さんのコメント
(コメントID: 6563)
大変詳細な回答をありがとうございました。
記載いただいたマクロを実行し、違いが理解できました。
今後は推奨の方法でマクロを書けるよう練習したいと思います。
ありがとうございました。
小川 慶一さんのコメント
(コメントID: 6566)
ひとことで言うと、値を拾うときに余計な心配をしなくて良くなるのでその点がメリットですね。
ひきつづき、パソコンスキル上達、お楽しみください☆