※ ChatGPTを利用し、要約された質問です(原文:oooBasic 日付の範囲比較ができない)
OpenOffice.org Basicで日付の範囲比較ができない
このQ&Aのポイント
OpenOffice.org Basicでコーディングしている際に、日付の範囲比較ができない問題が発生しました。
具体的には、ダイアログで指定した日付とCSVファイルの日付を比較して、範囲内かどうか判定したいが、エラーが発生しています。
データのフォーマットの違いやCDate関数の挙動による問題の可能性があります。解決策をご教示いただけないでしょうか。
OpenOffice.org Basic でコーディングしているのですが、日付の範囲の比較ができません。
ダイアログで日付のエンドとスタートを指定していて、読み込んだCSVファイルのあるセルがその日付の範囲内かを調べたいです。
-----
oDateStart = oDialog.getControl("DateStart").Text
oDateEnd = oDialog.getControl("DateEnd").Text
~
oFileSales(1).Value = "44,34,64,1"
'oFileSales(1).Value="44,34,64,1,1/5/1/2/1/1/1/2/1/2/1/1/1/1/1/1/1/1/1/1/1/1/5/5/1/1/1/2" ---(a)
~
oDate = oSheetSales.getCellByPosition(ColSalesDate, i-1).String
'oDate = oSheetSales.getCellByPosition(ColSalesDate, i-1).Value ---(b)
~
If oDateStart <= CDate(oDate) and CDate(oDate) <= oDateEnd Then ---(c)ここがエラーになります。
処理
End if
-----
oDateStart と oDateEnd は、ダイアログで指定した日付のテキスト(形式:YYYY/MM/DD(String))で、oDate は、読み込んだcsvファイルの日付(形式:MM月DD日(String))です。
『OpenOffleへの道』には CDate と DateValue は、"年""月""日"が入ったものは×とあります。
oDateのセルは、OpenOfficeで普通に開くと、"2012/12/12"のように表示されるのですが、マクロの中で開くと、なぜか"12月12日"となってしまいます。
(a)のように、読み込む列の書式を指定しても同じでした。
逆に、(b) のように oDateをシリアル値で取得して、シリアル値で比較できればと色々トライしましたが、oDateStart と oDateEnd のシリアル値への変換がわからず断念。
何かよい方法はないか、お知恵をお貸し頂けないでしょうか。
よろしくおねがいします。
お礼
ありがとうございます。 画像まで付けて頂きわかりやすいです。 結論、解決しました。 正確にいうと、 oDateStart と oDateEnd を CDate() しただけでは範囲比較できなかったのですが、 osamuyさんに習って、全てString型でなくDate型で定義し、 oDate = CDate(oSheetSales.getCellByPosition(ColSalesDate, i-1).Value) としたら、できました。 ここ数日、これで悩んでいたので、助かりました。 ほんとうにありがとうございました。