• ベストアンサー

Excelでセルからの表示形式を取得

Excelでセルからの表示形式を取得 関数またはVBAで、セルから表示形式を取得するにはどのようにすればいいでしょうか? (標準・文字列など)

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

>関数またはVBAで 関数と書いている点は、Excelの関数の特徴の勉強不足だと思う。 Excelの関数は、式を入れたセル以外の他の「セルの値」を問題にして、それらを加工して、「セルの値」を返すものです。 Excel関数は、セルの書式や、その中の1つ表示形式を問題にするものではありません。 関数では、のっけから考慮外のはずなんです。 しかし少しExcelの関数を知っている人だと、「CELL関数」があると言われそうです。 しかしこれはLOTUS123などとの互換性を採るためにあるものでれいがいです。また、 http://ohpa.net/modules/xlnote/content0039.html のように特殊な戻り値になっています。 ーー だからユーザー定義などの設定された「表示形式の文字列」を得たいなら、VBAでやることになる。 A列の設定に対し Sub test01() For i = 1 To 5 Cells(i, "D") = Cells(i, "A").NumberFormat Next i End Sub を実行して 私のケースの場合は、D列D1:D5に #,##0 #,##0 #,##0 m/d/yyyy h:mm;@ のように表示されます。 ーーー ユーザー関数化することはたやすい。 標準モジュールに Function fmt(a) fmt = a.NumberFormat End Function と定義して 例えばE1セルに=fmt(A1) と入れて下方向に式を複写すると(上記と同じケースで)E1:E5は #,##0 #,##0 #,##0 m/d/yyyy h:mm;@ のようになる

その他の回答 (2)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.3

Sub macro1()  MsgBox Range("A1").NumberFormat  MsgBox Range("A1").NumberFormatLocal End Sub などのように。

回答No.1

cell関数で第一引数が"format"ですね。それぞれの書式に応じてど んな値か返ってくるかはヘルプを読むか、自分で試して下さい。

関連するQ&A

専門家に質問してみよう