• ベストアンサー

Format 関数のバグ?

今、OS:WindowsXP Pro SP2 VB:6.0 SP6 の環境でアプリケーションを作成しています。 上記の環境で、Format関数に関して質問があります。 今、2桁の文字列のコードをゼロ埋め(0 埋め)にして表示させたいと考えております。そこで、以下の関数を利用いたしました。 Format("19", "00") Format("1A", "00") Format("1B", "00") を呼び出し、"19","1A","1B"と返答結果を期待しているのですが、 実際に実行すると、"19","00","1B"と返答されてしまいます。 なぜ、"1A"だけ、"00"と返答されるのでしょうか。 仕様でしょうか?

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.1

>を呼び出し、"19","1A","1B"と返答結果を期待しているのですが、 1A or 1AM=01:00(1:00AM) 1P or 1PM=13:00(1:00PM) と見なされるんでしょう。 0A~12Aは00(0.5日未満) 13A~23A,0P~11Pは01(0.5日以上) となります。 If文かSELECT CACE等で区分するしかないですね。

popurakun
質問者

お礼

そういうことですか。 変だなと思って、一時間くらい悩んでいました。 1:00AMとみなされているんですね。 If文で回避するようにいたします。 ありがとうございました!!

関連するQ&A

  • VB6.0 のformat関数について

    VB6.0(SP5)のformat関数にて、以下のような場合、異なる結果が帰ってきます。 どのような仕様で結果が異なるのでしょうか?  Format("20050101-1", "0") → "20050101-1" と帰ってきます。  Format("20060101-1", "0") → "1528543" と帰ってきます。 分かる方がいらっしゃたら、お願いします。

  • format関数についてです。

    A→0A、B→0B、C→0Cという風にFORMAT関数で変換 したいでです。 format("A","00")の結果は「A」です。 どのような文字列で、変換できるのでしょうか? それともこのような処理は、format関数ではできないのでしょうか? 今は力づくで、"A"なら"0A"、"B"なら"0B"と select文で書いています。

  • Format関数の戻り値

    Format関数で戻り値がおもうようにとれません。 どうしてかわからず困っています。 以下の2パターンの違いがわかりません "0A"はなぜ"00"になってしまうのですか? (VBバージョンは6.0です) format("0D","00") 結果 "0D" format("0A","00") 結果 "00"

  • アクセス iff関数、format関数について

    いつもお世話になっております。 アクセスのフィールドへ関数を埋め込みたいのですが、 関数に誤りがあるため、うまく実行ができておりません。 今回、実行したいことは、 ※数字列の左端に0を埋め込み、5桁にしたい。 ※数値が負の場合、マイナスを含めて、5桁にしたい ※数字列に入る数値は-1000~1000の予定 ※当方、アクセス2003を利用。 ex) 1 →  00001   -3 →  -0003    0 → 00000   156→ 00156 -1000 → -1000 15000 →15000 当方の作成関数は、以下の通りですが、 どこが悪いのかよくわかりません。。ご教示願います。 あるいは、全くの見当違いである場合は正しい関数をご教示頂けないでしょうか。 式1: IIF((format([数字列]<0),([数字列],"0000"),([数字列],"00000")) →数字列が0よりも小さい場合→マイナス + 0-4個 0を付ける。 →それ以外の場合→左端に0-5個0を付ける。 という考えのもと、考えました。

  • format関数で桁指定をしたが、指定通りにならない

    VB6.0 windowsXP 掲題の件ですが、16進数を4桁で表示したいのですが、 たまに指定通りにならないので困っています。 Dim A As Variant A = Format(Hex(&H10D),"0000") 上記のコードを使ってAを表示させると、 010Dになるはずなのですが、10Dになってしまいます。 また、 Dim A As Variant A = Format(Hex(&H3200),"0000") で、表示させると320000となってしまうケースもありました。 また、上記で16進数→10進数→16進数と2度手間になってしまっています。 変数に代入するときに16進数表記だとエラーが出てしまいます。 困っている点は、 (1)上記で16進数→10進数→16進数と2度手間になってしまっているので、一回で表記させる方法を教えて頂きたい。 (2)format関数で桁数を指定しているのに、それ以外の桁が表示されることはあるのか?直す方法は? 以上の2点です。よろしくお願いいたします。

  • エクセルの関数で桁を揃えたい

    エクセルで       A            B 1  12345  200000012345 2  212345  200000212345 3 1234567  200001234567 上のように A列の文字列を B列のように 頭を20にして 以下0を入れて10桁に 合計12桁にしたいのですが  関数でできるでしょうか? お願いいたします

  • MAX関数

    A,C,E,G,I,K,M列に名前、B,D,F,H,J,L,列に2桁から3桁の数字が約300名分入力されているシート内の最大数値と最低数値を取り出す関数ご教示お願いします。AとB列、CとD列・・・2列だけならMAX関数とMATCH関数で取り出すことは出来たのですが、複数の列で全体から取り出すことが出来ません。よろしくお願いします。

  • エクセルの関数について

    エクセルのA列とB列にはランダムな10桁の数値が入力されています。 A列の数値がB列にも有る場合、C列に“OK”と表示させたいのですが、C列にどのような関数を入れたら良いのか分かりません。どなたかご存知の方おしえて下さい。

  • エクセルの検索・関数

    お分かりの方、教えて下さい!! エクセルにて、 A列に13桁の数字がランダムにあり、 C列にも13桁の数字がランダムにあり、 E列には1桁~3桁の数字がランダムにあります。 B列に同じ行のA列の13桁と一致するC列の13桁を見つけ、 そのC列のと同じ行のE列の数字を入れたいのです。 上記の内容が出来る関数を教えて下さい。 分かりにくくてすみませんが、よろしくお願いいたします。

  • ExcelのMID,COLUMN関数について

    ExcelのMID,COLUMN関数について http://okwave.jp/qa/q6113613.html 以前こういう質問をして、 No.5の回答で教えてもらった関数を埋め込んでアンケートの入力をしています。 B列に数字50桁を入れて、C列に関数を入れてという感じです。 B2に数字50桁を入力してEnterを押すとC2からAY2までに1桁ずつ振り分けられるのですが B2の数字50桁はそのままです。 これは関数として、これはしょうがないそうなので 納得はしたのですが B2は実は問1を入力するセルだったんです。 なので、全部アンケートを入力し終わった後、B2を1桁に戻そうと思ったのですが そうすると、関数が効いているのでB2を1桁にするとC2からAY2まで入力されていた数字が消えてしまいます。 これはどうすればいいのでしょうか? 最終的なアンケートの入力データとして、50桁入っているセルは必要ありません(邪魔になってしまいます) なので、今B列の左隣に1列追加して これまでB列だったものがC列になったのですが この場合、B列に51桁を入れて(1桁目はブランクとして、2桁目からアンケートのデータ50桁を入れる) C列に関数を入れて、(C列が問1の回答を入力する) そうすると、1桁目をブランクにすることにより、 50桁入力したB列を直すことなくアンケートデータが完成します。 この場合入力し終わった後50桁入力しているB列を消しても C列以降の数字が消えることはありませんか? それとも消えてしまうのでしょうか? どうすればいいでしょうか?

専門家に質問してみよう