• ベストアンサー

エクセルとVB6 その2

環境 XP VB6.0 EXCEL2003 ws.Cells(1, III%).Value = D$(x%, 0)でデータを挿入した時、 D$(x%, 0)="9e0"の時に エクセル側の表記が、「9.00E+00」となってしまいます。 浮動小数点表示になっているかと思いますが、 この減少の説明と、「9e0」と表記されるような回避方法を教えてください。 当方は、ほとんどエクセルを使用してなく、現在のExcelがらみのプログラム以外、エクセル関連はやりませんので、 はじめから勉強するのは避けたいので、安直かもしれませんが、 ご存知の方、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.2

回答は出てますが、前回回答したので序に。。。 エクセルは入力値を自動で適当は型に変換してくれます。 いい例が、全角数字を入れた場合です。 Cells(3,1).Value = "345" とか セルに直接、全角数字 345 を入力すると 全角の345ではなく、半角の345という数値型に変換してくれます。 数値を入力したり、全角文字を入力したりが交互にある場合などこれはとても便利なものですが、 時には質問のようにこれが余計なお世話になったりします。 で、それを避けるためには回答1にあるように方法が2つあります。 (1)アポストロフィを前に付加   ws.Cells(1, III%).Value = "'" & D$(x%, 0) (2)予めセルの表示形式を文字列に設定    1列目(A列)の表示形式を文字列に設定する場合   ws.Columns(1).NumberFormatLocal = "@" とか   ws.Columns("A:A").NumberFormatLocal = "@" これで1列目(A列)は全て文字列になります。 序に、2列目(B列)を、数値の3桁区切り形式にする場合  ws.Columns(2).NumberFormatLocal = "#,##0"  ws.Columns("B:B").NumberFormatLocal = "#,##0" 以上。  

daikaisan
質問者

お礼

前回の質問に引き続いて、丁寧な回答をありがとうございます。 勉強になりました。

その他の回答 (1)

  • FEX2053
  • ベストアンサー率37% (7991/21371)
回答No.1

一番安直な方法はエクセル側のセルに、「書式」「セル」「表示形式」 で「文字列」を指定しておくことです。こうしておけば、どんな文字列が 来ても数値と判断されることはないです。 もうひとつの方法は、送り出すデータの先頭に'(アポストロフィ)を 付加する方法です。先頭のアポストロフィはExcelは表示上無視します ので、「9e0」と表示されるはずです。ただしこの場合、Excel側の処理 次第では、先頭のアポストロフィが出てくる場合があるので、表示させる だけに止める場合以外は注意が必要です。

daikaisan
質問者

お礼

回答ありがとうございます。 >一番安直な方法 新しくエクセルシートを常に生成するため無理です。 アポストロフィの方法しかないですね。