09/04/07 15:27:47
ソース見てRangeがオブジェクトかプロパティかわからない俺参上
Range("A1") = "abc"
たとえばこれはオブジェクトでデフォルトプロパティのValueが省略、でいいの?
610:デフォルトの名無しさん
09/04/07 15:52:48
Rangeはオブジェクトを返すプロパティだよ
611:デフォルトの名無しさん
09/04/07 17:35:05
EXCEL2003です
セルの書式設定の[表示形式]定義が[文字列]かどうか
判断する方法を教えて下さい。
やりたい事は「日付を表すデータ」([表示形式]が[日付]とは限らない)が
元々どのように入力されているか判断したいのです。
具体的には、
文字列で「3/1」、「2009/3」「2009/3/1」と入力されて
いるのか、日付データで「2009/3」等と入力されているのかの
判断方法は、どうすれば良いかということです。
よろしくお願い致します。
612:デフォルトの名無しさん
09/04/07 17:40:30
>>611
NumberFormatLocal
613:デフォルトの名無しさん
09/04/07 22:14:32
文字列で"0.1"とか"1"をDoubleに変換したいです。
且つ、"abc"のようなものなら失敗して欲しいです。
CDbl()でよいと思うのですが、"abc"などを渡した場合どのように失敗を通知してくれるのでしょうか?
例外などですか?このときの例外の補足の仕方を教えていただけますか?
宜しくおねがいします
614:デフォルトの名無しさん
09/04/07 23:24:36
On Error GoTo xxxx
でエラートラップ
Err.Numberでエラーの種類しらべてしかるべき処理
はっきりいってVBAのエラー処理はおまけみたいなもんだ
変換してエラーでる可能性があるとわかってるなら、
変換する前に変換元が数字かどうかぐらい自分でチェックするほうがいいと思うぞ
615:デフォルトの名無しさん
09/04/07 23:34:04
>>614
それは他の言語とどこが違うの?
616:デフォルトの名無しさん
09/04/07 23:41:15
>>614
ありがとうございます。m(_ _)m
アドバイス助かります。自分でエラーチェックすべきか、
オブジェクトの例外スローに期待すべきかも悩んでました。
とりあえず試してみます。
例外が送出され、それを捕らえて上手くメッセージが出せたらそれに越したことはないものですから。。
617:デフォルトの名無しさん
09/04/08 03:42:55
>>615
エラー処理ルーチンにうつった場合の、それ以降の処理が非常にややこしくなるんだ
まあ、詳しくは構造化エラー処理あたりでぐぐってみてくれ
で、613はJava系のプログラマか?
VBAで例外スロー、キャッチとか考えんほうがいいぞw
618:デフォルトの名無しさん
09/04/08 03:50:08
つーか、IsNumericじゃダメなの?
619:デフォルトの名無しさん
09/04/08 06:07:31
IsNumericかregexを使う
620:デフォルトの名無しさん
09/04/08 10:11:12
vbのエラー処理ってこんなかんじだったかな
1:
on error resume next
(処理)
if err.number = xxx then
~
end if
on error goto 0
2:
on error goto eh
(処理)
exit sub/function
eh:
(errで分岐したり処理したりする。resume next で戻ることも出来るが、大体はそのままプロシージャを抜ける。)
621:デフォルトの名無しさん
09/04/08 10:15:33
負の日付を判断する関数ってあります?
もしくは負の日付か判断する方法があったら教えてください
isDate(負の日付)や変数 = 負の日付とかするだけでエラーに飛んでしまって・・・
622:デフォルトの名無しさん
09/04/08 13:07:38
まず、負の日付の定義についておしえてくれ
623:デフォルトの名無しさん
09/04/08 13:45:02
1899/12/29以前ってことか?
俺のとこじゃDate型の変数にCdate("1872/8/13")を入れてMsgBox IsDate(変数)とすりゃTrueだけどな。
直にMsgBox IsDate(-10000)だとFalseだが。
エラーにはならんな。
624:デフォルトの名無しさん
09/04/08 14:07:01
>>622-623
説明不足でもうしわけないです
表示形式が「日付」のセルに、例えば9999999999って値を打つと
####と表示され、マウスカーソルをあてると「負の日付または時間は####と表示されます。」
と出てきまして、そこの値をvbaの方で参照しようとして落ちているという状況です
(日付型のとこには0~2958465以外の数値だと日付シリアル対象外でこうなるようで・・・)
関数があれば~と言いましたが、代入するにしろ引数にするにしろ、
参照した時点で落ちてるので関数があっても意味がないと思い、
結局エラーに行かせた先で判断するようにしました
どうもありがとうございました
625:デフォルトの名無しさん
09/04/08 14:19:05
>>624
Value2プロパティが2958465以下かで判断する方法もあるかもね。
ValueプロパティだとオーバーフローのエラーだがValue2だとオーバーフローしないから。
626:デフォルトの名無しさん
09/04/08 14:59:38
>>625
知らないプロパティだったんで早速調べてみたんですがこれで行けそうです!
>>625氏の言うとおりの方法で範囲外なら無効な日付とメッセージを出すようにしてみました
出来ればエラーに飛ばしたくないと考えていたので助かりました
どうもありがとうございます!
627:611
09/04/08 17:37:10
>612
レスありがとうございます
628:デフォルトの名無しさん
09/04/09 00:08:50
EXCELファイルがどのバージョン(EXCEL97、2000、2003)で
作成されたものか調べる方法を教えてくれ神ども。
629:デフォルトの名無しさん
09/04/09 05:48:16
拡張子は?