Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 8 Pro : Excel 2010)
今さらながらの質問です(.Text .Value)
投稿日時: 18/04/20 17:25:29
投稿者: ふぁんふぁn

同じブック内にある「元」シートのセルを「先」シートにコピーする場合に起きた
現象について、TextとValueの違いを教えていただけないでしょうか。
 
シート名:元 の内容
 
  列B   列C
a@開始日  終了日    
1 2018/3/30 2018/4/1 ←B列、C列とも MSPゴシック 9ポ
2 2018/3/30 2018/4/1 ←B列、C列とも MSPゴシック 11ポ
 
※ B列、C列の幅は69ピクセル
※ 2行目のB列開始日の表示は、######## となっています。
※ B列C列ともセルの書式設定は分類:日付、サンプルは2001/3/14となっています
 
「元」シートの内容を同じブックにある「先」シートコピーするマクロを下記のようにしました。
 
Sheets("先").Range("B" & 先行) = Sheets("元").Range("B" & 元行).Text
Sheets("先").Range("B" & 先行) = Sheets("元").Range("B" & 元行).Text
 
先シートも同じレイアウトですが、B列C列とも MSPゴシック 10ポ、列幅は90ピクセルです。
 
実行すると、先シートは
 
  列B   列C
a@開始日  終了日    
1 2018/3/30 2018/4/1
2 ########  2018/4/1
 
2行目Bの書式設定は元シートと同様に分類:日付、サンプルは2001/3/14となっていますが
########は表示だけでなく、値も######## となりました。
 
 
.Text を .Value に変更
Sheets("先").Range("B" & 先行) = Sheets("元").Range("B" & 元行).Value
Sheets("先").Range("B" & 先行) = Sheets("元").Range("B" & 元行).Value
 
実行結果の先シートは
 
  列B   列C
a@開始日  終了日    
1 2018/3/30 2018/4/1
2 2018/3/30 2018/4/1 となりました。
 
.Textですと見た目の########を転送してしまうのでしょうか?
 

回答
投稿日時: 18/04/20 17:44:15
投稿者: sk
回答
投稿日時: 18/04/20 18:03:13
投稿者: WinArrow
投稿者のウェブサイトに移動

Value は、その名の通り「値」です。
Text は、言うならば、見た通りと考えた方がよいでしょう。

投稿日時: 18/04/23 08:33:06
投稿者: ふぁんふぁn

WinArrow様
 
値と見た通り・・・何気なしに.Text をコピペして酷い目にあいました(笑)
しっかりデバッグしなければと思いました。
ありがとうございました。
 

WinArrow さんの引用:
Value は、その名の通り「値」です。
Text は、言うならば、見た通りと考えた方がよいでしょう。

投稿日時: 18/04/23 08:34:34
投稿者: ふぁんふぁn

sk様
 
しっかりと基礎力つけてデバックしなければと痛感しました。
ありがとうございました。
 

sk さんの引用:
MSDN より:
https://msdn.microsoft.com/ja-jp/vba/excel-vba/articles/range-value-property-excel
https://msdn.microsoft.com/ja-jp/vba/excel-vba/articles/range-text-property-excel
 
2 つめのリンク先の記事における使用例をご参考に。