|
▼シンク さん:
>kanabun氏、返信ありがとうございます。
>
>下記の件について、試してみたところ問題があるようです。
>If文の表現に問題があるのかと思いました。
>すべてElseにいっているようです。
>> For i = 1 To UBound(v)
>> If v(i, 1) > 0# And v(i, 1) < 1# Then
そこのIf文は A列のデータが 9:00 や 8:12 など「時刻」データである
かどうかを判定しているところです。
もし 9:00 とかの時刻データであれば、そのセルの Valueは 9:00 で、
そのセルの Value2 は 0.375 です。(Value = 9:00 のセルの Value2 は
0.375 つまりシリアル値 です )
したがって
> If v(i, 1) > 0# And v(i, 1) < 1# Then
の行は 時刻の代入されているセルかどうかを調べているわけです。
時刻は 0:00 〜 24:00 の値をとりますから、Value2としては
0.0 〜 1.0 の範囲になります。それを判定しているわけです。
(ただし、空白セルも、時刻 00:00 のセルも 数値にすると 0 ですから
00:00 というデータがあると、ほんとはちょっとまずいのですが)
で、 9:00 とか 8:12 とかのセルを選択して 以下を実行してDebugして
もらえないですか?
Sub checkDataType()
MsgBox TypeName(ActiveCell.Value)
End Sub
こちらで、9:00 とか 8:12 とかのセルをポイントして ↑を実行しますと
MsgBox には Double と表示されます。
そちらではどうですか?
もし String とか表示されてるとすると、これでは
> If v(i, 1) > 0# And v(i, 1) < 1# Then
の範囲に入りません(文字列です)ので Else のほうに行っちゃって、
If文の判定に失敗してます。
|
|