2011年6月12日日曜日

文字列関数 (7)

文字列関数編、第七弾。今回は Format 関数について。
  
Sub ExampleStringFunctions7()
       Dim objSheet As Object
       Dim objCell As Object
       objSheet = ThisComponent.CurrentController.ActiveSheet
       '
       objCell = objSheet.getCellRangeByName("A1")
       objCell.String = Format(12.2, "00000.000")
       objCell = objSheet.getCellRangeByName("B1")
       objCell.String = Format(-154.3, "00000.000")
       objCell = objSheet.getCellRangeByName("C1")
       objCell.String = Format(1546, "00000.000")
       objCell = objSheet.getCellRangeByName("D1")
       objCell.String = Format(654321.2734, "00000.000")
       '
       objCell = objSheet.getCellRangeByName("A2")
       objCell.String = Format(00012.3, "##,##0.000")
       objCell = objSheet.getCellRangeByName("B2")
       objCell.String = Format(12.340, "##,##0.###")
       objCell = objSheet.getCellRangeByName("C2")
       objCell.String = Format(45.000, "##,##0.###")
       objCell = objSheet.getCellRangeByName("D2")
       objCell.String = Format(0.45, "##,###.###")
       '
       objCell = objSheet.getCellRangeByName("A3")
       objCell.String = Format(0.765, "%")
       '
       objCell = objSheet.getCellRangeByName("A4")
       objCell.String = Format(CDate("2001/10/2"), "yyyy/mm/dd")
       objCell = objSheet.getCellRangeByName("B4")
       objCell.String = Format(CDate("2001/10/2"), "yyyy年mm月dd日")
       objCell = objSheet.getCellRangeByName("C4")
       objCell.String = Format(CDate("2001/10/2"), "yyyy-mm-dd")
       '
       objCell = objSheet.getCellRangeByName("A5")
       objCell.String = Format(CDate("23:45:11"), "hh:mm:ss")
       objCell = objSheet.getCellRangeByName("B5")
       objCell.String = Format(CDate("23:45:11"), "hh時mm分ss秒")
End Sub
  
上記サンプルコード中の CDate 関数は、文字列を日付や時刻の値に
変換する関数である (後日、詳述する)。
  
上記マクロの実行結果は下図の通り(小さくて見辛いが) :
  
Format 関数とは、値を指定された書式の文字列に変換する関数である。
書式は下記の通り :
  
      Format(Value , Format)
  
Value には数値や日付や時刻の値を指定する。
Format には後述の書式コードを用いて書式を指定する。
戻り値は、変換された文字列が返される。
  
書式コードについて。
  
1. 数値の書式コードについて
   Value に指定された数値の書式を指定する主な書式コードは下記の
   通り :
  
      0 : Value に指定された数値の先頭や小数部の末尾の該当桁に数値
          がない場合にゼロを表示させる。小数部については、サンプルコード
          にもあるように、Value の小数点以下の桁数が4 桁あっても、書式
          で小数点以下を 3 桁しか指定していないと、書式に合わせて値が
          切り捨てられてしまう。
      # : Value に指定された数値の先頭や小数部の末尾の該当桁のゼロを
          表示させないようにする書式コード。小数点以下の桁数については、
          上の場合と同様、書式の桁数に合わせられる。
      . (ピリオド) : 小数点の位置を指定する書式コード。
      , (カンマ) : 千単位の区切り記号として指定する書式コード。
      % : 数値を 100 倍してパーセント記号を付与するときに指定する。
          小数部は切り捨てられるようだ。
  
2. 日付と時刻の書式コードについて
   Value に指定された日付や時刻の書式を指定する主な書式コードは
   
下記の通り :
  
      yyyy : Value で指定された値の「年」を 4 桁で表示する書式コード。
      yy : Value で指定された値の「年」を 2 桁で表示する書式コード。
      mm : Value で指定された値が日付の場合は「月」を 2 桁で表示する。
             1 ~ 9 月については、先頭らゼロがついた形で表示される。
             また、Value で指定された値が時刻の場合は「分」が 2 桁で表示
             される。Excel VBA の場合、「分」は nn で指定するが、試してみた
             ところ曜日が表示されてしまった。Value で日時を指定して試して
             みたが、「月」と「分」はちゃんと表示されるようである。
      mmm : Value で指定された値の「月」を、Jan、Feb、Mar、...の形式で
                表示する。
      dd : Value で指定された日付の「日」を 2 桁で表示する。
      hh : Value で指定された時刻の「時」を 2 桁で表示する。
      ss : Value で指定された時刻の「秒」を 2 桁で表示する。
      /、-、:、年、月、日、時、分、秒 : Value で指定された値の、年月日や
                                                 時分秒の区切り記号。
  
ヘルプの説明がわかり難い為、Excel VBA のFormat 関数を参考にして
実験した結果に基づいて、上記の内容を記載した為、正しいかどうか自信
はない。ほぼ、あっているとは思うが...

0 件のコメント:

コメントを投稿