Sub ExampleTimeFunction2()
Dim objSheet As Object
Dim objCell As Object
objSheet = ThisComponent.CurrentController.ActiveSheet
'
'TimeSerial 関数
objCell = objSheet.getCellRangeByName("A1")objCell.String = "22:56:23のシリアル値 (1)"
objCell = objSheet.getCellRangeByName("B1")
objCell.Value = TimeSerial(22, 56, 23)
'
'TimeValue 関数
objCell = objSheet.getCellRangeByName("A2")objCell.String = "22:56:23のシリアル値 (2)"
objCell = objSheet.getCellRangeByName("B2")
objCell.Value = DateValue("22:56:23")
End Sub
上記マクロの実行結果は下記の通り :
1. TimeSerial 関数
引数に指定した時、分、秒の時刻のシリアル値を取得する。DateSerial
関数と違い、特定の時刻を基準からの経過時間ではないので、値が
一体何を意味するかは不明。但し、時刻間の時間計算には使用できる、
とヘルプには書いてあるが、個人的には、意味不明な値を使うのには
抵抗がある。
それはさて置き、書式は下記の通りとなる :
TimeSerial(Hour, Minute, Second)
Hour には時間を表す 0 ~ 23 の整数を指定する。
Minute には分を表す 0 ~ 59 の整数を指定する。
Second も同様に、秒を表す 0 ~ 59 の整数を指定する。
この関数の戻り値は、既述の通り、時刻のシリアル値を表す整数を返す。
さて、この TimeSerial 関数について、ヘルプには、例として
「12, -5, 45 は 11, 55, 45 と見なされます」
との記述がある。意味がわからなかったので Excel の TimeSerial 関数の
ヘルプを参照したら、どうやら、
「12 時 5 分前 45 秒の TimeSerial 関数の値は、TimeSerial(11, 55, 45)
と同じこと」
ということを意味することが判明したので、実験してみると、
「アクションは支援されません。無効なプロシージャーの呼び出し」
というエラーメッセージが表示されてしまう (Excel は問題なく動作)。
結局、Calc では、TimeSerial 関数の引数としては上述の通りの値しか指定
できないようである。
2. TimeValue 関数
引数で指定した時刻文字列を日付のシリアル値に変換し戻り値として返す。
書式は下記の通り :
TimeValue(TimeString)
TimeString には HH:MM:SS 形式の、時刻として妥当な文字列を指定する。
この関数の戻り値も、既述の通り、時刻のシリアル値を表す整数を返す。
0 件のコメント:
コメントを投稿