質問: excelでコロン「:」を使用した時にシリアル値にならないようにしたい excel2007(他ヴァージョンは分かりません)にて、コロンを使用した時刻を入力すると、勝手に書式が変わって、表示は時刻のままですが、値がシリアル値になってしまいます。これが機能しないようにしたいです。 元々数式が入力されているセルで、必要に応じて時刻を手入力しているので、書式を文字列にするのは不可です(手入力後はマクロで元の数式を入れてます)。 要は通常は数式を使用し、コロン「:」を使用して入力した時は文字列としたいのです。 コロンを使用しないで、例えば15:00を1500のように入力すれば、目的は果たせるのですが、他の(excelの知識がない)作業者が使用するファイルのためどちらの入力方法でも稼働するようにしたいのです。同じ理由でシングルクォートの使用も不可です。 条件付き書式やtext関数を使用しても、シリアルへの変換後に機能するためかうまくいきませんでした。
回答: 結局、 1.15:00であろうが1500であろうが、文字として入って欲しい 2.後で、vbaで「式」を入れるので、書式は「文字列」では困る(標準にする) という事ですよね で、vbaを考えてみました 15:00と入れた時点で、excelが勝手に書式を「時間」にするのはどうしようもないので、vbaで強制的に戻します 書き込むセルを仮に「a2」としています changeイベントに記述します --------------------------------- private sub worksheet_change(byval target as range) if target.address = "$a$2" and cells(2, "a") < 1 then application.enableevents = false mt = hour(cells(2, "a")) mm = minute(cells(2, "a")) range("a2").numberformatlocal = "@" cells(2, "a") = mt & mm range("a2").numberformatlocal = "g/標準" application.enableevents = true end if end sub --------------------------- 2行め後半で、書式が「時間」に変わったかどうかを判定してますが、ちょっと怪しいです シリアル値が24:00までは1以下であることを利用していますが、24:00以上の値を入れるとミスります あと、書式は、一旦「文字列」にして書込んでから「標準」に変えてます これによって、「1500」が文字として書き込める様です