パソコン仕事5倍塾
35,000人を指導した東大卒・元日本IBM社内講師が直伝
MENU
受講生さんの投稿
(投稿ID: 4703)
小川 慶一さんのコメント
(コメントID: 6545)
Sub set_frame_and_set_values() '以下のマクロを実行し、エクセルシート上で結果を確認してみてください '初期化の代わりに、シートを追加します。 '追加直後は全セルが標準書式のシートがアクティブな状態です。 Worksheets.Add 'セルB1, B2, C2に投入する値は何か?を示すラベルを作る Range("B1").Value = "先頭アポストロフィーなしか?ありか?" Range("B2").Value = "なし" Range("C2").Value = "あり?" 'セルA3, A4 に、セルの書式を示すラベルを作る Range("A3").Value = "標準" Range("A4").Value = "文字列型" 'セルB4:C4の書式を文字列型にする(分かりやすくするため、背景にも色をつける) Range("B4:C4").NumberFormatLocal = "@" Range("B4:C4").Interior.Color = RGB(128, 128, 216) '値を投入します Range("B3").Value = "001" Range("B4").Value = "001" Range("C3").Value = "'001" Range("C4").Value = "'001" End Sub
受講生さんのコメント
(コメントID: 6563)
(コメントID: 6566)
Captcha:
たった1ヶ月で人生が劇的に変わりました
佐藤信さん
役員クラスの方から高い評価を受けるようになりました。
佐賀県 - 岩本徹さん
今までまったく知らなかったショートカットキーを使いまくっています。
東京都 - 鷹觜慶さん
年齢60才間近、営業で外回りの時間が多い私でも退社時間が1-2時間程度早くなりました。
東京都 - 宗内隆明さん
受講前もすでにパソコン得意でしたが、そんな私でも受講して本当に良かったと思えた講座です。
東京都 - 佐伯とも子さん
ここまで包括的に仕事に役立つ深い学びを受けれた講座は初めてでした
東京都 - 飯田倫子さん
2024年12月24日 07:22
2024年12月23日 21:50
2024年12月23日 10:10
2024年12月15日 22:47
2024年12月14日 06:16
2024年12月24日 11:02
2024年12月24日 10:40
2024年12月24日 09:49
2022年02月24日 10:59
表示できる投稿はありません。
この学習サイトの教材制作、サポート、システム開発をすべてやっています。
2022年02月02日 00:00
2022年02月02日 03:00
2022年02月02日 06:00
2022年02月02日 09:00
2022年02月02日 12:00
2024年12月19日 11:30
2024年12月18日 13:30
2024年10月21日 17:30
2024年10月18日 17:00
2024年10月17日 17:30
2024年11月27日 11:48
2024年11月25日 12:07
2024年11月17日 09:51
2024年11月15日 16:41
2024年11月15日 13:07
受講生さんの投稿
(投稿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)
ひとことで言うと、値を拾うときに余計な心配をしなくて良くなるのでその点がメリットですね。
ひきつづき、パソコンスキル上達、お楽しみください☆